A production-grade order management system built with Java, Spring Boot, Kafka, and React.
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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββ βββββββββββββββββββββββ
| 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 |
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
- Java 17+
- Node.js 18+
- Docker & Docker Compose
# 1. Clone the repo
git clone https://github.com/Manasvi1611/cartflow.git
cd cartflow
# 2. Start everything
docker-compose up --buildApp will be running at:
- Frontend β http://localhost:3000
- Backend API β http://localhost:8080
- PostgreSQL β localhost:5432
- Redis β localhost:6379
- Kafka β localhost:9092
Backend:
cd backend
./mvnw spring-boot:runFrontend:
cd frontend
npm install
npm start| 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 |
| 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 |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/products |
Get all products |
GET |
/api/products/{productId} |
Get product details |
PUT |
/api/products/{productId}/stock |
Update stock level |
| 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 |
cd backend
./mvnw testTest coverage target: ~70% across service and controller layers.
(Add screenshots here once UI is built)
| Cart View | Order Tracking | Admin Dashboard |
|---|---|---|
- 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
Manaswi Gautam
- LinkedIn: linkedin.com/in/manaswi-gautam
- GitHub: github.com/Manasvi1611
- Email: manaswi.gautamhs@gmail.com
MIT License β feel free to use and modify.