A modern, scalable e-commerce platform built with microservices architecture using NestJS, React, and Nx monorepo.
Omncart is built as a microservices-based system with the following services:
- Core Monolith - Central service handling products, orders, cart, and inventory management
- Authentication Service - JWT-based authentication and user management
- Payment Service - Payment processing with Stripe and Paystack integration
- Notification Service - Email, SMS, and push notification delivery
- Search Service - Intelligent product search with ML-powered semantic search
- Rule Management UI - React-based interface for managing business rules
- Framework: NestJS
- Language: TypeScript
- Databases: PostgreSQL, MongoDB
- Caching: Redis
- Messaging: Kafka, gRPC
- Queue: BullMQ
- Authentication: JWT, Passport.js
- Framework: React
- Build Tool: Vite
- Styling: Tailwind CSS
- Monorepo: Nx
- Containerization: Docker & Docker Compose
- API Documentation: Swagger/OpenAPI
pnpm installEach service requires its own .env file. Refer to individual service READMEs for specific configuration:
- Core Monolith Environment
- Authentication Service Environment
- Payment Service Environment
- Notification Service Environment
- Search Service Environment
Start the required infrastructure (PostgreSQL, MongoDB, Redis, Kafka):
cd apps/core-monolith
docker compose up -d postgres redis zookeeper kafkaRun all services in development mode:
# Core Monolith
pnpm nx serve core-monolith
# Authentication Service
pnpm nx serve authentication-service
# Payment Service
pnpm nx serve payment-service
# Notification Service
pnpm nx serve notification-service
# Search Service
pnpm nx serve search-service
# Rule Management UI
pnpm nx serve rule-management-ui# Build all services
pnpm nx run-many --target=build --all
# Or build specific service
pnpm nx build core-monolithEach service has its own Docker Compose configuration. To deploy a service:
cd apps/<service-name>
docker compose up -dThe Core Monolith exposes Swagger documentation at:
http://localhost:3333/api
Run tests for all projects:
pnpm nx run-many --target=test --allRun tests for a specific service:
pnpm nx test core-monolithomncart/
βββ apps/
β βββ authentication-service/ # User authentication & authorization
β βββ core-monolith/ # Core business logic
β βββ notification-service/ # Notification delivery
β βββ payment-service/ # Payment processing
β βββ rule-management-ui/ # Business rules management UI
β βββ search-service/ # Product search & indexing
βββ packages/ # Shared libraries
βββ tools/ # Build tools and scripts
Install the Nx Console extension for your IDE:
# View project graph
npx nx graph
# Run affected tests
npx nx affected:test
# Build affected projects
npx nx affected:build
# Lint all projects
pnpm nx run-many --target=lint --all| Service | Port | Protocol |
|---|---|---|
| Core Monolith | 3333 | HTTP |
| Core Monolith gRPC | 50052 | gRPC |
| Authentication Service | 4000 | HTTP |
| Authentication gRPC | 50051 | gRPC |
| Payment Service | 4001 | HTTP |
| Notification Service | 4002 | HTTP |
| Search Service | 4003 | HTTP |
| Rule Management UI | 4200 | HTTP |
- Create a feature branch
- Make your changes
- Run tests:
pnpm nx affected:test - Submit a pull request
This project is private and proprietary.