π· Welcome to Day 1 of my Full-Stack Learning Challenge!
Over the next few weeks, Iβll be building SmartKart, a complete E-Commerce system using cutting-edge technologies and principles. This series will not only help me learn but also share back insights with the community π‘
π§ Why SmartKart?
As a backend engineer, I wanted a project that showcases:
- Microservices using .NET 8, Clean Architecture, and DDD
- API Gateway, Service Discovery, and Message Brokering with RabbitMQ
- Caching with Redis
- Full-text search using Elasticsearch
- Secure Auth with JWT, OAuth2, and OpenID Connect
- ORM with EF Core, performance boosts with Dapper
- Future-ready: scalable frontend in React/React Native + Docker CI/CD
ποΈ Architecture Overview
πΉAPI Gateway
Acts as the single entry point, handling routing, authentication, rate limiting, etc.
πΉ Auth Service
Implements IdentityServer/OpenID for user login, registration, and token issuance.
πΉ Product, Order, Cart, and Payment Services
Each built as isolated microservices with their own DB, following Clean Architecture and DDD.
πΉEvent Bus (RabbitMQ)
Enables asynchronous communication between services for tasks like inventory update, order placed, etc.
πΉ Redis
Used for caching product data and session tokens to boost performance.
πΉ Elasticsearch
For blazing-fast search experience in products and orders.
πΉ Service Registry (Consul/equivalent)
Enables service discovery for scalable deployment.
πΉ Database
Each service uses its own DB (PostgreSQL or SQL Server), connected via EF Core, and selectively using Dapper where performance is critical.
πΉ Dockerized Setup
All services will run locally in Docker containers to ensure production-like behavior without cloud dependency.
πΊοΈ Request Flow (Example)
1οΈβ£ A user logs in β Auth Service returns a JWT
2οΈβ£ API Gateway validates JWT and routes request to Product Service
3οΈβ£ Product Service fetches data (from DB or Redis), returns to Gateway
4οΈβ£ User adds product to cart β Cart Service updates DB and emits event to RabbitMQ
5οΈβ£ Order Service consumes the event and updates the order pipeline
6οΈβ£ All updates are searchable via Elasticsearch!
Top comments (0)