Stepan Demianenko

JPMorgan Chase Forage backend project

Midas Core Transaction Service

Spring Boot microservice processing Kafka transactions for the JPMorgan Chase Forage program.

Midas Core is a Spring Boot service built for JPMorgan Chase's Advanced Software Engineering job simulation on Forage. It consumes money-transfer transactions from Kafka, validates them against persisted user balances, applies an incentive returned by an external REST API, persists the result, and serves user balances over HTTP.

RepositoryLive demo coming soon

Screenshots

Midas Core transaction service architecture diagram

Problem

A transaction-processing service needs to reliably validate incoming money transfers, apply business incentives, and keep balances consistent while integrating with messaging and external APIs.

Solution

Midas Core consumes transactions from Kafka, enforces validation rules, applies incentives from a REST API, persists balance changes, and exposes balances via an HTTP endpoint.

Tech Stack

JavaSpring BootKafkaSpring Data JPAREST APIsMaven

Technical Details

The important implementation choices and trade-offs behind the project.

  • Built a TransactionListener Kafka consumer that validates each transaction and updates balances.
  • Processed a transaction only if the sender and recipient exist, the amount is positive, and the balance covers it.
  • On success applied sender -= amount and recipient += amount + incentive, then saved a TransactionRecord.
  • Used JPA entities (UserRecord, TransactionRecord) with Spring Data repositories.
  • Integrated an external incentive API running locally and exposed balances through BalanceController.

Highlights

  • Kafka consumer deserialises and validates money-transfer transactions.
  • Validates sender, recipient, amount, and balance before processing.
  • Calls an external incentive REST API and applies the returned incentive.
  • Persists results with Spring Data JPA entities and repositories.
  • Exposes GET /balance?userId={id} over HTTP.
  • Staged test suites (TaskOne–TaskFive) cover each stage of the simulation.

Outcomes

  • Completed all five stages of the JPMorgan Chase Advanced Software Engineering simulation.
  • Produced clear backend evidence for event-driven processing, validation, and persistence.