A backend REST API for tracking personal financial transactions.
Users can record income and expenses, retrieve transactions, update entries, and delete them. The application is built with Spring Boot, uses PostgreSQL for persistence, and is fully containerized using Docker and Docker Compose.
This project demonstrates backend development, API design, database integration, containerization, and deployment to AWS.
- Create financial transactions
- Retrieve all transactions
- Retrieve a transaction by ID
- Update existing transactions
- Delete transactions
- PostgreSQL database persistence
- Fully containerized backend with Docker
- Deployment-ready using Docker Compose
- Deployed on AWS EC2
- Java
- Spring Boot
- Spring Data JPA
- REST APIs
- PostgreSQL
- Docker
- Docker Compose
- AWS EC2
- IntelliJ IDEA
- Postman
- Git / GitHub
Base URL:
/api/transactions
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/transactions |
Get all transactions |
| GET | /api/transactions/{id} |
Get transaction by ID |
| POST | /api/transactions |
Create a new transaction |
| PUT | /api/transactions/{id} |
Update a transaction |
| DELETE | /api/transactions/{id} |
Delete a transaction |
{
"amount": "50.00",
"type": "Expense",
"category": "Food",
"description": "Chipotle",
"date": "2026-01-01"
}finance-tracker
├── src
│ ├── controller
│ ├── model
│ ├── repository
│ └── service
├── Dockerfile
├── docker-compose.yml
├── pom.xml
└── README.md
- Docker
- Docker Compose
docker-compose up --buildThis will:
- Build the Spring Boot application
- Start the PostgreSQL container
- Start the backend API container
The API will be available at:
http://localhost:8080
Example endpoint:
http://localhost:8080/api/transactions
The application can be deployed to AWS using Docker Compose on an EC2 instance.
- Launch an EC2 instance
- Install Docker
- Clone the repository
- Run:
docker-compose up --build -dThe API will then be accessible via:
http://<EC2_PUBLIC_IP>:8080
- Transaction categories and filtering
- Monthly spending summaries
- Authentication and user accounts
- Frontend UI for interacting with the API
- CI/CD pipeline for automatic deployments
- HTTPS with Nginx and a custom domain
Elias Nemiri