Production-First, Not Tutorial-First
Most starter kits teach patterns. FullStackHero ships them. This is an opinionated, battle-tested foundation for building multi-tenant SaaS and enterprise APIs on .NET 10—wired, tested, and ready for production from day one.Ship Faster
Get Identity, Multitenancy, Auditing, caching, mailing, jobs, storage, health checks, and OpenTelemetry out of the box
Modular by Design
Drop
Modules.Identity, Modules.Multitenancy, Modules.Auditing into any API and let the module loader wire endpointsCloud-Ready
Aspire AppHost spins up Postgres + Redis + API with OTLP tracing enabled in seconds
Multi-Tenant from Day One
Finbuckle-powered tenancy across Identity and your module DbContexts with helpers to migrate and seed tenant databases
The FullStackHero Difference
1. Modular Monolith Architecture
Not microservices. Not a traditional layered architecture. A modular monolith is a single deployment unit with multiple bounded contexts that communicate via contracts.
src/.claude/rules/architecture.md:12-22:
- Start simple, scale when needed: Deploy as a monolith in early stages, extract to microservices only when traffic/team size demands it
- Shared transaction boundaries: Multi-entity operations without distributed transactions
- Easier debugging: Single process, single codebase, full stack traces
- Lower operational complexity: No service mesh, no distributed tracing setup required (though OpenTelemetry is ready when you need it)
2. Vertical Slice Architecture
Every feature is a complete, self-contained slice. No more hunting through layers. Fromsrc/Modules/Identity/Modules.Identity/Features/v1/Tokens/TokenGeneration/:
- High cohesion: All code for one feature lives together
- Low coupling: Features don’t depend on each other
- Easy onboarding: New developers find everything in one folder
- Refactoring confidence: Change one feature without breaking others
3. Production-Grade Building Blocks
Fromsrc/BuildingBlocks/Web/Extensions.cs:29-87, the platform wires:
Structured Logging
Serilog with OpenTelemetry sink, correlation IDs, machine name, thread ID enrichmentFrom
src/Playground/Playground.Api/appsettings.json:35OpenTelemetry
Tracing, metrics, and logs with OTLP export to Aspire dashboard or your observability backendFrom
src/Playground/Playground.Api/appsettings.json:2-9Authentication & Authorization
ASP.NET Identity with JWT issuance/refresh, roles, permissions, rate-limited auth endpointsFrom
src/Modules/Identity/Modules.Identity/Features/v1/Tokens/TokenGeneration/GenerateTokenCommandHandler.cs:60-74:Distributed Caching
Redis-backed cache with memory fallbackFrom
src/Playground/Playground.Api/appsettings.json:74-76Background Jobs
Hangfire with PostgreSQL persistenceFrom
src/Playground/Playground.Api/appsettings.json:77-814. Multi-Tenancy Out of the Box
Fromsrc/.claude/rules/architecture.md:94-113:
- HTTP header:
tenant(e.g.,tenant: acme-corp) - JWT claim:
tenant - Host/route strategy (optional)
5. Real-World Patterns
- CQRS with Mediator
- FluentValidation
- Security Auditing
- Domain Events
From
src/Modules/Identity/Modules.Identity/Features/v1/Users/SearchUsers/SearchUsersEndpoint.cs:17-18:Uses Mediator library (not MediatR). Commands/queries return
ValueTask<T> instead of Task<T> for better performance.Comparing Alternatives
vs. Clean Architecture / Onion Architecture
vs. Clean Architecture / Onion Architecture
Clean Architecture:
- Horizontal layers (Domain, Application, Infrastructure, Presentation)
- Features scattered across layers
- Shared “Services” folder becomes a dumping ground
- Vertical slices (one folder per feature)
- Command/Query/Handler/Validator/Endpoint together
- No shared services layer
vs. Microservices
vs. Microservices
Microservices:
- Multiple deployments, service mesh, distributed tracing setup
- Network calls between services (latency, partial failures)
- Complex local development (Docker Compose with 10+ containers)
- Single deployment (start with
dotnet run) - In-process calls (fast, reliable)
- Simple local dev (Aspire handles Postgres + Redis)
vs. Vertical Slice Architecture (Jimmy Bogard)
vs. Vertical Slice Architecture (Jimmy Bogard)
VSA (Jimmy Bogard):
- Great pattern, requires manual setup
- No multi-tenancy story
- No observability, caching, or job primitives
- VSA + production infrastructure
- Multi-tenancy built-in
- OpenTelemetry, Redis, Hangfire, mailing pre-wired
vs. ABP Framework
vs. ABP Framework
ABP Framework:
- Heavyweight, opinionated on UI (Angular/Blazor/MVC)
- Module system requires ABP CLI
- Commercial modules behind paywall
- Lightweight, API-first (bring your own UI)
- Standard .NET projects, no custom CLI
- All modules open source (MIT license)
Real-World Use Cases
Multi-Tenant SaaS
Each customer gets isolated data via
IMustHaveTenant. Tenant provisioning, migrations, and status management via the Multitenancy module.Example: Project management SaaS where each company is a tenantEnterprise APIs
Identity module provides users, roles, permissions, groups. Auditing module tracks every security event and exception.Example: Internal HR system with compliance requirements
E-Commerce Platforms
Add a Catalog module with vertical slices for products, categories, inventory. Use Jobs for order processing and Mailing for receipts.Example: Multi-vendor marketplace
Workflow Automation
Leverage Hangfire for long-running workflows, domain events for inter-module communication, and auditing for compliance trails.Example: Approval workflows with email notifications
Tech Stack Highlights
Fromsrc/.claude/rules/architecture.md:217-230:
.NET 10
Latest LTS with native AOT, improved performance, and C# 13
EF Core 10
PostgreSQL provider by default, SQL Server ready
Mediator
CQRS with
ICommand<T> and IQuery<T> (not MediatR)FluentValidation
Input validation with clean, testable rules
Hangfire
Background jobs with PostgreSQL persistence
Finbuckle
Multi-tenancy with automatic query filtering
Scalar
Beautiful OpenAPI docs (better than Swagger UI)
Serilog
Structured logging with OpenTelemetry sink
Aspire
Local orchestration for Postgres + Redis + API
Philosophy
Fromsrc/CLAUDE.md:138:
This is a production-ready starter kit. Every pattern is battle-tested. Follow the conventions, and you’ll ship faster.
FullStackHero is maintained by Mukesh Murugan for teams that want to ship faster without sacrificing architecture discipline.
Ready to Start?
Get a working API running in under 5 minutes with the Quickstart guide
