A full-stack task management application built with Angular and .NET 9, deployed on Microsoft Azure.
- Features
- Tech Stack
- Architecture
- Live Demo
- Prerequisites
- Local Development Setup
- Deployment
- API Documentation
- Project Structure
- Contributing
- License
-
User Authentication & Authorization
- JWT-based authentication
- Role-based access control (Admin, Manager, Developer)
- Secure password hashing
-
Project Management
- Create, read, update, and delete projects
- Assign projects to teams
- Track project status
-
Task Management
- Create and assign tasks to users
- Set priorities and deadlines
- Update task status (To Do, In Progress, Done)
- Task filtering and sorting
-
User Management
- User registration and login
- Role assignment
- User profiles
-
Real-time Updates
- Responsive UI with instant feedback
- Angular reactive forms
- Framework: Angular 21
- Language: TypeScript
- Styling: CSS3
- HTTP Client: Angular HttpClient
- Routing: Angular Router
- Forms: Reactive Forms
- Framework: ASP.NET Core 9.0
- Language: C# 12
- ORM: Entity Framework Core 9.0
- Database: PostgreSQL 16
- Authentication: JWT (JSON Web Tokens)
- API Documentation: Swagger/OpenAPI
- Frontend Hosting: Azure Static Web Apps (Free Tier)
- Backend Hosting: Azure App Service (Free F1 Tier)
- Database: Azure Database for PostgreSQL (Burstable B1ms)
- Region: West Europe
The Smart Task Tracker application follows a client-server architecture:
- Client: Angular frontend (smart-task-tracker-ui) - Consumes the backend API, handles user interactions, and displays data.
- Server: ASP.NET Core Web API (smartTaskTracker.API) - Provides RESTful API endpoints for data access and management.
- Database: PostgreSQL - Stores application data, including user information, projects, tasks, and time tracking.
- Cloud Services: Hosted on Microsoft Azure, utilizing services like Azure App Service, Azure Static Web Apps, and Azure Database for PostgreSQL.
[Angular Frontend] <---> [ASP.NET Core Web API] <---> [PostgreSQL Database]
| | |
| | |
[Azure Static Web Apps] [Azure App Service] [Azure Database for PostgreSQL]
- Frontend: https://calm-ocean-0dd1c2e03.7.azurestaticapps.net
- Backend API: https://smart-task-tracker-api-4114.azurewebsites.net
- Swagger Documentation: https://smart-task-tracker-api-4114.azurewebsites.net/swagger
- Node.js: v18.x or higher
- npm: v9.x or higher
- .NET SDK: 9.0 or higher
- PostgreSQL: 16.x
- Git: Latest version
- Angular CLI:
npm install -g @angular/cli - EF Core Tools:
dotnet tool install --global dotnet-ef
- Azure CLI: Installation Guide
- Azure Account: Free Account
- Azure Static Web Apps CLI:
npm install -g @azure/static-web-apps-cli
cd smartTaskTracker.API
dot asdfasdfasThe API uses SQL Server LocalDB. The connection string is already configured in appsettings.json:
The appsettings.json already contains:
For development, we use User Secrets:
dotnet ef database updateIf migrations are missing:
dotnet ef migrations add InitialCreate
dotnet ef database updatedotnet runThe API runs on:
- HTTPS:
https://localhost:5261 - HTTP:
http://localhost:5260 - Swagger:
http://localhost:5260/swagger
cd smart-task-tracker-ui
npm installThe API URL is already configured in the services (http://localhost:5260/api). If the API runs on a different port, adjust the URLs in the service files:
src/app/services/auth.tssrc/app/services/project-service.tssrc/app/services/task-service.tssrc/app/services/time-tracking.tssrc/app/services/admin.ts
ng serve- Access the frontend at
http://localhost:4200 - API documentation available at
http://localhost:5000/swagger - Angular frontend communicates with the backend API for data operations
- Follow standard RESTful API practices for backend development
- For frontend, use Angular style guide and best practices
- Commit code to respective branches and create pull requests for review
- Contributions are welcome! Please read CONTRIBUTING.md for details.
This project is private and intended for personal use.
For support, open an issue on GitHub or contact the project maintainer.
- Inspired by various task management tools and frameworks
- Built with passion and dedication to improve productivity
Enjoy tracking your tasks smartly!
The frontend runs on: http://localhost:4200
| Role | Permissions |
|---|---|
| Admin | User management, full access to system settings |
| Manager | Project and task management, team management |
| Developer | Access to assigned tasks, time tracking |
- Login:
POST /api/auth/loginwith email & password - Receive Token: JWT token in response
- Store Token: Frontend stores token in
localStorage - Authenticate Requests: Token is sent in
Authorizationheader - Automatic Renewal: Token expires after 24 hours
POST /api/auth/register - Register new user POST /api/auth/login - Login user (receive JWT)
GET /api/projects - Get all projects GET /api/projects/{id}- Get project by ID POST /api/projects - Create new project (Manager) PUT /api/projects/{id} - Update project (Manager) DELETE /api/projects/{id} - Delete project (Manager) PATCH /api/projects/{id}/archive - Archive project (Manager)
GET /api/tasks - Get all tasks GET /api/tasks/{id} - Get task by ID GET /api/tasks/project/{projectId} - Get tasks by project POST /api/tasks - Create new task (Manager) PUT /api/tasks/{id}- Update task DELETE /api/tasks/{id}- Delete task (Manager) PATCH /api/tasks/{id}/archive - Archive task
GET /api/timetrackings/project/{projectId}- Time per project GET /api/timetrackings/project/{projectId}/total- Total time per project GET /api/timetrackings/task/{taskId}- Time per task POST /api/timetrackings/start/{taskId}- Start time tracking POST /api/timetrackings/stop/{taskId} - Stop time tracking
GET /api/users - Get all users (Admin) GET /api/users/{id} - Get user by ID (Admin) PUT /api/users/{id} - Update user (Admin) DELETE /api/users/{id} - Delete user (Admin) PATCH /api/users/{id}/archive - Archive user (Admin)
Full API documentation: http://localhost:5260/swagger
- Users: Users with roles and authentication
- Roles: Admin, Manager, Developer
- Projects: Projects with timestamps and archiving
- TaskItems: Tasks with status, priority, and assignment
- TaskStatuses: Pending, In Progress, Completed
- TaskPriorities: Low, Medium, High
- TimeTrackings: Time entries with start, end, and duration
- Minimal APIs: Lightweight endpoint configuration
- Global Query Filters: Automatic filtering of archived items
- Shadow Properties: Audit fields (CreatedAt, UpdatedAt)
- Value Converters: Custom type mapping
- Interceptors: Automatic soft delete implementation
The API is configured for the Angular frontend:
Important: Adjust the origin URL for production!
Production build is placed in dist/smart-task-tracker-ui/
- Backend: C# Coding Conventions (Microsoft Style)
- Frontend: Angular Style Guide + TypeScript Best Practices
- Formatting: Prettier (Frontend), EditorConfig (Backend)
Problem: Cannot open database "SmartTaskTrackerDB"
- Update Connection String for production database
- Configure Azure Key Vault for secrets (production)
- Publish to Azure App Service or IIS
- Update CORS policy with production frontend URL
- Build for production
- Update API URL in environment files
- Deploy to static hosting (Azure Static Web Apps, Netlify, Vercel)
- β
JWT tokens stored in
localStorage(considerhttpOnlycookies for production) - β Password hashing with BCrypt
- β Role-based authorization on all protected endpoints
- β HTTPS enforced in production
- β SQL injection protection via EF Core parameterized queries
- β CORS restricted to specific origins
- β User Secrets for development
- β Azure Key Vault for production secrets
β οΈ TODO: Implement refresh tokens for better securityβ οΈ TODO: Add rate limiting to prevent abuse
- .NET 9 Documentation
- Angular Documentation
- Entity Framework Core 9
- JWT.io - JWT Token Debugger
- Angular Material
- Chart.js
- Azure Key Vault
This project is private and intended for personal use.
Brisco
- GitHub: @Brisco15
As this is a private project, external contributions are not currently accepted.
- β Backend API with JWT authentication (.NET 9)
- β Frontend with Angular Material
- β Dashboard with statistics and charts
- β Time tracking per task
- β Role-based access control
- β Project and task management
- β Admin panel for user management
- β Entity Framework Core 9
- β Azure Key Vault integration
- π Refresh token implementation (planned)
- π Unit tests (in progress)
- π E2E tests (planned)
- Email notifications for task assignments
- Real-time updates with SignalR
- Advanced reporting and analytics
- File attachments for tasks
- Task comments and activity log
- Dark mode support
- Multi-language support (i18n)
- Export to Excel/PDF
- Gantt chart view for projects
Version: 1.0.0
Last Updated: May 2026
.NET Version: 9.0
Angular Version: 18+
- First load may be slow due to cold start (free tier)
- Limited to 60 minutes/day compute time (free App Service)
- Microsoft Azure for cloud hosting
- Angular team for the amazing framework
- ASP.NET Core team for the robust backend framework
- PostgreSQL for the reliable database