Digital Money House is a production-grade fintech platform built as a Java 21 / Spring Boot microservices backend. It simulates a real-world digital wallet, letting users register, authenticate, manage their accounts, link payment cards, send money to peers, and review a full activity history — all routed through a single API Gateway and wired together with Spring Cloud service discovery.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Gianluca-X/DigitalMoney/llms.txt
Use this file to discover all available pages before exploring further.
What the Platform Does
Once deployed, Digital Money House provides a complete financial self-service experience:- User registration & profile management — users sign up with personal details (name, email, DNI, phone) and can edit their profile at any time.
- JWT authentication with email verification — login returns a signed JWT token. Email address changes are propagated asynchronously via RabbitMQ.
- Digital accounts with CVU & alias — every registered user receives a unique CVU (virtual account number) and a human-readable alias automatically.
- Linked cards — users can associate debit or credit cards to their account and use them to deposit funds.
- Peer-to-peer transfers — send money to any CVU or alias. Transfers use pessimistic locking (
PESSIMISTIC_WRITE) and@Transactionalto guarantee consistency under concurrent load. - Activity history with PDF receipts — every deposit, inbound transfer, and outbound transfer is recorded. Receipts are downloadable as PDFs.
Key Features
JWT Authentication
Stateless JSON Web Token auth with configurable expiration. Email-change events are published to RabbitMQ so all services stay in sync without tight coupling.
Eureka Service Discovery
Every microservice registers with a central Eureka Server. The API Gateway resolves routes dynamically via
lb:// URIs — no hard-coded addresses needed.API Gateway with Centralized Routing
A single entry point on port 8085 routes
/auth/**, /users/**, and /accounts/** to the correct backing service and validates JWT tokens before passing requests downstream.Account Management (CVU & Alias)
The Accounts Service auto-generates a CVU and alias at registration. Users can query balances, update their alias, and view full account details.
Card Linking & Deposits
Users can add, list, and remove linked cards. Depositing from a card credits the account balance and creates a
deposit activity entry.Peer-to-Peer Transfers
Transfers between accounts are protected by pessimistic database locking and wrapped in atomic
@Transactional boundaries, preventing race conditions and balance inconsistencies.Activity History & PDF Receipts
All transactions (
transfer-in, transfer-out, deposit) are stored and queryable. Each activity entry can be exported as a PDF receipt.RabbitMQ Async Messaging
Auth Service publishes
UserEmailChangedEvent messages to the user.exchange topic exchange. User Service consumes from the user.email.changed queue to keep credential stores synchronized.Tech Stack
| Layer | Technologies |
|---|---|
| Language & Runtime | Java 21 |
| Application Framework | Spring Boot, Spring MVC |
| Cloud / Microservices | Spring Cloud (Gateway, Config, Eureka, OpenFeign) |
| Persistence | Spring Data JPA, Hibernate, MySQL |
| Security | Spring Security, JWT (JJWT) |
| Async Messaging | RabbitMQ 3 (AMQP) |
| API Documentation | Swagger / OpenAPI (SpringDoc) |
| Testing | JUnit 5, RestAssured |
| Containerisation | Docker, Docker Compose |
Explore Further
Quickstart
Deploy the full stack with Docker Compose and make your first authenticated API call in under five minutes.
Architecture
Deep-dive into service topology, gateway routing rules, Eureka registration, RabbitMQ messaging, and database isolation.
