Skip to content

Manasvi1611/CartFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›’ CartFlow β€” High-Performance E-Commerce Order Management Platform

A production-grade order management system built with Java, Spring Boot, Kafka, and React.

Java Spring Boot Kafka React Redis PostgreSQL Docker


πŸ“Œ What is CartFlow?

CartFlow is a full stack e-commerce order management platform that handles the complete order lifecycle β€” from cart management to real-time order tracking. Built with a distributed, event-driven architecture using Apache Kafka for async processing and Redis for high-performance caching.

Key capabilities:

  • πŸ›’ Cart Management β€” add, remove, update quantities with Redis-backed session storage
  • πŸ’³ Checkout Processing β€” order placement with inventory validation
  • πŸ“¦ Order Tracking β€” real-time order status updates via Kafka event streaming
  • πŸ”” Event-Driven Notifications β€” async order and inventory events via Kafka
  • πŸ“Š Admin Dashboard β€” React-based order management and inventory overview
  • 🐳 Fully Containerised β€” runs anywhere with Docker Compose

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     React Frontend                       β”‚
β”‚     Cart Β· Checkout Β· Order Tracking Β· Admin Dashboard  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚ REST API (HTTP)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Spring Boot Backend                     β”‚
β”‚                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Cart Serviceβ”‚  β”‚Order Service β”‚  β”‚Inventory Svc  β”‚  β”‚
β”‚  β”‚   (Redis)   β”‚  β”‚  (Postgres)  β”‚  β”‚  (Postgres)   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚         β”‚                β”‚                  β”‚           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                  Apache Kafka                     β”‚  β”‚
β”‚  β”‚     order-placed Β· order-updated Β· inventory      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                        β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   PostgreSQL    β”‚    β”‚       Redis          β”‚
β”‚  Orders + Items β”‚    β”‚  Cart + Sessions     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Layer Technology
Backend Java 17, Spring Boot 3.x
Messaging Apache Kafka 3.x
Caching Redis 7.x
Frontend React 18, Tailwind CSS
Database PostgreSQL 15
Testing JUnit 5, Mockito
DevOps Docker, Docker Compose, Maven

πŸ“ Project Structure

cartflow/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”‚   β”œβ”€β”€ java/com/cartflow/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ controller/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CartController.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderController.java
β”‚   β”‚   β”‚   β”‚   β”‚   └── InventoryController.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ service/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CartService.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderService.java
β”‚   β”‚   β”‚   β”‚   β”‚   └── InventoryService.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ kafka/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderProducer.java
β”‚   β”‚   β”‚   β”‚   β”‚   └── OrderConsumer.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ model/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Cart.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CartItem.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Order.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderItem.java
β”‚   β”‚   β”‚   β”‚   β”‚   └── Product.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ repository/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderRepository.java
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderItemRepository.java
β”‚   β”‚   β”‚   β”‚   β”‚   └── ProductRepository.java
β”‚   β”‚   β”‚   β”‚   └── config/
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ KafkaConfig.java
β”‚   β”‚   β”‚   β”‚       └── RedisConfig.java
β”‚   β”‚   β”‚   └── resources/
β”‚   β”‚   β”‚       └── application.yml
β”‚   β”‚   └── test/
β”‚   β”‚       └── java/com/cartflow/
β”‚   β”‚           └── service/
β”‚   β”‚               └── OrderServiceTest.java
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── pom.xml
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Cart.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Checkout.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ OrderTracking.jsx
β”‚   β”‚   β”‚   └── AdminDashboard.jsx
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── api.js
β”‚   β”‚   └── App.jsx
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── package.json
└── docker-compose.yml

βš™οΈ Getting Started

Prerequisites

  • Java 17+
  • Node.js 18+
  • Docker & Docker Compose

🐳 Run with Docker (Recommended)

# 1. Clone the repo
git clone https://github.com/Manasvi1611/cartflow.git
cd cartflow

# 2. Start everything
docker-compose up --build

App will be running at:


πŸ”§ Run Locally (Without Docker)

Backend:

cd backend
./mvnw spring-boot:run

Frontend:

cd frontend
npm install
npm start

πŸ“‘ API Endpoints

Cart

Method Endpoint Description
GET /api/cart/{sessionId} Get cart contents
POST /api/cart/{sessionId}/items Add item to cart
PUT /api/cart/{sessionId}/items/{productId} Update item quantity
DELETE /api/cart/{sessionId}/items/{productId} Remove item from cart
DELETE /api/cart/{sessionId} Clear cart

Orders

Method Endpoint Description
POST /api/orders Place a new order
GET /api/orders/{orderId} Get order details
GET /api/orders Get all orders (admin)
PUT /api/orders/{orderId}/status Update order status

Inventory

Method Endpoint Description
GET /api/products Get all products
GET /api/products/{productId} Get product details
PUT /api/products/{productId}/stock Update stock level

πŸ”€ Kafka Topics

Topic Producer Consumer Purpose
order-placed OrderService InventoryService Triggers stock deduction
order-updated OrderService NotificationService Status change events
inventory-low InventoryService AdminService Low stock alerts

πŸ§ͺ Running Tests

cd backend
./mvnw test

Test coverage target: ~70% across service and controller layers.


πŸ–₯️ Screenshots

(Add screenshots here once UI is built)

Cart View Order Tracking Admin Dashboard
cart tracking admin

πŸ—ΊοΈ Roadmap

  • Cart management with Redis session storage
  • Order placement and lifecycle management
  • Kafka event-driven order processing
  • Inventory management with low stock alerts
  • React admin dashboard
  • Docker containerisation
  • Payment gateway integration
  • Email notifications via Kafka consumer
  • Order analytics dashboard

πŸ‘€ Author

Manaswi Gautam


πŸ“„ License

MIT License β€” feel free to use and modify.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages