A shared household budget tracker that lets multiple people log weekly expenses against a budget that resets every week in the household's timezone. Designed as a mobile-first PWA.
- Shared household budget with members and weekly reset
- Fast expense logging with categories and optional notes
- Hidden reverse-expense option in the avatar menu for refunds/adjustments
- Real-time-ish sync via polling
- PWA installable with offline fallback
- Frontend: Astro + React + Tailwind
- Backend: Node.js + Express
- Database: MongoDB (Mongoose)
cd client
npm install
npm run devcd server
npm install
npm run devThe frontend expects an API URL via PUBLIC_API_URL (defaults to http://localhost:3001).
Backend (server/.env):
MONGODB_URIPORT(optional)APP_URL(used for invite links)CORS_ORIGIN(comma-separated)
Frontend (client/.env):
PUBLIC_API_URL
client/src/components/BudgetApp.jsx: main UI and client logicserver/index.js: API routesserver/models/*: Mongoose modelsclient/public/manifest.webmanifest,client/public/sw.js: PWA assets
- Sessions persist until logout.
- Transactions are soft-deleted (
deletedAt). - Weekly reset is computed per household timezone.