Built with FullStackHero .NET Starter Kit — a production-ready modular .NET 10 framework.
- .NET 10 SDK
- Docker (for PostgreSQL, Redis, and Aspire)
- .NET Aspire workload:
dotnet workload install aspire
# Start everything with Aspire (recommended)
dotnet run --project src/Playground/FSH.Starter.AppHost
# Or run the API standalone (requires external Postgres + Redis)
dotnet run --project src/Playground/FSH.Starter.ApiThe Aspire dashboard opens at https://localhost:15888. The API serves at https://localhost:7030 with Scalar docs at /scalar.
src/
BuildingBlocks/ # Shared framework libraries (do not modify unless necessary)
Modules/ # Bounded contexts (Identity, Multitenancy, Auditing, Webhooks)
Playground/
FSH.Starter.Api/ # API host
FSH.Starter.AppHost/ # .NET Aspire orchestrator
FSH.Starter.Migrations.PostgreSQL/ # EF Core migrations
Tests/ # Unit, integration, and architecture tests
- Define command/query in
src/Modules/{Module}.Contracts/v1/{Area}/{Feature}/ - Add handler in
src/Modules/{Module}/Features/v1/{Area}/{Feature}/ - Add FluentValidation validator in the same folder
- Add endpoint in the same folder
- Wire the endpoint in the module's
MapEndpoints()method
To remove a module (e.g., Webhooks):
- Delete
src/Modules/Webhooks/folders - Remove its references from
src/Playground/FSH.Starter.Api/FSH.Starter.Api.csproj - Remove its assembly from
Program.cs(bothAddMediatorandmoduleAssemblies) - Remove its migration folder from
src/Playground/FSH.Starter.Migrations.PostgreSQL/ - Remove from
src/FSH.Starter.slnx
dotnet test src/FSH.Starter.slnx