Track your expenses, split the costs, keep the friendships πΈ
- π Monthly dashboard β budget vs. spent per category with color-coded status (green / amber / red)
- π° Expense tracking β log expenses with date, description, category, payment method and currency (ARS / USD / EUR)
- π€ Shared expenses β mark any expense as shared (auto-splits 50/50 automatically)
- ποΈ Categories β create custom categories with emoji icons and monthly budgets
- π³ Payment methods β manage your cards, wallets and cash methods
- π₯ CSV export β download monthly expense reports
- π Dark mode UI β clean, modern interface
Divvy's vision goes beyond personal finance β towards an app where friends, roommates or partners can manage their shared expenses together.
- Multi-user support with authentication
- Shared expense groups (roommates, trips, events)
- Automatic balance calculation between users
- Settle up / payment recording
- Monthly summary notifications
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, Chart.js, CSS Modules |
| Backend | FastAPI (Python 3.12) |
| Database | MySQL 8.0 |
| ORM | SQLAlchemy 2.0 |
| Migrations | Alembic |
| Containerization | Docker, Docker Compose |
| Deployment | Railway |
divvy/
βββ backend/
β βββ main.py β App entry point + startup
β βββ database.py β MySQL connection (SQLAlchemy)
β βββ models.py β Database models
β βββ schemas.py β Pydantic validation schemas
β βββ alembic/ β Database migrations
β β βββ versions/
β β βββ 0001_initial.py
β β βββ 0002_example.py
β βββ routes/
β βββ gastos.py
β βββ categorias.py
β βββ medios.py
βββ docs/
β βββ screenshots/ β App screenshots for README
| βββ index.html
βββ frontend/
| βββ src/
| βββ api/ β API client (axios)
| βββ components/ β Reusable components
| βββ pages/ β Dashboard, Expenses, Categories, Payment Methods
| βββ store.jsx β Global state (React Context)
| βββ utils.js β Helpers (formatting, CSV export)
- Docker Desktop
# 1. Clone the repo
git clone https://github.com/rominacuadra/divvy.git
cd divvy
# 2. Create local environment files
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env.local
# 3. Start all services
docker-compose up --build| URL | Service |
|---|---|
| http://localhost:5173 | Frontend (React) |
| http://localhost:8000/docs | API docs (Swagger) |
| http://localhost:8000/health | Health check |
Windows users: Make sure Docker Desktop is running before executing the command.
# Mac/Linux
ipconfig getifaddr en0
# Windows β look for IPv4 Address
ipconfigOpen on mobile: http://YOUR_LOCAL_IP:5173
# Apply all pending migrations
alembic upgrade head
# Auto-generate migration after model change
alembic revision --autogenerate -m "describe the change"
# Check current revision
alembic current
# Rollback one migration
alembic downgrade -1Deployed on Railway using two services pointing to the same GitHub repo with different root directories.
| Service | Root Directory | Environment Variable |
|---|---|---|
| Backend | backend/ |
DATABASE_URL |
| Frontend | frontend/ |
VITE_API_URL |
- LinkedIn: linkedin.com/in/romina-cuadra
- GitHub: github.com/rominacuadra
- Email: romicuadra@gmail.com
