Bare Budget is a full-stack personal finance application designed to help users track income, spending, budgets, categories, and transaction history over time.
It consists of:
- A Next.js 15 / React 19 / TypeScript frontend (App Router)
- A Node.js / Express / TypeScript backend API
- PostgreSQL with Prisma ORM for data storage
- Docker for local database setup
- A modular, extensible architecture intended for long-term growth
This project is actively in development. Several features are partially implemented or in scaffold form, but the structure is designed to support a complete finance dashboard.
- Next.js 15 (App Router)
- React 19
- TypeScript
- TailwindCSS
- Server Components and Client Components architecture
- Node.js
- Express
- TypeScript
- Prisma ORM
- (Planned) Zod validation for request schemas
- REST API design
- PostgreSQL via Docker
- Prisma migrations and schema modeling
- Docker and Docker Compose
- ESLint
- Prettier
- Nodemon
- TypeScript path aliases
From the project root:
docker-compose up -dThis launches the local PostgreSQL instance defined in docker-compose.yml.
Navigate to the backend:
cd backend
npm installApply Prisma migrations:
npx prisma migrate devStart the backend API:
npm run devBackend runs on:
http://localhost:4000
From the project root:
npm install
npm run devFrontend runs on:
http://localhost:3000
The application uses the following relational schema for users, accounts, transactions, categories, tags, and notifications:
The backend implements modular routes for key financial entities.
- Create user
- Fetch user details
- Update user
- Delete user
- CRUD operations for financial accounts (checking, savings, credit cards, etc.)
- Create transactions manually or via CSV ingestion
- Query transactions by date range
- Filter by category or account
- Update or re-categorize transactions
- CRUD operations for categories
- Planned: automated categorization using machine learning
- Budget rules per category or account
- Monthly or custom intervals
- Tagging system for additional filtering
- Budget alerts
- Overspending notifications
- General reminders
All backend routes are strongly typed with TypeScript. Schema validation is planned for future updates.
The frontend is built with the Next.js App Router and organizes UI into:
- Dashboard (in progress)
- Categories (in progress)
- Budgets (planned)
- Accounts (planned)
- Transactions table (planned)
- Reusable UI primitives
- Server-side data fetching patterns
- Loading and skeleton states
- TailwindCSS for layout and responsive design
The UI is in early development but is structured for charts, dynamic budgeting features, and more advanced dashboard tools.
- CSV upload and transaction import
- Normalize merchants via an external normalization module
- Full CRUD for accounts, categories, budgets, and transactions
- Monthly or category-based budgeting
- Basic dashboard charts and summaries