A modern, full-stack budget tracking application built with Angular (PWA), Node.js/Express, PostgreSQL, and Docker.
- 📊 Dashboard - Overview with income/expense charts and statistics
- 💰 Transaction Management - Track income and expenses with categories
- 📁 Category System - Custom categories with colors and icons
- 📱 PWA Support - Install on mobile, works offline
- 🔐 Authentication - Secure JWT-based auth
- 🎨 Modern Design - Glassmorphism, dark theme, smooth animations
- 📦 Docker Swarm Deployment Guide - Complete guide for deploying on a Docker Swarm cluster on DigitalOcean
- Docker & Docker Compose
- Node.js 20+ (for local development)
# Clone and navigate to the project
cd budget-tracker-angular
# Start all services
docker compose up -d
# View logs
docker compose logs -fAccess the application:
- Frontend: http://localhost:4200
- Backend API: http://localhost:3000
- pgAdmin: http://localhost:5050
pgAdmin Login:
- Email: admin@budget.com
- Password: admin123
Connect to PostgreSQL in pgAdmin:
- Host: postgres
- Port: 5432
- Database: budget_tracker
- Username: budget_user
- Password: budget_password
# Backend
cd backend
npm install
npm run dev
# Frontend (new terminal)
cd frontend
npm install
npm start- Open http://localhost:4200 in Chrome
- Click the install icon in the address bar
- Or use "Add to Home Screen" on mobile
| Component | Technology |
|---|---|
| Frontend | Angular 17, SCSS, ng2-charts |
| Backend | Node.js, Express, TypeORM |
| Database | PostgreSQL 15 |
| Auth | JWT (JSON Web Tokens) |
| Container | Docker, Docker Compose |
| Web Server | Nginx |
budget-tracker-angular/
├── backend/
│ ├── src/
│ │ ├── controllers/ # API controllers
│ │ ├── entities/ # TypeORM entities
│ │ ├── middleware/ # Auth middleware
│ │ ├── routes/ # API routes
│ │ └── index.ts # Entry point
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── app/
│ │ │ ├── pages/ # Page components
│ │ │ ├── services/ # API services
│ │ │ └── models/ # TypeScript interfaces
│ │ └── styles.scss # Global styles
│ ├── nginx.conf
│ └── Dockerfile
├── docker-compose.yml
└── .env
| Variable | Description | Default |
|---|---|---|
POSTGRES_USER |
Database username | budget_user |
POSTGRES_PASSWORD |
Database password | budget_password |
POSTGRES_DB |
Database name | budget_tracker |
PGADMIN_EMAIL |
pgAdmin email | admin@budget.com |
PGADMIN_PASSWORD |
pgAdmin password | admin123 |
JWT_SECRET |
JWT signing secret | (change in prod!) |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
Login |
| GET | /api/auth/profile |
Get user profile |
| GET | /api/transactions |
List transactions |
| POST | /api/transactions |
Create transaction |
| PUT | /api/transactions/:id |
Update transaction |
| DELETE | /api/transactions/:id |
Delete transaction |
| GET | /api/categories |
List categories |
| POST | /api/categories |
Create category |
| GET | /api/dashboard/stats |
Get dashboard stats |