← all projects

SP-003 ~/the-official-record Systems Built

JPAY, a UPI clone

A faithful simulation of India's UPI instant-payment system: a client and three cooperating Spring Boot servers (Bank, NPCI, UPI) handling registration, PIN-authenticated transfers and per-transaction logging end to end.

Role
Group project, OOAD with Java (PES University, UE20CS352)
Dates
2023
Links

The brief

LPay recreates how UPI actually works, not a toy transfer form. Users register, link a bank account and set a UPI PIN. When money moves, the request goes to a middleman NPCI server, which contacts the bank servers of both parties and delegates the fund transfer: exactly the real UPI delegation chain. UPI IDs are generated on registration, balances render in a Thymeleaf front end, and every transaction is logged in every component it touches.

Architecture

Four Spring Boot services over REST, each with clean MVC layering (entities, Spring Data JPA repositories, services, controllers):

ComponentRole
ClientThymeleaf UI and flow logic: register, log in, transact, check balance
UPI serverThe account layer; orchestrates requests and talks to NPCI
NPCI serverThe middleman; routes transactions and delegates transfers
Bank serverThe balance authority; executes debits and credits

MySQL persists state, WebFlux WebClient carries the inter-service calls, and log4j satisfies the audit requirement.

Why it holds up

  • The topology is the design lesson. Balances live only in the bank servers. The NPCI server is the single routing and audit point. Clients never touch a bank directly. That separation is what the real system does, and modelling it correctly was the point of the course.
  • Design first, code second. The repo ships the full UML set: use-case, activity, class diagrams for all four services, and state diagrams for registration, login and transactions.
UML state diagram for a transaction flowing from the client through the UPI and NPCI servers to the banks
The transaction state diagram from the repo: PIN check, NPCI routing, bank-side debit and credit, and the logged terminal states.

Credit
Course group project. Built on a Spring Boot tutorial skeleton; the UPI domain modelling is the team's work.