# Family Budget Local SPA for family budget tracking: import bank statements, categorize transactions, view analytics. ## Monorepo structure ``` 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.