UnimadePortal
Multi-tenant SaaS portal on ABP Framework 10 and .NET 10, with separate internal and public experiences and a database per tenant.
Architecture Overview
graph TB
A[Request] --> B{Tenant resolver}
B -->|No tenant| C[Host dashboard]
B -->|Tenant| D{Permission check}
D -->|Dashboard.Internal| E[Internal portal]
D -->|Public user| F[Public portal]
C --> G[(Host database)]
E & F --> H[(Tenant database)]
I[DbMigrator] --> G & H
A multi-tenant portal that demonstrates a complete SaaS architecture on the ABP Framework. A single deployment serves a host dashboard for platform operators and, per tenant, two distinct portals: an internal one for staff and a public one for registered end users.
Tenants are isolated at the database level rather than by a discriminator column, so each tenant carries its own connection string and its own migrated schema. Routing between the internal and public experience is driven by ABP permissions, not by separate applications.
Key Features:
- Host dashboard for tenant creation and platform administration
- Database-per-tenant isolation with per-tenant connection strings
- Cookie and query-string tenant resolution for local development
- Internal staff portal gated behind a dedicated permission
- Public portal with self-registration and read-only announcement access
- Dedicated migrator project that creates and seeds every database
- Layered domain-driven solution structure
Tech Stack:
- Framework: ABP Framework 10.0, .NET 10, ASP.NET Core, C#
- Data: Entity Framework Core, SQL Server
- Tooling: ABP CLI, Docker, PowerShell