Skip to content

danielfalcaodf/banking-system-java

Repository files navigation

banking-system-java

Portfolio banking platform built with Test-Driven Development (TDD), Turborepo, Angular, Spring Boot, PostgreSQL, Redis and local observability.

Development Philosophy

This project is developed using TDD (Test-Driven Development) throughout the entire stack:

  • Every feature begins with a failing test (Red)
  • Only the minimum code to make the test pass is written (Green)
  • Code is refactored with tests as a safety net (Refactor)

This discipline applies to backend domain logic (JUnit 5), frontend components (Vitest + Angular Testing Utilities), API integration tests (Spring Boot Test + Testcontainers), and end-to-end flows (Playwright).

Workspace Layout

apps/
  web/                  Angular application
services/
  auth-service/         Spring Boot canary service
  accounts-service/     Spring Boot scaffold
  transactions-service/ Spring Boot scaffold
  insights-service/     Spring Boot scaffold
packages/
  contracts/            Shared API contracts
  shared-utils/         Shared workspace utilities
infra/
  compose/              Docker Compose stack
  monitoring/           Prometheus configuration

Getting Started

  1. Install workspace dependencies:
npm install
  1. Start infrastructure:
npm run infra:up
  1. Run the auth service:
cd services/auth-service
JAVA_HOME=/home/daniel/.sdkman/candidates/java/21.0.5-amzn mvn spring-boot:run
  1. Run the Angular app:
cd apps/web
npm run dev

Validation

  • npm run lint
  • npm run typecheck
  • npm run test

Notes

  • The Angular app proxies /api requests to http://localhost:8080.
  • Prometheus runs on http://localhost:9090.
  • Grafana runs on http://localhost:3001.

About

Portfolio banking platform built with Test-Driven Development (TDD), Turborepo, Angular, Spring Boot, PostgreSQL, Redis and local observability.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors