Aspire Database-Backed App Starter
What does "Add Factory" do? Clicking the button installs the Factory GitHub App on this repository. Once installed, Factory watches for issues labeled
intentand automatically decomposes them into sub-tasks, generates code with AI agents, opens pull requests, runs tests, and merges — all while tracking progress on a project board. No configuration files or allowlists needed; installing the App is the only setup step.
A blank-canvas template for building database-backed applications with Aspire. Clone it, point your agents at it, and start building features — the plumbing is done.
This is intentionally not a todo app. It seeds just enough data (page titles and content) to prove the stack works end-to-end, without leaving you a pile of domain logic to unwire before you can start your own project.
Architecture
graph LR
Frontend[React Frontend] -->|/api proxy| API[.NET Minimal API]
API --> DB[(PostgreSQL)]
DbManager[DB Manager Worker] -->|migrations| DB
DbSeeder[DB Seeder Worker] -->|seed data| DB
What's Inside
| Project | Role |
|---|---|
AspireStarter.AppHost |
Aspire orchestrator — defines the topology and startup dependencies |
AspireStarter.Api |
REST API using .NET Minimal APIs |
AspireStarter.Models |
Entity Framework entity classes (standalone class library) |
AspireStarter.Data |
DbContext, EF configuration, and migrations (standalone class library) |
AspireStarter.DbManager |
Worker that applies EF migrations then exits |
AspireStarter.DbSeeder |
Worker that seeds initial data then exits |
AspireStarter.ServiceDefaults |
Shared OpenTelemetry, health checks, and resilience config |
frontend/ |
React 19 + Vite + TypeScript with a dark reactive UI |
Prerequisites
- .NET 10 SDK
- Node.js 20+
- Docker (for PostgreSQL container)
- Aspire CLI
Getting Started
# Install the Aspire CLI
dotnet tool install -g Aspire.Cli
# Clone and run
git clone https://github.com/bradygaster/aspire-db-backed-app-starter.git
cd aspire-db-backed-app-starter
aspire run
The Aspire dashboard opens automatically — from there you can see all resources, traces, logs, and metrics.
Startup Order
Aspire orchestrates the full dependency chain:
- PostgreSQL container starts
- DB Manager waits for Postgres, applies EF Core migrations, exits
- DB Seeder waits for DB Manager to complete, seeds page content, exits
- API waits for seeding to finish, starts serving requests
- Frontend waits for API health, starts Vite dev server
Each worker emits OpenTelemetry traces so you can watch the step-by-step process in the dashboard's Traces view.
Extending This Template
Add a new entity
- Create the model class in
AspireStarter.Models - Add a
DbSet<>toAppDbContextinAspireStarter.Data - Generate a migration:
dotnet ef migrations add YourMigration --project AspireStarter.Data --startup-project AspireStarter.Data - Add API endpoints in
AspireStarter.Api/Program.cs - Build UI components in
frontend/src/
Add seed data
Edit AspireStarter.DbSeeder/SeedWorker.cs — the pattern is already there.
Let agents do it
This repo includes Aspire agent skills (.agents/skills/). Point your AI coding agent at this repo and ask it to add features, entities, or screens — it has the context it needs.
Tech Stack
- Aspire 13.4.6 — orchestration, service discovery, observability
- .NET 10 — API and worker services
- Entity Framework Core 10 — data access with PostgreSQL
- React 19 + Vite 8 + TypeScript — frontend
- OpenTelemetry — distributed tracing baked into every layer
Deploy to Azure Container Apps
# Deploy via Aspire CLI (recommended)
aspire deploy
# Or via Azure Developer CLI
azd up
The AppHost defines an Azure Container Apps environment (AddAzureContainerAppEnvironment). When you run aspire deploy, it provisions the infrastructure and deploys all services with managed identity authentication — no secrets to manage.
License
MIT