63d065011b
- Updated timestamps and AST hashes in manifest.json for various backend and frontend files to reflect recent changes. - Added new files related to MCC categories and optional hold reasons in the manifest. - Modified the README in the infra directory to correct the linting tool from 'mypy' to 'ty' for type checking in the backend project.
57 lines
1.9 KiB
Markdown
57 lines
1.9 KiB
Markdown
# Finance Tracker
|
|
|
|
Closed-beta, zero-based personal budgeting for RUB accounts and credit cards.
|
|
The application is a modular monolith with a FastAPI API and Celery worker,
|
|
a React web client, PostgreSQL, Redis, S3-compatible object storage, and SMTP.
|
|
|
|
## Prerequisites
|
|
|
|
- Docker with Compose
|
|
- `uv` for backend development
|
|
- Node.js and Corepack (`corepack enable`) for frontend development
|
|
|
|
## Local stack
|
|
|
|
```bash
|
|
cp infra/.env.example infra/.env
|
|
docker compose --env-file infra/.env -f infra/docker-compose.yml up --build
|
|
```
|
|
|
|
The web application is served at `http://localhost:8080`; Mailpit is available
|
|
at `http://localhost:8025`, and the MinIO console at `http://localhost:9001`.
|
|
Run migrations before the first API start if the compose stack does not do it:
|
|
|
|
```bash
|
|
docker compose --env-file infra/.env -f infra/docker-compose.yml run --rm migrate
|
|
```
|
|
|
|
## Development checks
|
|
|
|
```bash
|
|
uv sync --project backend --all-groups --locked
|
|
uv run --project backend ruff check backend
|
|
uv run --project backend ty check --project backend
|
|
uv run --project backend pytest backend
|
|
|
|
corepack pnpm --dir frontend install --frozen-lockfile
|
|
corepack pnpm --dir frontend lint
|
|
corepack pnpm --dir frontend typecheck
|
|
corepack pnpm --dir frontend test
|
|
corepack pnpm --dir frontend build
|
|
```
|
|
|
|
Tests that use real bank documents are deliberately separate and require
|
|
`PRIVATE_FIXTURES_DIR`. Never put bank originals under a tracked repository
|
|
path. Synthetic parser fixtures are safe for CI.
|
|
|
|
## Production boundary
|
|
|
|
Production services must use Russian-hosted PostgreSQL, Redis, object storage,
|
|
and backups. TLS, a private object bucket, externally managed secrets, legal
|
|
review, and the private parser contract suite are release gates, not defaults
|
|
provided by the local compose stack. Browser-visible `VITE_*` variables must
|
|
never contain secrets.
|
|
|
|
See `CONTEXT.md` for domain terminology and `docs/adr/` for architectural
|
|
decisions.
|