Skip to content

Asynchronous retail order processing system built with Spring Boot 4, Angular 21, and JMS/ActiveMQ. Demonstrates event-driven architecture and real-time UI updates.

Notifications You must be signed in to change notification settings

sammycosta/retail-order-processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Retail Order Processing System

A Full-Stack, event-driven retail application designed to demonstrate Asynchronous Architecture and Modern Web Development patterns.

This project simulates a high-throughput e-commerce scenario where order placement is decoupled from inventory processing using message queues, ensuring high availability and data consistency.

Architecture Highlights

  • Asynchronous Processing: Utilizes JMS (ActiveMQ) to decouple the high-speed Order API from the resource-intensive Inventory Worker.

  • Data Integrity: Implements robust transaction management (@Transactional) and precise financial calculations (BigDecimal) to prevent race conditions and rounding errors.

  • Modern Frontend: A reactive SPA built with Angular 17+ (Standalone Components) using Short Polling strategies to reflect real-time background processing.

  • Scalable Design: Structured as a modular monolith, ready to be split into distinct Microservices.

Tech Stack Overview

Domain Technologies
Backend Java 17, Spring Boot 4, Spring Data JPA, H2 Database
Messaging Spring JMS, Apache ActiveMQ (Embedded)
Frontend Angular 21+, TypeScript, RxJS, Bootstrap 5
Patterns DTOs (Records), Repository Pattern, Event-Driven, Reactive Forms

Repository Structure

This repository is organized into two main modules. Click on the links below to view detailed documentation for each part.

Located in /backend/retail-orders-api

  • REST API for Order placement.
  • Internal JMS Consumer for inventory updates.
  • Business logic and Database interactions.

Located in /retail-app

  • The User Interface for customers.
  • Real-time status dashboard.
  • Product catalog and order forms.

Quick Start Guide

To see the application in action, you need to run both the Backend and the Frontend.

  1. Start the Backend: Navigate to backend/retail-orders-api and run the Spring Boot application.

    • Port: 8080
  2. Start the Frontend: Navigate to retail-app, install dependencies (npm install), and run ng serve.

    • Port: 4200
  3. Access: Open http://localhost:4200 to simulate orders.

About

Asynchronous retail order processing system built with Spring Boot 4, Angular 21, and JMS/ActiveMQ. Demonstrates event-driven architecture and real-time UI updates.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published