A lightweight personal finance manager for tracking income and expenses with Fastify and SQLite. Simple, fast, and self-contained — no external database needed. Includes interactive Swagger UI documentation and typed API client generation.
- Credit and debit transaction recording
- Account balance summary with running totals
- Transaction history with date filtering
- Input validation with Zod schemas
- Interactive Swagger UI at
/docs - Typed API client generation via Orval
| Method | Route | Description |
|---|---|---|
POST |
/transactions |
Create a credit or debit transaction |
GET |
/transactions |
List all transactions |
GET |
/transactions/:id |
Get a specific transaction |
GET |
/summary |
Get account balance summary |
Interactive documentation available at
/docswhen running the server.
npx orval # generates typed API client from OpenAPI spec| Technology | Purpose |
|---|---|
| Node.js | Runtime environment |
| Fastify 4 | HTTP framework |
| TypeScript | Type safety |
| SQLite3 | Embedded database |
| Knex | SQL query builder |
| Zod | Input validation |
| Vitest | Test framework |
| Swagger | API documentation |
- Node.js 18+
- npm
git clone https://github.com/rafaumeu/budgetbuddy.git
cd budgetbuddy
npm install
npm run devdocker compose up -d # Start PostgreSQL + App on port 3333
docker compose down # Stop
docker compose build # RebuildDocker Compose services:
- postgres — PostgreSQL 14 on port 5432
- app — Application on port 3333
MIT