Blazor + EF Core + ASP.NET Identity + SQLite Starter
ASP.NET Core Blazor, SQLite, Entity Framework Core, ASP.NET Core Identity, Minimal APIs, and SignalR form a server rendered app configuration where one server framework renders the browser UI and owns the backend. Better Fullstack can scaffold this exact compatibility-checked selection.
01 / selection
Stack at a glance
| Role | Technology | Repository description | Scope |
|---|---|---|---|
| Backend | ASP.NET Core Blazor | Component-based web UI with C# and Razor | Primary backend |
| Database | SQLite | File-based SQL database | Project-wide |
| Data access | Entity Framework Core | Code-first ORM with LINQ queries and migrations | Scoped to the backend |
| Authentication | ASP.NET Core Identity | Built-in accounts, users, roles, and password auth | Scoped to the backend |
| API | Minimal APIs | REST endpoints with ASP.NET Core route handlers | Scoped to the backend |
| Realtime | SignalR | Realtime web sockets and pub-sub for ASP.NET Core | Scoped to the backend |
| Observability | Serilog | Structured logging with rich sink ecosystem | Scoped to the backend |
| Testing | xUnit | Common .NET test framework | Scoped to the backend |
02 / architecture
How the pieces fit
- The backend framework renders the browser UI on the server.
- Entity Framework Core is scoped to the backend.
- ASP.NET Core Identity is scoped to the backend.
- Minimal APIs is scoped to the backend.
- SignalR is scoped to the backend.
- Serilog is scoped to the backend.
- xUnit is scoped to the backend.
03 / output
What gets generated
The virtual generator produced 17 files across 3 directories. The output is a single-directory project.
Top-level entries
- ./.env.example
- ./.gitignore
- ./AGENTS.md
- ./CLAUDE.md
- ./Components
- ./Dockerfile
- ./Program.cs
- ./README.md
- ./appsettings.Development.json
- ./appsettings.json
- ./my_app.Tests
- ./my_app.csproj
- ./my_app.http
Representative files
- README.md
- Program.cs
- Components/App.razor
- Components/Pages/Home.razor
- Components/Routes.razor
- Components/_Imports.razor
- .env.example
- .gitignore
04 / create
Create command
This is the canonical Bun command generated for the selection.
bun create better-fullstack@latest my-app --ecosystem dotnet --database sqlite --dotnet-web-framework aspnet-blazor --dotnet-orm ef-core --dotnet-auth aspnet-identity --dotnet-api minimal-api --dotnet-testing xunit --dotnet-job-queue none --dotnet-realtime signalr --dotnet-observability serilog --dotnet-validation none --dotnet-caching none --dotnet-deploy docker --dotnet-libraries none --ai-docs claude-md agents-md05 / builder
Open in the builder
- eco
- dotnet
- au
- none
- dnwf
- aspnet-blazor
06 / checks
Compatibility notes
Compatibility checked against Better Fullstack types version 2.8.0.
The generated record has 0 graph issues and 0 disabled selected options. This is a compatibility check, not a claim that this exact scaffold received a runtime smoke verification.
07 / fit
When to choose this shape
Choose this shape when one server framework should render the browser UI without a separate frontend app.
08 / next
Related stacks and guide
Need a walkthrough? Read the related stack guide.
09 / faq
Questions
Is this combination supported?
It passes the repository's compatibility analysis, selected-option checks, stack graph validation, project schema parsing, and virtual generation. That result is described here as compatibility checked.
Does it generate one app or separate parts?
One server framework renders the browser UI and owns the backend. The actual generated output uses a single-directory layout.
How can I customize the selection?
Open the generated builder link above. Its query parameters reproduce this selection, and the builder can change compatible options before generating a new command.