Tier: Preview. .NET is a preview stack — Archiet generates real, idiomatic ASP.NET Core 8 / C# code, boot-tested in CI, with cross-stack parity work ongoing relative to the four stable stacks. Production-shaped output; review before shipping rather than treating it as runtime-certified.
What generating a .NET app from requirements produces
src/
Api/
Program.cs # minimal hosting; auth, CORS, EF, Swagger wired
Controllers/ AuthController.cs, {Entity}Controller.cs
Dtos/ {Entity}Request.cs, {Entity}Response.cs
Middleware/ WorkspaceResolutionMiddleware.cs
Domain/
Entities/ User.cs, Workspace.cs, {Entity}.cs
Infrastructure/
AppDbContext.cs # EF Core; global query filters for tenancy
Migrations/ # one EF migration per schema change
Auth/ JwtTokenService.cs
tests/
Api.Tests/ # xUnit + WebApplicationFactory integration tests
Dockerfile # mcr.microsoft.com/dotnet/aspnet:8.0 runtime
docker-compose.yml # api + postgres + redis
appsettings.json # env-bound; no hardcoded secrets
openapi.yaml
.NET-specific patterns Archiet gets right
Global query filters for tenant isolation — applied once in OnModelCreating, so every query on a tenant-owned entity is filtered automatically:
modelBuilder.Entity<Order>()
.HasQueryFilter(o => o.WorkspaceId == _tenant.WorkspaceId);
modelBuilder.Entity<Order>()
.HasIndex(o => o.WorkspaceId);
Controllers with [Authorize] and role policies:
[HttpGet, Authorize(Roles = "Admin,Member")]
public async Task<ActionResult<IEnumerable<OrderResponse>>> List(int page = 1)
{
var orders = await _db.Orders // global filter applies WorkspaceId
.OrderByDescending(o => o.CreatedAt)
.Skip((page - 1) * 25).Take(25)
.Select(o => OrderResponse.From(o))
.ToListAsync();
return Ok(orders);
}
JWT Bearer in httpOnly cookies. Tokens are issued as HttpOnly; Secure; SameSite=Lax cookies and validated by the JWT Bearer middleware — no tokens in browser storage. ASP.NET Identity's hasher protects passwords.
DTOs and FluentValidation. Controllers accept and return DTOs, never EF entities. Validation failures return 422 through a consistent problem-details handler.
PostgreSQL via Npgsql + EF migrations. appsettings.json binds the connection string from the environment; schema changes are EF migrations run at startup or via dotnet ef database update.
What is included beyond the .NET backend
- Next.js frontend — every screen from your manifest, wired to the API
- Docker — multi-stage build to the ASP.NET runtime image +
docker-compose.ymlwith PostgreSQL and Redis - GitHub Actions —
dotnet format→dotnet test→ build → deploy - Architecture docs — ADRs under
docs/decisions/ - OpenAPI 3.1 spec — via Swashbuckle, plus a standalone
openapi.yaml
Related
- Step-by-step walkthrough: Generate a production .NET app from your PRD
- Template-oriented page: .NET boilerplate generator
- All use cases: archiet.com/use-cases
FAQ
Which .NET version does it generate?
ASP.NET Core 8 (LTS) with Entity Framework Core, JWT Bearer authentication, and xUnit integration tests, targeting C# 12.
How is multi-tenancy enforced?
EF Core global query filters apply the authenticated user's WorkspaceId to every query on tenant-owned entities, so a forgotten filter can't leak another tenant's data.
Does it run on Azure?
Yes — the container image targets the standard ASP.NET runtime and runs on Azure App Service, Container Apps, AKS, or any container host. Configuration binds from environment variables.
Is the .NET stack production-ready?
It is a preview stack: real, idiomatic ASP.NET Core 8, boot-tested in CI with parity work ongoing. Use it as a strong starting point and review before production.
CTA
Generate a complete ASP.NET Core + Next.js application from your requirements — free plan, no credit card.
Describe your product, pick .NET, and download a production-shaped codebase in about 90 seconds.
Start free at archiet.com.