Skip to content
OnlyProjects
MCA · Cloud ComputingFor educational purposes only
Code included

Cloud-Native Order & Billing Platform for a Multi-Outlet Laundry Chain (Spring Boot, Docker, CI/CD)

Eight Bengaluru outlets, one platform: containerised Spring Boot microservices with a Jenkins pipeline and monitored rollouts

Mapped to your syllabusVTU MCA 2022 Scheme · 22MCA44 Project Phase-2 · Semester 4

Overview

1 min read

FreshFold Cloud is a cloud-native order and billing platform built for FreshFold Laundries, a fictional but realistic eight-outlet laundry chain in Bengaluru with one central washing unit in Peenya. Today each counter writes paper duplicate challans, prices come off laminated rate cards, and the owner learns about a missed delivery only when a customer calls. A single desktop billing application, shared over the shop LAN, is the chain's only digital record — and its single point of failure.

The platform decomposes the business into four independently deployable Spring Boot microservices — customer-service, order-service, billing-service and notification-service — fronted by a Spring Cloud Gateway. Orders (garment lines, status timelines, express flags) live in MongoDB; customers and GST invoices live in MySQL. Every service is packaged as a Docker image and deployed to a Kubernetes (Minikube) cluster with readiness and liveness probes, ConfigMaps and Secrets. A Jenkins pipeline builds, tests and rolls out each service on every push, and Prometheus + Grafana watch request rates, latency percentiles and error budgets.

The stack is industry-standard rather than syllabus-bound, but it exercises exactly what the VTU MCA 2022 curriculum teaches: Advanced Java/J2EE (22MCA341), Cloud Computing (22MCA332), NoSQL Databases (22MCA335), DBMS (22MCA21) and Python (22MCA31) for the load tests. The result is a rigorous, viva-defensible demonstration of distributed-system design, containerisation and delivery automation on a real Indian retail scenario.

Relevant for
Karnataka
Level
Advanced · 16 weeks · team of 3
Common at
VTU, JNTUH, AKTU
Updated
Nov 2026

Syllabus alignment

VTU · MCA 2022 Scheme

22MCA44 · Project Phase-2 · Semester 4 · 16 credits · CIE 100 + SEE 100

Subjects this project applies
  • Advanced Java / J2EE (22MCA341)
  • Cloud Computing (22MCA332)
  • NoSQL Databases (22MCA335)
  • DBMS (22MCA21)
  • Python (22MCA31)
How it is evaluated

50 : 25 : 25 (report : presentation : Q&A); plagiarism check mandatory

Also fits: JNTUH MCA R22, AKTU MCA 2020-21 (KCA).

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

6 min read

Problem statement

FreshFold Laundries runs eight collection counters and one central washing unit in Bengaluru, handling roughly 400–600 orders a day. Every step — intake, washing, pressing, delivery and payment — is recorded on paper challans, and the nightly total is typed into a single desktop billing application shared over the shop LAN. There is no shared, durable record of an order's journey.

The consequences compound daily: garments go missing between a counter and the central unit with no one accountable; express-delivery promises are missed silently; invoices are reconstructed from tally sheets at month-end, producing GST filing errors and billing disputes; the desktop application is a single point of failure with no tested backup; and the owner has no consolidated view of revenue or pending work across outlets.

There is a need for a cloud-native platform that records every order and status change centrally, automates GST invoicing and customer notifications, survives the failure of any single machine or service, scales for weekend peaks, and is improved through an automated delivery pipeline so that a small team can ship changes safely every week.

Synopsis

Abstract

Laundry chains in Indian metros run on paper and trust. At FreshFold Laundries — eight collection counters across Bengaluru and one central washing unit — every garment received is written into a duplicate challan book, totals are keyed into a desktop billing tool at night, and there is no way to answer "where is my shirt?" without three phone calls. FreshFold Cloud replaces this with a containerised, continuously delivered microservices platform that records every order, prints GST invoices automatically and survives the failure of any single machine.

Introduction

A laundry order is small but trace-heavy: a customer, a walk-in or home pickup, a garment list, a service level, wash and press statuses across two locations, delivery and payment. A monolith can store all of this, but counter load (evenings and weekends), month-end billing and notifications have very different scaling and release rhythms. Microservices, each with its own Docker image and Kubernetes deployment, let each concern scale and ship independently — and give the team genuine practice with gateways, service isolation and observability.

Existing system

  • Paper duplicate challans at every counter; rates memorised from laminated cards.
  • A legacy desktop billing application on one PC, shared over the LAN — a single point of failure.
  • Status enquiries by phone; no consolidated revenue view across the eight outlets.
  • GST invoices reconstructed monthly from tally sheets, causing filing corrections and disputes.
  • Limitations: no audit trail, no tested backups, silent downtime, no data for planning staffing at the central unit.

Proposed system

  • A responsive web UI served behind an API gateway; JWT login with roles ADMIN, OUTLET_MANAGER and COUNTER_STAFF.
  • Orders captured with garment lines, per-line rates and an express flag; the status timeline (Received → In Wash → Pressed → Ready → Delivered) is appended as immutable timestamped events.
  • The billing service computes subtotals, express surcharges and configurable GST slabs, produces per-financial-year invoice numbers and records part or full payments.
  • Polyglot persistence: MongoDB documents for orders and status events (the garment list varies per order); normalised MySQL schemas for customers and invoices with foreign-key integrity.
  • Notification service consumes order events from RabbitMQ and sends ready-for-pickup and receipt messages by email and SMS.
  • A Jenkins pipeline tests, builds and rolls out every service on Minikube; Prometheus and Grafana expose golden signals; Locust load tests verify 200 orders per minute at p95 under 500 ms.

Feasibility study

  • Technical: every component is free and open source. Minikube runs on a 16 GB laptop; the manifests are written to be portable to any managed Kubernetes later.
  • Economic: ₹0 licence cost. A small cloud node for a permanent demo costs under ₹1,500 per month — less than the chain already spends on challan books and SMS bundles.
  • Operational: counter staff already use smartphones; two screens of training are enough. The owner gets his first live, cross-outlet revenue view on day one.

Objectives

  1. 01Decompose the laundry chain's operations into four independently deployable Spring Boot microservices (customer, order, billing, notification) behind a Spring Cloud Gateway.
  2. 02Design polyglot persistence: MongoDB document collections for orders and status events, and a normalised (3NF) MySQL schema for customers and GST invoices.
  3. 03Containerise every service with Docker and deploy to a Kubernetes cluster (Minikube) using Deployments, Services, Ingress, ConfigMaps, Secrets and readiness/liveness probes.
  4. 04Build a Jenkins CI/CD pipeline that compiles, runs unit and containerised integration tests, builds and pushes images, and performs a rolling update on every commit.
  5. 05Instrument all services with Spring Boot Actuator and Micrometer, and build Grafana dashboards for request rate, error rate, p95/p99 latency and JVM health.
  6. 06Load-test the platform with Locust (Python) and demonstrate 200 orders per minute on a single-node cluster with p95 latency under 500 ms.
  7. 07Implement role-based access (ADMIN, OUTLET_MANAGER, COUNTER_STAFF) with JWT authentication and schema validation on every endpoint.

Scope

In scope

  • One chain: eight outlets, one central washing unit, and a role-based web UI for counter staff, outlet managers and the owner.
  • Order lifecycle: intake with garment lines and service level, immutable status timeline (Received → In Wash → Pressed → Ready → Delivered), delivery confirmation with a short code shown to the customer.
  • GST invoicing with configurable per-line rates, express surcharge, part and full payment recording, and monthly per-outlet revenue reports exported as CSV.
  • Customer notifications (email plus an SMS-gateway stub) when an order is ready and on payment receipt.
  • Docker images, Kubernetes manifests, a Jenkins pipeline (build → test → image → deploy), Prometheus/Grafana dashboards and Locust load-test scripts.
  • Seed data for all eight outlets, staff accounts and three months of sample orders.

Out of scope (v1)

  • A customer-facing mobile app (the web UI is responsive instead).
  • Online payment-gateway integration (payments are recorded with a reference number and reconciled manually).
  • Route optimisation for pickup vans and RFID garment tagging.
  • Migration to a managed cloud provider — the manifests are written to make it straightforward, but the project itself runs on Minikube.

Methodology

The project follows the incremental SDLC model, cut into two phases to match the VTU MCA 2022 scheme: 22MCAL35 Project Phase-1 (Semester 3, CIE 100) produces the analysis and design, and 22MCA44 Project Phase-2 (Semester 4, 16 credits, CIE 100 + SEE 100) delivers the implementation, deployment and evaluation. Every increment ends with a working, demonstrable slice of the platform, so feedback from the guide is absorbed before the next increment.

PhaseWeeksActivitiesDeliverable
Phase-1: requirements & survey1–3Study of the challan workflow at two outlets, literature survey on service decomposition and CI/CD, SRSSRS + survey chapter
Phase-1: design4–6Service boundaries, MongoDB/MySQL schemas, OpenAPI contracts, Kubernetes and pipeline designDesign document + architecture
Phase-1 evaluation7–8CIE review, feedback incorporation, Phase-2 planApproved Phase-1 report
Increment 19–10Gateway + customer-service with JWT; Dockerfiles; Compose for local developmentWorking authentication flow
Increment 211–12Order-service (MongoDB), billing-service (MySQL), Minikube manifests, seed dataFull order-to-invoice flow
Increment 313Notification-service, RabbitMQ wiring, Jenkins pipeline, Prometheus/GrafanaAutomated build & deploy
Hardening & testing14–15Unit/integration tests, Locust load tests, failure drills (kill pods, drain node)Test report + dashboards
Phase-2 wrap-up16Final report, plagiarism check, PPT, SEE demo rehearsalFinal submission

Team split (3 members): Member 1 — gateway, customer-service and JWT security; Member 2 — order-service, MongoDB modelling and billing-service; Member 3 — CI/CD pipeline, Kubernetes manifests, observability and load testing. Each member writes the tests for the modules they own, so individual contribution is visible at the viva.

Testing approach: JUnit 5 with Testcontainers (real MongoDB and MySQL containers) for service tests; Postman/Newman collections for API integration; Locust for load; scripted failure drills with recorded observations.

Architecture & tech stack

3 diagrams · 11 technologies · 2 min read

  • Java 17
  • Spring Boot
  • Spring Cloud Gateway
  • MongoDB
  • MySQL
  • Docker
  • Kubernetes (Minikube)
  • Jenkins
  • Prometheus
  • Grafana
  • Python (Locust)

FreshFold Cloud is a microservices architecture with an API gateway, one database per service, and a delivery pipeline that treats the container image as the only artefact that moves between environments.

  1. Edge: the browser app (server-rendered Thymeleaf pages plus a thin vanilla-JS layer for counter screens) speaks HTTPS only to the Spring Cloud Gateway, which validates JWTs, checks roles per route and applies rate limits.
  2. Services: customer-service, order-service, billing-service and notification-service are built and scaled independently. Services call each other synchronously (REST via OpenFeign) for reads and publish status changes asynchronously to RabbitMQ.
  3. Data: order-service owns MongoDB (orders, garment lines, status events); customer-service and billing-service own separate MySQL schemas. No service reads another service's tables — that is what makes this real microservices rather than a distributed monolith.
  4. Platform: everything runs as containers on Minikube. ConfigMaps carry per-environment settings, Secrets carry credentials, and readiness/liveness probes let Kubernetes replace unhealthy pods without human action.
  5. Delivery & observability: Jenkins builds on every push; Prometheus scrapes Actuator endpoints; Grafana plots the golden signals (traffic, errors, latency).
flowchart LR
  U["Counter staff / managers (browser)"] -->|HTTPS| GW["Spring Cloud Gateway"]
  GW --> CS["customer-service"]
  GW --> OS["order-service"]
  GW --> BS["billing-service"]
  CS --> MY1[("MySQL - customers")]
  OS --> MO[("MongoDB - orders")]
  BS --> MY2[("MySQL - invoices")]
  OS -->|status events| MQ[("RabbitMQ")]
  MQ --> NS["notification-service"]
  NS --> CH["SMTP / SMS gateway"]
  PR["Prometheus"] -->|scrapes metrics| GW
flowchart TD
  DEV["git push"] --> JK["Jenkins"]
  JK --> T["JUnit tests with Testcontainers"]
  T --> IMG["docker build and push"]
  IMG --> REG["Container registry"]
  REG --> DEP["kubectl rolling update"]
  DEP --> K8S["Minikube cluster"]
  K8S --> DASH["Prometheus + Grafana dashboards"]
erDiagram
  CUSTOMER ||--o{ ORDER : places
  OUTLET ||--o{ ORDER : books
  ORDER ||--|{ ORDER_LINE : contains
  ORDER ||--o{ ORDER_EVENT : "tracks status"
  ORDER ||--|| INVOICE : "is billed by"
  CUSTOMER {
    string id PK
    string name
    string phone UK
    string email
  }
  ORDER {
    string id PK
    string customerId FK
    string outletId FK
    string status
    bool express
    datetime placedAt
  }
  ORDER_LINE {
    string id PK
    string orderId FK
    string garmentType
    int quantity
    decimal rate
  }
  INVOICE {
    string id PK
    string orderId FK
    decimal subtotal
    decimal gstAmount
    decimal total
    string paymentStatus
  }

Invoice totals are computed as quantity × rate + express surcharge, plus a configurable GST rate per line classification. Invoice numbers reset per financial year in the format FFL/2026-27/000123, and the sequence lives inside the billing service's own MySQL schema so numbering stays gap-free under concurrency.

Modules

7 modules

  1. Module 01

    API Gateway & Security

    Spring Cloud Gateway is the single entry point. It validates JWTs, maps roles to route prefixes (counter screens vs owner reports), applies per-client rate limits, and centralises request logging and CORS. No service is exposed outside the cluster except through the gateway.

  2. Module 02

    Customer Service

    CRUD for customer profiles (name, phone, address), duplicate-phone detection at creation, and a per-customer order-history endpoint that the billing screens use. Owns its MySQL schema exclusively; other services fetch customer data through its REST API.

  3. Module 03

    Order Service

    Captures garment lines with per-line rate, quantity and service level (regular or express), and appends immutable, timestamped status events from Received to Delivered. Orders are MongoDB documents with embedded lines and an events array; a short confirmation code is generated for delivery handover.

  4. Module 04

    Billing & GST Invoicing

    Consumes the completed order, computes subtotal, express surcharge and GST per configurable slab, and stores invoices in MySQL with per-financial-year numbering. Records part and full payments, marks Paid/Partial/Due, and exports monthly per-outlet revenue as CSV.

  5. Module 05

    Notification Service

    Listens to order events on RabbitMQ and sends ready-for-pickup and payment-receipt messages via email and an SMS-gateway stub. Uses a template store for message text and a dead-letter queue so a failed send is retried without blocking the order flow.

  6. Module 06

    CI/CD Pipeline (Jenkins)

    On every push the Jenkinsfile compiles the Maven multi-module project, runs unit and Testcontainers integration tests, builds each service image, pushes versioned tags to the registry and performs a kubectl rolling update on Minikube. Rollback is redeploying the previous image tag — demonstrated live in the viva.

  7. Module 07

    Observability & Load Testing

    Spring Boot Actuator with the Micrometer Prometheus registry exposes metrics from every service; Grafana dashboards plot request rate, error percentage, p95/p99 latency and JVM memory. Locust (Python) scripts simulate steady and weekend-peak profiles, and a failure-drill playbook records pod-kill and node-drain behaviour.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    FreshFold Cloud — Cloud-Native Platform for a Multi-Outlet Laundry Chain

  2. Slide 2

    The Business Today

  3. Slide 3

    Problem Statement

  4. Slide 4

    Existing vs Proposed

  5. Slide 5

    Objectives

  6. Slide 6

    Why Microservices and This Stack

  7. Slide 7

    System Architecture

  8. Slide 8

    Database & API Design

  9. Slide 9

    CI/CD Pipeline

  10. Slide 10

    Observability & Load-Test Results

  11. Slide 11

    Individual Contribution & Testing

  12. Slide 12

    Demo Plan, Limitations & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 15 answered free · 12 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Why microservices for a laundry chain that handles only 600 orders a day? Isn't a monolith simpler?

    Technically a monolith could handle the volume, but the three concerns peak and change at different rates — counter traffic spikes on weekends, billing is month-end heavy, notifications are bursty — and independent deployment lets a small team ship one service without retesting the world. The project is also an honest exercise in the cloud-native concepts the syllabus introduces, with the trade-offs stated openly rather than hidden.

  2. 02Concept

    Why is MongoDB used for orders while invoices are in MySQL?

    An order document varies with the garment list — different lines, quantities and service levels — so a document model avoids sparse relational tables and stores the immutable status-event array naturally. Invoices, in contrast, need strict relational integrity, gap-free financial-year numbering and aggregable decimal amounts, which is exactly what MySQL with foreign keys and transactions provides. Each store fits its access pattern.

  3. 03Concept

    What is the role of the API gateway and what happens if it is down?

    The gateway is the single entry point: it terminates HTTPS, validates JWTs, maps roles to route prefixes, applies rate limits and centralises logging. If it is down the platform is unreachable, so we run two replicas behind a Kubernetes Service; probes restart a dead pod and the second replica serves traffic during the restart window.

+12 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

6 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

6 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

220 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

220 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

287 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

287 words · ~1 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

11 sources

  1. Spring Boot Documentation
  2. Spring Cloud Gateway Reference Documentation
  3. Docker Documentation
  4. Kubernetes Documentation
  5. Jenkins User Documentation
  6. Prometheus Documentation — Overview
  7. MongoDB Database Manual
  8. The Twelve-Factor App
  9. Visvesvaraya Technological University — MCA 2022 Scheme
  10. Sam Newman, Building Microservices, 2nd ed., O'Reilly Media
  11. Kelsey Hightower, Brendan Burns & Joe Beda, Kubernetes: Up and Running, 3rd ed., O'Reilly Media

Cite this bundle

OnlyProjects. (2026). Cloud-Native Order & Billing Platform for a Multi-Outlet Laundry Chain (Spring Boot, Docker, CI/CD): MCA Cloud Computing project bundle [Educational resource]. https://onlyprojects.online/projects/mca-cloud-laundry-microservices-cicd

Future scope

1 min read

  • Managed-cloud migration with a costed worksheet — node pools, storage and egress priced monthly for 1,000 orders/day.
  • KEDA/HPA autoscaling on queue depth and CPU, compared against fixed replicas with load tests.
  • UPI payments with automatic invoice reconciliation and dues reminders.
  • Pickup scheduling and route clustering for home-collection orders.
  • Demand forecasting of weekly garment volumes per outlet so the central unit can plan staffing.
  • Multi-tenant packaging so the platform can be licensed to other laundry franchises.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.