Real-time, collaborative project management — boards, lists, and cards with drag-and-drop and live multi-user updates. Built as a full-stack reference app: .NET 10 + SQL Server + Azure SignalR on the back end, Vue 3 + Vite + Pinia on the front end, with Clean Architecture, IaC, and a gated CI/CD pipeline.
🔗 Live demo: add Static Web App URL · Demo login: guest@demo.com / demo123
📦 Source: add repo URL
Teams organize work into boards → lists → cards, move cards with drag-and-drop, and see each other's changes in real time. Role-based per-board access (Owner / Editor / Viewer), labels, assignees, due dates, comments, a per-board activity feed, and a cross-board "My Tasks" view. Full requirements in the SRS.
| Layer | Technology |
|---|---|
| Backend | .NET 10, ASP.NET Core Web API, EF Core, SQL Server |
| Real-time | Azure SignalR Service (Default mode) |
| Frontend | Vue 3 (Composition API), Vite, Pinia, Vue Router, TypeScript |
| Auth | JWT bearer, role-based authorization |
| Architecture | Clean Architecture (Domain / Application / Infrastructure / Api) |
| Infra (Azure) | Static Web App, App Service, Azure SQL (serverless), Key Vault, App Insights — all Bicep IaC |
| CI/CD | GitHub Actions, OIDC to Azure, SonarCloud quality gate, CodeQL, Dependabot |
- Stateless API + JWT — horizontally scalable by design.
- Clean Architecture — dependencies point inward; the Domain knows nothing about EF or the web.
- Real-time offloaded to Azure SignalR so client WebSockets never burden the app host.
- Managed identity everywhere — no keys or passwords in config (SQL, SignalR, Key Vault).
- Scale-ready, free-hosted — every scaling ceiling is a SKU/config change, not a rewrite. See architecture-scalability.md.
| Doc | What's inside |
|---|---|
| Software Requirements (SRS) | Goals, scope, roles, user stories + acceptance criteria, NFRs, release plan |
| Dev Environment | Local setup for backend + frontend, SQL/SignalR locally, tooling, troubleshooting |
| DevOps Setup | OIDC federation, secrets, branch protection, gated migrations, SonarCloud |
| Scale-Ready Architecture | Scale-ready foundations, code seams, the scaling ladder, anti-goals |
| Portfolio Project Specs | Build specs for this and two sibling projects + shared conventions |
# 1) dependencies (SQL Server with a persistent volume)
docker compose up -d
# 2) backend (https://localhost:7xxx, Swagger at /swagger)
cd backend && dotnet run --project src/Api
# 3) frontend (http://localhost:5173)
cd frontend && npm ci && npm run devFull instructions, secrets, and migrations: docs/dev-environment.md.
.
├── backend/ # .NET 10 — Domain / Application / Infrastructure / Api + tests
├── frontend/ # Vue 3 + Vite SPA
├── infra/ # Bicep IaC (all Azure resources)
├── .github/ # CI/CD + CodeQL workflows, Dependabot
├── docs/ # dev-environment, devops-setup, architecture-scalability
├── docker-compose.yml # local dependencies
├── global.json # pinned .NET SDK
└── .nvmrc # pinned Node version
Every push runs build → unit tests (coverage) → SonarCloud quality gate (blocking) → CodeQL. Merges to main are gated by branch protection; deploys go through a protected environment and follow backup-verify → expand-contract migration → deploy → smoke test, authenticating to Azure via OIDC (no stored cloud secrets). Details: docs/devops-setup.md.
v1.0 scope and the "Must" story list are in the SRS. The scaling path beyond the free-tier demo is documented in architecture-scalability.md.
MIT (or your choice) — add a LICENSE file.