Skip to content

Latest commit

Β 

History

72 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MoneyTracker - Personal Finance Management

A personal finance management application for tracking wallets, transactions, and categories.

🚦 Quick Start

Docker (development)

# Dev stack (auto-includes docker-compose.override.yml)
docker compose up -d --build

Docker (production-like)

# Base compose only (prod-like)
docker compose -f docker-compose.yml up -d --build

Local backend + Docker Postgres

# Start Postgres only (option A)
docker compose up -d --build postgres

# Start Postgres only (option B, use 5433 to avoid conflicts)
docker run --name moneytracker-db \
  -e POSTGRES_DB=moneytracker \
  -e POSTGRES_USER=moneytracker \
  -e POSTGRES_PASSWORD=localdev123 \
  -p 5433:5432 \
  -d postgres:16-alpine

# Run backend (CLI)
cd backend
./mvnw spring-boot:run

If you use the 5433 mapping above, set:

SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5433/moneytracker
SPRING_DATASOURCE_USERNAME=moneytracker
SPRING_DATASOURCE_PASSWORD=localdev123

You can also run the backend from IntelliJ using the Spring Boot run configuration.

Local frontend

cd web
npm install
npm run dev

See web/.env.example for API mode switches (mock/api/hybrid).

🎯 Project Overview

MoneyTracker is a modern full-stack web app designed to help users track finances with a clear dashboard, wallet categories, and transaction history.

πŸš€ Current Phase: MVP (Budgeting Core)

Features

Transaction Management

  • Record income and expenses
  • Track transactions per wallet
  • Date filtering and balance summaries

Categories & Organization

  • System categories (income/expense)
  • Custom categories
  • Category-based breakdowns

Wallets

  • Wallet groups by category
  • Favorites and ordering
  • Category-specific wallet views

Dashboard

  • Summary metrics
  • Net worth history
  • Recent activity

πŸ› οΈ Tech Stack

Backend

  • Framework: Java 25 + Spring Boot 4.0.1
  • Database: PostgreSQL
  • ORM: Spring Data JPA / Hibernate
  • Security: Spring Security + JWT
  • Migrations: Flyway
  • Build Tool: Maven

Frontend

  • Framework: React 19 with TypeScript
  • State Management: Redux Toolkit
  • UI Components: MUI 7
  • Router: React Router 7
  • HTTP Client: Axios
  • Build Tool: Vite (rolldown-vite)

DevOps & Tools

  • Containerization: Docker & Docker Compose
  • Testing: JUnit 5, Mockito, React Testing Library

πŸ“ Project Structure

MoneyTracker/
β”œβ”€β”€ backend/                    # Spring Boot application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”‚   β”œβ”€β”€ java/
β”‚   β”‚   β”‚   β”‚   └── com/moneytracker/
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ config/         # Configuration classes
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ controller/     # REST controllers
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ dto/            # Data Transfer Objects
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ entity/         # JPA entities
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ exception/      # Custom exceptions
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ mapper/         # Entity-DTO mappers
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ repository/     # Data repositories
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ security/       # Security configuration
β”‚   β”‚   β”‚   β”‚       └── service/        # Business logic
β”‚   β”‚   β”‚   └── resources/
β”‚   β”‚   β”‚       β”œβ”€β”€ db/migration/       # Flyway migrations
β”‚   β”‚   β”‚       └── application.yml
β”‚   β”‚   └── test/
β”‚   └── pom.xml
β”œβ”€β”€ web/                        # React application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/         # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ features/           # Feature-based modules
β”‚   β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ pages/              # Page components
β”‚   β”‚   β”œβ”€β”€ api/                # API services
β”‚   β”‚   β”œβ”€β”€ store/              # Redux store configuration
β”‚   β”‚   β”œβ”€β”€ types/              # TypeScript type definitions
β”‚   β”‚   └── utils/              # Utility functions
β”‚   β”œβ”€β”€ package.json
β”‚   β”‚   └── vite.config.ts
β”œβ”€β”€ Documents/                  # Project documentation
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ docker-compose.override.yml
└── README.md

πŸ“Š API Endpoints (MVP)

Base paths below are without a global /api prefix.

Authentication

Method Endpoint Description
POST /auth/register User registration
POST /auth/login User login
POST /auth/refresh Refresh access token
POST /auth/logout Logout
GET /auth/me Current user (token)

Users

Method Endpoint Description
GET /users/me Current user profile
PUT /users/me Update current user

Dashboard

Method Endpoint Description
GET /dashboard Dashboard summary
GET /dashboard/net-worth-history Net worth history by period

Wallets

Method Endpoint Description
GET /wallets List wallets
GET /wallets/favorites Favorite wallets
GET /wallets/{walletId} Wallet by ID
POST /wallets Create wallet
PUT /wallets/{walletId} Update wallet
DELETE /wallets/{walletId} Delete wallet

Transactions

Method Endpoint Description
GET /transactions List all transactions
POST /transactions Create transaction
DELETE /transactions/{transactionId} Delete transaction
GET /wallets/{walletId}/transactions Wallet transactions
GET /wallets/{walletId}/transactions/range Wallet transactions by date range
GET /wallets/{walletId}/transactions/balance Wallet balance

Categories

Method Endpoint Description
GET /categories List all categories
GET /categories/{categoryId} Category by ID
GET /categories/income Income categories
GET /categories/expense Expense categories
GET /categories/system System categories
POST /categories Create category
PUT /categories/{categoryId} Update category
DELETE /categories/{categoryId} Delete category

πŸ§ͺ Running Tests

Backend

cd backend
./mvnw test

Frontend

cd web
npm run test

πŸ“ License

This project is licensed under the MIT License.

πŸ‘€ Author

MoneyTracker Team

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages