Production Grade Cloud-Ready .NET 10 Starter Kit (Web API + React Client) with Multitenancy Support, and Clean/Modular Architecture that saves roughly 200+ Deve
Production Grade Cloud-Ready .NET 10 Starter Kit (Web API + React Client) with Multitenancy Support, and Clean/Modular Architecture that saves roughly 200+ Deve
Most starter kits give you a login page and a TODO list. This one gives you the boring, hard parts already done right — multitenancy, auth, billing, auditing, background jobs, real-time, file storage, observability — across a clean Vertical Slice backend and two polished React 19 front-ends, orchestrated locally with one command via .NET Aspire, and deployable to Docker or AWS.
You scaffold with the fsh CLI and get the complete, detached source — every BuildingBlock, Module, and Host project with real project references. No hidden NuGet runtime, nothing to "eject" later. Own it, read it, change it.
dotnet tool install -g FullStackHero.CLI
fsh new MyApp
cd MyApp
dotnet run --project src/Host/MyApp.AppHost # whole stack up: API + 2 React apps + Postgres + Valkey + MinIO
Then open the Aspire dashboard at
https://localhost:15888, the API + Scalar docs athttps://localhost:7030/scalar, the admin app athttp://localhost:5173, and the dashboard app athttp://localhost:5174. Sign in with a seeded demo account (e.g.[email protected]/Password123!).
DbContexts.ProblemDetails.clients/admin (operator console) and clients/dashboard (tenant app): React 19 + Vite 7 + TypeScript, TanStack Query v5, React Router 7, Radix + Tailwind v4 (shadcn-style), real-time via SignalR/SSE./config.json, no rebuild per environment), hand-written typed API client, and Playwright E2E suites.Identity · Multitenancy · Billing · Catalog · Tickets · Chat · Files · Webhooks · Auditing · Notifications — each a runtime project plus a .Contracts project (its only public surface), boundaries enforced by architecture tests.
deploy/docker) and Terraform for AWS (deploy/terraform); API image published to GHCR.fsh CLI + dotnet new template for distribution.1,600+ backend tests (xUnit, Shouldly, NSubstitute, AutoFixture, NetArchTest boundaries, Testcontainers integration) and 200+ front-end E2E tests (Playwright). Path-scoped CI for backend and frontend; warnings-as-errors.
fsh CLI (recommended)dotnet tool install -g FullStackHero.CLI
fsh doctor # verify your environment (SDK, Docker, Aspire, ports)
fsh new MyApp # interactive wizard
The wizard asks what to include (Aspire AppHost, the React apps). Non-interactive:
fsh new MyApp --non-interactive # full stack, Postgres
fsh new MyApp --no-frontend # backend-only
fsh new MyApp --no-aspire --no-frontend # minimal API + migrator
dotnet new templatedotnet new install FullStackHero.NET.StarterKit
dotnet new fsh -n MyApp
git clone https://github.com/fullstackhero/dotnet-starter-kit.git MyApp && cd MyApp
dotnet run --project src/Host/FSH.Starter.AppHost
Prerequisites: .NET 10 SDK · Docker (Postgres/Valkey/MinIO via Aspire) · Node 20+ (for the React apps).
fsh commands: new · doctor · info · update · --version. Full reference → fullstackhero.net/docs/cli.
| Backend | Frontend | ||
|---|---|---|---|
| Runtime | .NET 10 / C# latest | Framework | React 19 + Vite 7 + TS 5 |
| API | Minimal APIs + Mediator (CQRS) | Data | TanStack Query v5 |
| Validation | FluentValidation | Routing | React Router 7 |
| ORM / DB | EF Core 10 / PostgreSQL | UI | Radix + Tailwind v4 (shadcn) |
| Auth | JWT + ASP.NET Identity | Realtime | SignalR · SSE |
| Multitenancy | Finbuckle 10 | Tests | Playwright |
| Cache / Jobs | Valkey · Hangfire | ||
| Storage | S3 / MinIO (presigned) | Infra | |
| Docs | OpenAPI + Scalar | Orchestration | .NET Aspire |
| Observability | Serilog + OpenTelemetry | Deploy | Docker Compose · Terraform |
| Testing | xUnit · Testcontainers · NetArchTest |
| Path | What |
|---|---|
src/BuildingBlocks/ |
Shared framework libraries (Core, Persistence, Web, Caching, Eventing, Storage, Quota…) |
src/Modules/{Name}/ |
Bounded contexts — each with a runtime project + a .Contracts project (its public API) |
src/Host/FSH.Starter.Api |
Composition-root Web API host |
src/Host/FSH.Starter.AppHost |
.NET Aspire orchestrator (Postgres, Valkey, MinIO, migrator, API, both React apps) |
src/Host/FSH.Starter.DbMigrator |
One-shot migrate/seed runner (DB is not migrated at API startup) |
src/Tools/CLI |
The fsh CLI (Spectre.Console) |
clients/admin, clients/dashboard |
The two React apps |
deploy/ |
Docker Compose, Terraform (AWS), Dokploy |
src/Tests/ |
Unit, Architecture (NetArchTest), Integration (Testcontainers) |
Architecture deep-dive → fullstackhero.net/docs/architecture.
Single-host via Docker Compose:
cd deploy/docker
cp .env.example .env # fsh new pre-generates this with strong secrets
docker compose up -d --build
AWS via Terraform (ECS Fargate + RDS + ElastiCache + S3/CloudFront) lives in deploy/terraform.
Guides → Local orchestration · Docker · AWS / Terraform · Database migrations.
dotnet test src/FSH.Starter.slnx # backend: unit + architecture + Testcontainers integration
cd clients/admin && npm run test:e2e # Playwright (operator app)
cd clients/dashboard && npm run test:e2e # Playwright (tenant app)
Integration tests require Docker (Testcontainers spins real Postgres). Architecture tests enforce module boundaries.
Full guides, module references, and architecture decisions live at fullstackhero.net:
Issues and PRs are welcome — see CONTRIBUTING.md. Branch from and target main; CI runs path-scoped backend + frontend pipelines, and stable releases are cut from v* tags.
MIT — see LICENSE. Built and maintained by Mukesh Murugan and the FullStackHero community, for teams that want to ship fast without sacrificing architectural discipline.
No open issues yet, or sync has not completed.