Full-stack task management application with a .NET Web API backend, SQL Server data store, JWT authentication, and React frontend.

| Path | Description |
|---|---|
backend/ |
.NET 8 Web API, JWT auth, application/domain/infrastructure projects, EF Core migrations, tests |
frontend/ |
React + Vite + TypeScript SPA with login/register flow (frontend README) |
- .NET 8 SDK
- Node.js 20+
- SQL Server (Docker, LocalDB, or another local instance)
- EF Core CLI:
dotnet tool install --global dotnet-ef
From backend/:
cp TaskManagement.Api/appsettings.Development.example.json TaskManagement.Api/appsettings.Development.json
dotnet ef database update --project TaskManagement.Infrastructure --startup-project TaskManagement.Api
dotnet run --project TaskManagement.Api- API: http://localhost:5296
- Swagger: http://localhost:5296/swagger
Set a strong Jwt:SecretKey in local/user secrets or environment-specific config before running outside local development.
From frontend/TaskManagement.Web/:
cp .env.example .env
npm install
npm run devIn development, /api is proxied to BACKEND_URL in .env (default http://localhost:5296). See frontend/README.md for environment variables and API details.
Override for a single run without editing files:
BACKEND_URL=http://localhost:5296 npm run devBackend — from backend/:
dotnet test TaskManagement.sln --nologoFrontend — from frontend/TaskManagement.Web/:
npm run test:run
npm run build
npm run lint- Register and sign in with JWT bearer authentication
- Protected task API endpoints
- List tasks with status and priority filters
- Create, edit, and soft-delete tasks
- Priority visual indicators
- Task summary grouped by status and priority
- Global API exception handling
- EF Core Code First migrations and seed data
- Register or sign in through the React app.
- The backend returns a JWT access token.
- The frontend stores the token and sends it as
Authorization: Bearer <token>for task API requests. - The backend rejects missing or invalid tokens with
401 Unauthorized.