Skip to main content

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.

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.

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 @Transactional to 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

LayerTechnologies
Language & RuntimeJava 21
Application FrameworkSpring Boot, Spring MVC
Cloud / MicroservicesSpring Cloud (Gateway, Config, Eureka, OpenFeign)
PersistenceSpring Data JPA, Hibernate, MySQL
SecuritySpring Security, JWT (JJWT)
Async MessagingRabbitMQ 3 (AMQP)
API DocumentationSwagger / OpenAPI (SpringDoc)
TestingJUnit 5, RestAssured
ContainerisationDocker, 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.

Build docs developers (and LLMs) love