Problem
Financial APIs fail in the details: race conditions on balances, weak authorization boundaries, migrations that break rollback.
What I built
An accounts/transactions REST API with validation, pagination and filtering, real database transactions, OpenAPI documentation, and schema migrations. Spring Security scopes authorization to each user’s own data. Integration tests run against real Postgres via Testcontainers, and the whole environment runs reproducibly in Docker.
Why it matters
The correctness work keeps a finance API trustworthy: real transactions, hard authorization boundaries, and integration tests that hit a live Postgres.
Result
A documented, authorization-scoped API backed by transactional integrity, with integration tests that exercise real database behavior via Testcontainers.
Stack
- Java
- Spring Boot
- PostgreSQL
- JUnit
- Testcontainers
- Docker