Multi-tenant ERP SaaS platform
ERP SaaS Platform
Full-stack multi-tenant ERP—ASP.NET Core 9 Clean Architecture API with React/Vite admin; Core, Admin, CRM, POS, and additional domain modules on SQL Server with GraphQL + REST.

Background & Context
erp (ERP.SaaS.sln) is a full-stack multi-tenant SaaS ERP: ASP.NET Core (net9.0) Clean Architecture API plus a React 18 / TypeScript / Vite admin portal (Konrix/FrostUI-based). Shared SQL Server persistence uses EF Core plus Dapper stored-procedure execution. Auth is custom JWT with refresh tokens; tenancy uses TenantId on entities with TenantMiddleware / ITenantProvider. GraphQL hosts at /graphql; SuperAdmin bootstrap is available via setup API and /setup UI.
Mid-market operators need modular ERP (CRM, finance, inventory, HR, procurement, manufacturing) with shared tenancy and a modern admin shell—without buying disconnected tools. Program.cs registers Core, Admin, Sales/POS, CRM, Finance, Inventory, HRM, Procurement, Manufacturing, Projects, and Reports modules via ModuleServiceCollectionExtensions. CRM is the most mature domain (lead→customer/opportunity→quote→sales order, activities, campaigns, territories, return orders). Several Finance/HRM/Procurement services remain stub-heavy despite DI registration; role permission policies are not fully enforced beyond authenticated JWT claims; Redis is required at API startup; connection strings/JWT secrets live as constants in shared code.
Zallo architecture prompts treat this .NET modular monolith as the source ERP to evolve—batch/serial inventory and manufacturing production orders exist as domain surfaces, but cosmetics-specific formula modules are not a separate SKU in this repo.
The Challenge
Enterprises needed a modular multi-tenant ERP foundation with modern admin UX, CRM/POS depth, and expandable finance/inventory/HR domains—without a risky legacy monolith or premature microservice sprawl. Without a coherent multi-tenant erp saas platform foundation, ERP SaaS Platform stakeholders faced fragmented tools, slow handoffs, and limited visibility—classic failure modes Tekvers designs against.
The Solution
ERP SaaS Platform: Full-stack multi-tenant ERP—ASP.NET Core 9 Clean Architecture API with React/Vite admin; Core, Admin, CRM, POS, and additional domain modules on SQL Server with GraphQL + REST. Enterprise-shaped multi-tenant ERP foundation with a shipping CRM/POS core. Tekvers delivered a maintainable multi-tenant erp saas platform system for ERP SaaS Platform using ASP.NET Core 9, React 18, TypeScript, Vite, with phased rollout, operator workflows, and documentation suited to long-term ownership.
Our Approach
Platform & tenancy first
Super-admin bootstrap, auth login/refresh/logout, tenants/users/roles/permissions, audit/system logs, and tenant resolution from JWT/`X-Tenant-Id` establish the SaaS kernel before deep domain work.
CRM + POS as the mature operating cores
End-to-end CRM pipeline with line items and conversions, plus sales invoices and POS sessions/transactions—validated through REST, partial GraphQL, and `/crm/*` + `/pos/*` UI routes.
Expand modules with DI, harden stubs next
Finance, inventory/SCM (including batch/serial entities), HRM, procurement, manufacturing, projects, and reports are registered and UI-routed; stub services and authorization-policy gaps are treated as incremental delivery work—not marketed as finished plant ERP.
What We Delivered
- ASP.NET Core 9 Clean Architecture solution (`Api` / `Application` / `Domain` / `Infrastructure` / `Shared` / `Tests`)
- React 18 TypeScript Vite admin portal with Redux Toolkit / Redux-Saga module routes
- Multi-tenant shared-DB model with TenantMiddleware and setup SuperAdmin flow
- JWT auth with refresh tokens; roles/permissions seeding APIs
- CRM module: customers, contacts, leads, opportunities, quotes, sales orders, activities, campaigns, territories, return orders
- Sales/POS: invoices, POS sessions, POS transactions
- Finance, Inventory/SCM, HRM, Procurement, Manufacturing, Projects, Reports module surfaces (REST + UI; stub maturity varies)
- HotChocolate GraphQL host at `/graphql` alongside REST `/api/*`
- EF migrations / EnsureCreated fallback + SQL schema/SP deployment on startup
Outcomes & Impact
- Enterprise-shaped multi-tenant ERP foundation with a shipping CRM/POS core
- Modular boundaries for continued domain delivery on one codebase
- Admin portal covering ERP domains plus explicit template demo routes called out as non-ERP
- Honest maturity model: stubs and permission enforcement remain backlog, not hidden
Tekvers ERP gives operators a scalable SaaS core—new tenants bootstrap without custom forks, CRM/POS run day-to-day sales, and broader finance/inventory/HR modules expand behind the same tenancy and admin shell—without inventing cosmetics-formula features that belong to separate industry product briefs.
Technology Stack
Services Delivered
Related Case Studies
Guides & articles from this niche
Planning a similar platform? Share your scope and we will map architecture, delivery phases, and a realistic timeline.