43 lines
1.4 KiB
Markdown
43 lines
1.4 KiB
Markdown
# Family Budget
|
|
|
|
Local SPA for family budget tracking: import bank statements, categorize transactions, view analytics.
|
|
|
|
## Monorepo structure
|
|
|
|
```text
|
|
family_budget/
|
|
├── backend/ — Node.js API server (Express + TypeScript)
|
|
├── frontend/ — React SPA (Vite + TypeScript)
|
|
├── shared/ — Shared TypeScript types (API contracts, entities)
|
|
├── docs/ — Specifications and backlog
|
|
└── package.json — npm workspaces root
|
|
```
|
|
|
|
## Tech stack
|
|
|
|
| Layer | Choice | Rationale |
|
|
|---------- |------------------------|--------------------------------------------------------|
|
|
| Backend | Express + TypeScript | Simple, well-known, sufficient for a small local app |
|
|
| Frontend | React + Vite + TS | Fast dev experience, modern tooling |
|
|
| Database | PostgreSQL | Deployed on Synology NAS |
|
|
| Migrations | Knex | Lightweight, SQL-close, supports seeds |
|
|
| Shared | Pure TypeScript types | Zero-runtime, imported by both backend and frontend |
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js >= 20
|
|
- PostgreSQL >= 15
|
|
- npm >= 10
|
|
|
|
## Getting started
|
|
|
|
```bash
|
|
# Install all workspace dependencies
|
|
npm install
|
|
|
|
# Build shared types (must be done before backend/frontend)
|
|
npm run build -w shared
|
|
```
|
|
|
|
See `backend/README.md` and `frontend/README.md` for per-package instructions.
|