Skip to content

Releases: fullstackhero/dotnet-starter-kit

10.0.0

19 Jun 22:35
44412b2

Choose a tag to compare

FullStackHero .NET Starter Kit — v10.0.0 (GA)

Release date: 2026-06-20
Status: General Availability
Packages: FullStackHero.CLI · FullStackHero.NET.StarterKit
Docs: fullstackhero.net · Source: github.com/fullstackhero/dotnet-starter-kit


TL;DR

v10 is the first General Availability release of the FullStackHero .NET Starter Kit on .NET 10, and the first to ship as public NuGet packages: a global fsh CLI and a dotnet new template. It is a production-ready modular monolith (Vertical Slice Architecture, CQRS) backend with two React 19 front-ends, ten first-class business modules, multitenancy, real-time, billing, and one-command local orchestration via .NET Aspire — all delivered as fully-owned, detached source with no runtime framework NuGet dependencies.

Scaffold in two commands:

dotnet tool install -g FullStackHero.CLI
fsh new MyApp

Headlines

  • Now on .NET 10 end-to-end — runtime, EF Core 10, Identity, SignalR, JWT bearer, and the Aspire 13.4 AppHost.
  • NuGet distributionfsh CLI (new / doctor / info / update) plus a dotnet new fsh template. GitHub "Use this template" remains as a discovery funnel.
  • Source-ownership model, enforced in the build — the template scaffolds the complete source tree. There are no per-module runtime packages; dotnet pack of the solution emits only the CLI (and the template pack). You own and can change every BuildingBlock, Module, and Host project.
  • Two polished React 19 appsclients/admin (operator console) and clients/dashboard (tenant app), both Vite 7 + Tailwind v4, with real-time SignalR/SSE.
  • Ten business modules wired and tested out of the box: Identity, Multitenancy, Billing, Catalog, Tickets, Chat, Files, Webhooks, Auditing, Notifications.
  • One-command local stackdotnet run the Aspire AppHost brings up Postgres, Valkey, MinIO, pgAdmin, RedisInsight, the migrator, demo seeder, the API, and both React apps.
  • Deep test coverage — ~1,790 backend tests (unit + NetArchTest architecture + Testcontainers integration) and 214 Playwright E2E tests across the two apps. The build runs warnings-as-errors.

Installation & getting started

Option 1 — the fsh CLI (recommended)

dotnet tool install -g FullStackHero.CLI
fsh doctor          # verify SDK, Docker, Aspire, and free ports
fsh new MyApp       # interactive wizard (or pass flags below)
cd MyApp
dotnet run --project src/Host/MyApp.AppHost

CLI flags for fsh new:

Flag Effect
(none) Full stack: backend + Aspire AppHost + both React apps
--no-frontend Backend + Aspire only (omit clients/)
--no-aspire Omit the Aspire AppHost (run the API/migrator directly)
--no-aspire --no-frontend Minimal API + DbMigrator only
--skip-install Skip npm install for the React apps
--non-interactive Use defaults, no prompts
-o, --output <dir> Output directory (defaults to ./<name>)

Option 2 — the dotnet new template

dotnet new install FullStackHero.NET.StarterKit
dotnet new fsh -n MyApp

Option 3 — clone the repository

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.js 20+ (React apps). No aspire workload is required on .NET 10 — Aspire ships as NuGet packages.

Default URLs & credentials (local dev via Aspire)

Surface URL
Aspire dashboard https://localhost:15888
API + Scalar docs https://localhost:7030/scalar
Admin console http://localhost:5173
Tenant dashboard http://localhost:5174
pgAdmin http://localhost:5050
MinIO console http://localhost:9001
RedisInsight http://localhost:5540

Sign in with a seeded account. Under Aspire the demo seeder runs, so every seeded account (including the root admin) uses the password Password123!:

  • Root operator: admin@root.com / Password123! (tenant root, admin app)
  • Demo tenant admins: admin@acme.com, admin@globex.com / Password123!
  • Demo tenant users: e.g. alice@acme.com / Password123!

In a production, apply-only deployment (no demo seed), the root admin password comes from Seed:DefaultAdminPassword (default 123Pa$$word! in appsettings.Development.json / SEED_ADMIN_PASSWORD in Docker). Rotate it immediately.


Architecture

  • Modular monolith / Vertical Slice Architecture. Each module is a bounded context with a runtime project plus a .Contracts project that is its only public surface. Cross-module references go through .Contracts only — enforced by Architecture.Tests (NetArchTest).
  • CQRS via source-generated Mediator 3.x. Command/query handlers are public sealed, return ValueTask<T>, and propagate CancellationToken throughout.
  • Composition root is FSH.Starter.Api; modules self-register through an IModule contract with assembly-level ordering metadata.
  • Database migrations never run at API startup. A dedicated one-shot DbMigrator host applies migrations and seeds (the API waits for it under Aspire).
  • Tenant isolation is default-ON. BaseDbContext applies the tenant filter automatically; opt out only via IGlobalEntity.

Cross-cutting platform (BuildingBlocks)

The shared framework libraries under src/BuildingBlocks — yours to modify — provide:

  • Persistence — EF Core 10 on PostgreSQL (Npgsql), tenant-isolated DbContext base, soft-delete + audit interceptors, domain events, and the specification pattern.
  • Web — Minimal API conventions, global exception handling with RFC 9457 ProblemDetails, API versioning (Asp.Versioning 10), the SignalR AppHub real-time hub, and security middleware.
  • CachingHybridCache (Microsoft.Extensions.Caching.Hybrid 10.6) backed by Valkey (a BSD-licensed Redis fork), with stampede protection and structured cache keys.
  • Eventing — in-process event bus with Outbox/Inbox scaffolding for idempotent cross-module handlers.
  • Storage — pluggable blob storage (S3 / MinIO via AWS SDK, plus local), presigned uploads, and per-tenant quota enforcement.
  • Security — CORS, security headers, rate limiting, idempotency filters, and request quotas.
  • Resilience — outbound HTTP resilience via Microsoft.Extensions.Http.Resilience (Polly v8 pipelines).
  • JobsHangfire background and recurring jobs with an auth-gated dashboard.
  • ObservabilitySerilog structured logging, OpenTelemetry traces/metrics/logs (OTLP → Aspire dashboard), correlation IDs, and /health/live + /health/ready probes.
  • Docs — built-in OpenAPI with the Scalar reference UI; enums serialize as strings globally.

Modules

Ten bounded contexts ship wired, migrated, seeded, and tested. ~171 HTTP endpoints across the API.

Identity

JWT issuance & refresh on ASP.NET Identity; roles with fine-grained permissions; group-based role assignment (roles conferred via user groups grant permissions, not just JWT role claims); per-user permission caching with mutation-driven invalidation; rate-limited auth endpoints; password policies; user sessions; impersonation; self-registration and email confirmation; forgot/reset password with anti-enumeration responses; and a GET /identity/permissions endpoint that returns the caller's effective permission set for SPA gating.

Multitenancy

Tenant resolution via Finbuckle 10 (JWT claim, with a root-operator header override applied post-authentication); full tenant provisioning lifecycle (Running/Completed/Failed) with per-tenant migrations and seeding; tenant IsActive / ValidUpto enforcement; per-tenant themes; and a tenant billing lifecycle (plan-driven subscriptions and invoices on create + renew, grace-windowed expiry).

Billing

Plan-driven subscriptions and invoices, generated on tenant create and renewal; grace windows on expiry; root-operator cross-tenant administration with explicit tenant scoping on every handler (no cross-tenant leakage).

Catalog

Reference commerce domain — products with multiple images, brands, and a category tree — demonstrating the full slice (contracts → handler → validator → endpoint → EF config → tests) and presigned image uploads.

Tickets

Support ticketing with comments and a status lifecycle (open / update / close / delete), tenant-scoped and permission-gated.

Chat

Real-time chat: named channels and direct messages (1:1 and group); messages with threaded replies, emoji reactions, @mentions (which raise notifications), edit/delete, and read markers; full-text search over Postgres tsvector; typing indicators; and file attachments governed by a channel-scoped file-access policy. Broadcast over SignalR with a Valkey backplane.

Files

Presigned S3 / MinIO uploads with a request → finalize flow; soft-delete + restore (trash); public/private visibility control; pluggable per-owner-type file-access policies (e.g. product images, chat attachments); schema-per-tenant isolation.

Webhooks

Outbound webhook subscriptions with HMAC-signed deliveries, fanout to subscribers, delivery tracking, test-send, and **encrypte...

Read more

2.0.4-rc

23 Nov 03:14

Choose a tag to compare

  • Fix Migration Issues related to .NET 9

2.0.3-rc

23 Nov 02:28

Choose a tag to compare

Upgraded to .NET 9

✍ Changes

2.0.2-rc

23 Aug 08:53

Choose a tag to compare

Announcement

Hi Team,

I am glad to announce that the FSH .NET StarterKit 2.0.2-rc is out!

You can now test the starter kit in 2 ways.

  1. By Running the following commands on your CLI
dotnet new install FullStackHero.NET.StarterKit::2.0.2-rc

dotnet new fsh -o HelloWorld

This would create your version of the StarterKit in the /HelloWorld folder. Please take a look at the Readme for more.

  1. You can also fork the repository to always stay up to date.

✍ What's interesting in this release

  1. I finally have the terraform scripts modularized super cleanly. Both the Blazor and Web API apps are deployable to the AWS Cloud in just a single command. Also, a PostgreSQL RDS instance gets deployed, which is super cool. Refer to https://github.com/fullstackhero/dotnet-starter-kit/blob/main/terraform/README.md for details.
  2. Automated NuGet generation Pipeline
  3. Automated Release Notes Generator
  4. Minor Cleanups
  5. Grafana / Prometheus Fixes

What's Pending?

  1. Documentation: I am just not able to find enough time for this. I will have to get this started soon. This is the only thing that is blocking me from having an official release.
  2. Cross Module Communication
  3. YouTube video: Once the documentation is in place, I would publish an end-to-end explainer video about the Starter Kit.

Need Help

I need help with testing the application/framework in all aspects. There is a lot of scope for improvement, be it performance, code quality, or features. It would be awesome if some of you could test out the application, raise bugs, and some pull requests as well, so it's easier for all of us at the end of the day.

Super Excited about this! Thanks. Do let me know your feedback!

2.0.1-rc

20 Aug 07:13

Choose a tag to compare

✍ Changelog

1.1.0

16 Dec 02:50
60de9b8

Choose a tag to compare

This will be the Final V1 Release

  • .NET 7
  • Clean Architecture

Currently Migrating the solution to .NET 8 / Vertical Slice Architecture.
PR here - #905

1.0.0

09 Apr 02:47

Choose a tag to compare

  • .NET 7 Upgrade
  • FSH CLI Support
  • Bug Fixes
  • Code Cleanups
  • Package Upgrades
  • Makefile
  • Built-In Docker Support
  • Docker-Compose files
  • Terraform for AWS ECS Deployment
  • Switched Default Database Provider to PostgreSQL

YouTube Overview Video : https://www.youtube.com/watch?v=a1mWRLQf9hY&ab_channel=MukeshMurugan

0.0.6-rc

26 Feb 09:22

Choose a tag to compare

0.0.6-rc Pre-release
Pre-release

NuGet Package - https://www.nuget.org/packages/FullStackHero.WebAPI.Boilerplate/0.0.6-rc

dotnet new --install FullStackHero.WebAPI.Boilerplate::0.0.6-rc

Changelogs

  • Integrated Finbucke Multitenant packages
  • Solution Restructure
  • Added Scripts for Generating Migrations
  • Introduced CQRS Pattern with MediatR
  • Better Configuration Files
  • AD Authentication / JWT Authentication
  • Added .rest file for API Testing
  • Updated Postman Collection
  • Code Cleanup
  • Updated all Packages
  • Serilog Startup fix
  • Export to Excel Support
  • Specification Pattern using Ardalis packages
  • OpenAPI Client Generation

0.0.5-rc

28 Nov 10:30

Choose a tag to compare

0.0.5-rc Pre-release
Pre-release
  • Fixed Password Reset / Forgot
  • Fixed Omnisharp Warnings / Code Cleanup
  • Fixed Repository Method
  • Log Hangfire to Serilog - Thanks frankyjquintero
  • Extras Hangfire extensions - Thanks frankyjquintero
  • Hangfire implementation examples - Thanks frankyjquintero
  • Separate JSON files for each Settings - Thanks unchase
  • Added Events and Handlers via MediatR - Thanks frankyjquintero
  • Moved to Tenancy Middleware - Thanks frankyjquintero & fretje
  • Solution Cleanup - rulesets & analyzer - Thanks fretje
  • Added More Functions for RepositoryAsync - Thanks ghaithprosoft
  • Entity Database Seeding Simplified
  • File-Scoped namespaces and implicit usings
  • Better Folder Structure / Modular

NuGet Package - https://www.nuget.org/packages/FullStackHero.WebAPI.Boilerplate/0.0.5-rc

dotnet new --install FullStackHero.WebAPI.Boilerplate::0.0.5-rc

0.0.4-rc

06 Nov 12:42

Choose a tag to compare

0.0.4-rc Pre-release
Pre-release

0.0.4 RC is available now!

  • Bug fix in Repository / Update method.
  • Endpoint changes for Update / Delete Methods. (Postman Collection Updated)
  • Fixed bug in Request Logging Middleware.
  • Adds default Role (Basic) to any new registered user.
  • Basic User has default View / Search Permissions
  • Code Cleanups
  • Templated Emails for User Registrations

View Complete Changelogs.

What's Changed

New Contributors

Full Changelog: 0.0.3-rc...0.0.4-rc