FinBuddy is a personal financial planning app built with Go and PostgreSQL. It helps individuals and families plan monthly expenses, track daily spending, and allocate savings toward long-term goals.
- ✅ Dashboard overview
- ✅ Monthly planning with customizable categories (needs, wants, savings)
- ✅ Daily expense tracking
- ✅ Saving projection for a year
- ✅ Yearly expense summary
- ✅ "Pocket" system for monthly budget allocations
- ✅ Saving splits into investment options
- ✅ Monthly, yearly, lifetime saving targets (e.g. house, travel, Hajj)
- Backend: Go (Gin framework)
- Database: PostgreSQL (via Docker)
- Dev Environment: WSL2 (Windows Subsystem for Linux) + Docker +
airfor hot reload - ORM / SQL: GORM (with auto-migrations)
- API: RESTful (JSON) with planned OpenAPI/Swagger documentation
- Build: Multi-stage Dockerfile with separate
devandprodstages - Dev Tools:
make,air, Docker Compose,.air.toml
git clone https://github.com/yourusername/finbuddy.git
cd finbuddyCreate a .env file in the root project directory:
DB_HOST=db
DB_PORT=5432
DB_USER=finbuddy_user
DB_PASSWORD=finbuddy_pass
DB_NAME=finbuddy_db
✅ These are used by the API container to connect to the DB container.
make dev-upThis uses
docker-compose.override.ymland mounts your source code withairfor hot reload.
Then open: http://localhost:3000/healthz
make testOr via Docker:
docker build --target test .make dev-downfinbuddy/
├── cmd/
│ └── api/
│ └── main.go # API entry point
├── internal/
│ ├── db/ # DB setup and models
│ ├── router/ # Gin router setup
│ └── handler/ # HTTP handlers
├── docker-compose.yml
├── docker-compose.override.yml
├── Dockerfile
├── .env
├── .air.toml
├── go.mod
├── go.sum
├── Makefile
└── README.md
See docs/schedule.md (coming soon) for daily breakdowns and progress logs.
Built by @idilhaq to improve Go backend and product development skills.
MIT License