尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Budget tracker
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Offline-first PWA for a two-person household to log expenses in under 5 seconds, one-handed, on mobile — replacing a Google Forms flow. Two devices share one budget via Firestore; spending tracks against user-declared budget periods.
Architecture & decisions live in the ais repo:
c:/local-instance/ais/projects/expense-tracker/(project-spec, scoping, discovery, ADR-0001 Firestore, ADR-0002 Anonymous Auth).
Next.js 14 (static export) · Firestore (offline persistence + sync) · Firebase Anonymous Auth · Tailwind · AWS Amplify hosting · TypeScript strict.
npm install
cp .env.example .env.local # then fill in Firebase config + NEXT_PUBLIC_HOUSEHOLD_ID
npm run dev # http://localhost:3000
Without .env.local the app runs but shows a "set your config" screen — it needs a Firebase project (Firestore + Anonymous Auth enabled) and an unguessable household id.
| Script | Does |
|---|---|
npm run dev | Local dev server |
npm run dev:lan | Dev server exposed on the LAN — for testing on a real phone |
npm run build | Static export to out/ |
npm run serve:out | Serve the built out/ locally (PWA / offline checks) |
npm run lint | next lint |
npm run typecheck | tsc --noEmit |
npm test | Vitest unit tests |
npm run test:watch | Vitest in watch mode |
npm run test:e2e | Playwright (input + offline-sync flow) |
firestore.rules (signed-in access, household-scoped, no enumeration)..env.local; set NEXT_PUBLIC_HOUSEHOLD_ID to a long random value.Food, Bills) seed automatically on first authenticated load.Deleting the Firestore database is permanent — there is no backup or undo. To start fresh:
(default) database in the same project (the client SDK targets (default) only; a named database will silently never connect).firestore.rules — a fresh database does not keep the old rules..env.local changes needed. Categories re-seed on first load; re-add accounts and declare a new period before logging.src/app/report/page.tsx is a stub; charting library still undecided (ais project-spec Gap #5).public/icons/ (see that folder's README).Scaffold per the ais project-spec.md. Not yet wired to a live Firebase project.