UESTCO ERP System: DDD-Based Microservice ERP Platform
UESTCO ERP is an in-house, microservice-based enterprise resource planning platform built on .NET 8 and Domain-Driven Design principles. The system is structured around independent bounded contexts: an Identity Service handling users, roles, JWT/refresh tokens and Redis-backed permission cache; and a CRM Service covering customers, contacts, addresses, products, projects, quotations, multi-step quote approval workflow, OpenXML/Puppeteer document generation, lookup translations, global search, customizable column layouts and a full sales analytics suite (dashboard, funnel, timeline, segmentation by sector/product/customer/user). Services are fronted by a YARP-based API Gateway with centralized CORS, security headers and forwarded-header handling. Infrastructure includes PostgreSQL per service, Redis cache, Docker Compose orchestration, a separate Node.js/Express export service (Puppeteer + ExcelJS) for DOCX/PDF/XLSX outputs, Serilog with PostgreSQL log sink and Seq for centralized observability, automatic EF Core migrations and seed flows, rate limiting on auth endpoints, and a self-hosted GitHub Actions staging deployment pipeline.
Lead Backend Developer & System Architect
- DDD & Microservice Architecture – Designed Identity and CRM as separate bounded contexts with their own domain, application, infrastructure and API layers, isolated databases, and clean communication boundaries.
- Identity Service – Implemented users, roles and endpoint-level permissions on top of ASP.NET Core Identity, with JWT access + refresh token flow, hashed refresh tokens, rate-limited login/refresh endpoints and seeded demo data.
- Redis Permission & Lookup Cache – Built a role-permission cache with warmup on startup and a lookup translation cache, all backed by Redis for sub-millisecond authorization checks.
- CRM Domain Modules – Developed customers, contacts, addresses, products, customer-specific discounts, projects, quotations, quote approval workflow with per-user approval limits, document generation (offer/proforma/order) and column visibility configuration.
- Sales Analytics – Implemented sales dashboard, funnel, timeline and segmentation endpoints (by sector, product, customer, user) on top of CRM transactional data.
- Document Export Service – Integrated a separate Node.js/Express export service using OpenXML, Puppeteer and ExcelJS to produce DOCX/PDF/ODT/XLSX outputs from CRM templates.
- API Gateway & Cross-Cutting Concerns – Set up YARP reverse proxy as a single entry point for CRM, Identity, Export and UI; centralized CORS, security headers, forwarded-header handling, localization, validation responses and exception middleware.
- Observability & DevOps – Wired Serilog with PostgreSQL sink and Seq for centralized logs, automated EF Core migrations + seeds per service, Docker Compose for local/staging, and GitHub Actions self-hosted runner pipeline for staging deployments.
- Audit & Identity Admin Tooling – Added a dedicated audit/login-activity logging service with automated log retention, plus a companion React 18 + TypeScript admin UI (TanStack Query, Tailwind) for identity, role and permission management with cross-tab session sync.
- Legacy CRM Data Migration – Wrote a deterministic, idempotent Python CLI (UUID5-keyed) to migrate legacy Dolibarr CRM data — customers, contacts, products — either live via API or through generated idempotent PostgreSQL scripts, with dry-run and resume support.
Features
- DDD-based microservice ERP backend (Identity + CRM bounded contexts)
- Centralized JWT auth with refresh token rotation and Redis-backed role/permission cache
- CRM with customers, projects, quotations, multi-step approval workflow and document generation
- Sales analytics: dashboard, funnel, timeline, segmentation by sector/product/customer/user
- YARP API Gateway with central CORS, security headers and forwarded-header config
- Service-per-database PostgreSQL model with automatic EF Core migrations and seeds
- Dedicated Node.js export service (Puppeteer + OpenXML + ExcelJS) for DOCX/PDF/XLSX
- Centralized logging with Serilog, PostgreSQL log sink and Seq
- Rate-limited authentication endpoints and lookup translation caching
- Dockerized deployment with Docker Compose and GitHub Actions self-hosted runner staging pipeline
- Dedicated audit/login-activity logging service with automated retention
- Companion React + TypeScript admin UI for identity and role management
- Deterministic, resumable Python CLI for legacy Dolibarr CRM data migration
Technologies
- .NET 8 Web API
- C#
- Domain-Driven Design
- Microservices
- PostgreSQL
- Entity Framework Core
- ASP.NET Core Identity
- JWT + Refresh Token
- Redis (StackExchange.Redis)
- YARP Reverse Proxy
- Serilog + Seq
- OpenXML
- Node.js / Express
- Puppeteer
- ExcelJS
- Docker + Docker Compose
- GitHub Actions (self-hosted runner)
- Swagger / OpenAPI
- React 18 + TypeScript + Vite (Identity Admin UI)
- TanStack Query + Tailwind CSS
- Python (legacy data migration tooling)