A full-stack invoice management application with service fee calculation based on currency.
- Backend: Spring Boot 4.0.2, Kotlin, PostgreSQL, Flyway
- Frontend: Angular 21, Angular Material, TypeScript
- Database: PostgreSQL 17.2 (Docker)
- Java 21
- Node.js 25.x
- Maven 3.x
- Docker & Docker Compose
- npm 11.x
cd backend
docker-compose up -dWait for the database to be healthy (check with docker ps).
cd backend
mvn clean package
java -jar target/foreign-exchange-payment-processor-1.0.0.jarBackend runs on: http://localhost:8080
cd frontend/app
npm install
npm startFrontend runs on: http://localhost:4200
- Create invoices with automatic service fee calculation
- EUR invoices: 0% fee
- USD/GBP invoices: 1% fee (minimum 5 units)
- Paginated invoice history
- Real-time form validation
- Responsive Material Design UI
POST /api/invoices- Create invoiceGET /api/invoices?page=0&size=20- List invoices (paginated)
The application uses Flyway migrations to set up the database schema and seed initial data. Migrations run automatically on startup.
- Backend: Port 8080
- Frontend: Port 4200
- Database: Port 5432
Database credentials (development only):
- Database:
invoice_db - User:
local_user - Password:
local_password