56b5c81ec5b4e8901a405a40e6382136be7fb976
- Мобильная навигация: hamburger-меню и drawer вместо фиксированного sidebar - Модальные окна на весь экран при ширине < 480px - Адаптивные заголовки страниц и фильтры (touch-friendly) - Card view для таблицы операций при ширине < 600px - Горизонтальный скролл вкладок настроек - Увеличенные touch-targets (44px) для пагинации и кнопок - Уменьшенная высота графиков на мобильных - Поддержка safe-area-inset для устройств с вырезами - theme-color в index.html Made-with: Cursor
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
# 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.
Description
Languages
TypeScript
84.6%
CSS
15%
HTML
0.4%