Lesson 40 of 40
Capstone
Advanced
90 min
Building a Full-Stack App End-to-End
Bring it all together — build a complete Task Management SaaS with ASP.NET Core API, Blazor frontend, EF Core, Azure deployment, and Copilot-assisted development.
Part 1: Architecture Overview
Our TaskFlow app architecture:
- API: ASP.NET Core 10 Minimal API, JWT auth, EF Core + PostgreSQL
- Frontend: Blazor Web App (Auto render mode)
- Real-time: SignalR for live task updates
- Background: BackgroundService for email notifications
- Infrastructure: Docker Compose + Azure Container Apps
Part 2: Scaffolding with Copilot Agent Mode
Start with a detailed Copilot Agent prompt:
"Create a TaskFlow solution with:
- TasksApi: Minimal API with CRUD endpoints for tasks + projects
- TasksBlazor: Blazor Web App with task board view
- TasksWorker: Background service for notifications
- Shared: DTOs and domain models
Use JWT auth, EF Core with SQLite for dev.
Add unit tests for all service classes."
Review Agent changes carefully before accepting.- TasksApi: Minimal API with CRUD endpoints for tasks + projects
- TasksBlazor: Blazor Web App with task board view
- TasksWorker: Background service for notifications
- Shared: DTOs and domain models
Use JWT auth, EF Core with SQLite for dev.
Add unit tests for all service classes."
Part 3: Real-time Kanban Board
// SignalR hub
public class TaskHub : Hub
{
public async Task MoveTask(Guid taskId, string column)
{
await _service.MoveAsync(taskId, column);
await Clients.Others.SendAsync("TaskMoved", taskId, column);
}
}
public class TaskHub : Hub
{
public async Task MoveTask(Guid taskId, string column)
{
await _service.MoveAsync(taskId, column);
await Clients.Others.SendAsync("TaskMoved", taskId, column);
}
}
Part 4: Deploy to Azure Container Apps
# GitHub Actions deploy step
- name: Deploy to Azure
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ env.REGISTRY }}/taskflow:${{ github.sha }}
containerAppName: taskflow-api
resourceGroup: taskflow-rg
Congrats — your full-stack .NET 10 app is live! 🚀- name: Deploy to Azure
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ env.REGISTRY }}/taskflow:${{ github.sha }}
containerAppName: taskflow-api
resourceGroup: taskflow-rg