TaskManagementApp is a .NET 10 Blazor Web App for managing departments, projects, tasks, and notifications inside a role-based enterprise workspace. The application combines an interactive server-rendered Blazor UI with ASP.NET Core Identity, Entity Framework Core, and SQL Server persistence.
The application is designed around three main operational roles:
- Administrator - manages departments, users, roles, and has full visibility across the system.
- DepartmentManager - works within a department scope, manages department projects and tasks, and reviews workload.
- DepartmentUser - creates and works on assigned tasks and participates in department projects.
The app includes:
- a dashboard with live metrics and charts
- task and project workspaces
- comments and file attachments for tasks
- notification inbox and unread badge tracking
- seeded identity roles and administrator account
- audit logging for administrative actions
- Framework: ASP.NET Core / Blazor Web App on .NET 10 (
net10.0) - Rendering model: Interactive Server Components
- UI library: BlazorBootstrap
- Authentication and authorization: ASP.NET Core Identity with roles
- Data access: Entity Framework Core 10 with SQL Server
- Validation: FluentValidation
- Hosting model: ASP.NET Core web application
The repository is organized into clear layers:
Components/- Blazor UI, layout, routing, and account pagesContracts/- service and repository interfacesData/-ApplicationDbContext, identity user model, and EF Core migrationsDomain/Entities/- domain entities such as departments, projects, tasks, comments, attachments, notifications, and audit logsDTOs/- application DTOs used between services and UIInfrastructure/Services/- business logic for tasks, projects, dashboard, notifications, and administrationInfrastructure/Extensions/- app startup and identity seeding helpersInfrastructure/Middleware/- custom exception handling middlewarewwwroot/- static assets and uploaded task files
The home page provides a role-aware operations dashboard backed by live database queries. It includes:
- completed, in-progress, overdue, waiting, and total task metrics
- finished, active, and total project counts
- department counts and at-risk department indicators
- task trends over recent days
- recent activity stream
- upcoming due dates
- workload and work-hours charts based on role scope
- task priority, task status, and project status visualizations
The dashboard adjusts what the user sees based on their assigned role and department membership.
Authenticated users can access the task workspace at /tasks.
Supported capabilities include:
- paged task listing
- filtering by search text, status, priority, and department where permitted
- sorting by due date, title, or priority
- task creation based on role permissions
- detailed task view at
/tasks/{id} - task editing, assignee management, comments, and attachments
- history tracking for task changes
Important workflow rules enforced by the application:
- tasks cannot be created directly as
Completed - a task must move to On Review before it can be marked Completed
- completed tasks can no longer be edited or commented on
- completed tasks do not allow additional file uploads
- linked project selection is fixed after task creation
Attachment handling rules:
- maximum of 5 attachments per task
- allowed file types:
.bmp.jpg.png.pdf.doc.docx.xls.xlsx.txt
- uploaded files are stored under
wwwroot/uploads/tasks/{taskId}
Authenticated users can access the project workspace at /projects.
Supported capabilities include:
- paged project listing
- filtering by search text, status, and department where permitted
- project progress tracking
- project details view at
/projects/{id} - team member and instructor management
- creation of tasks directly from a project
- automatic calculation of project completion progress
Project behavior includes:
- projects belong to a department
- projects can include team members and an instructor
- tasks can be linked to projects
- a project is marked finished automatically when all linked tasks are completed
- progress is calculated from linked task completion
Authenticated users can access notifications at /notifications.
Features include:
- database-backed notification list
- unread count badge in the main layout
- mark individual notifications as read or unread
- mark all notifications as read or unread
- automatic creation of due-soon reminders for tasks due within the next 3 days
The /admin page is restricted to the Administrator role.
Administrative capabilities include:
- create, update, and delete users
- assign departments and roles to users
- create, update, and delete departments
- create, update, and delete roles
- review recent audit log entries
The application seeds these roles automatically at startup if they do not exist:
AdministratorDepartmentManagerDepartmentUser
The application uses ASP.NET Core Identity and role-based authorization.
Configured policies include:
RequireAdministratorRequireManager
Authorization is also enforced in service-layer logic. In practice:
- Administrators have global access
- DepartmentManagers are limited primarily to their own department scope, while still being able to review relevant items assigned to them
- DepartmentUsers are limited to their own created work, assignments, and project participation
Identity features are enabled through the built-in account pages under Components/Account/Pages.
The application stores and relates these main entities:
- ApplicationUser - Identity user extended with first name, last name, display name, active status, and optional department
- Department - organizational unit with code, description, and optional manager
- Project - department-owned initiative with instructor, team members, progress, and completion state
- ProjectTeamMember - membership link between projects and users
- TaskItem - task record with status, priority, due date, creator, optional project, and assignees
- TaskAssignment - links tasks to users
- TaskComment - comments on tasks
- TaskAttachment - uploaded task files
- TaskHistory - audit-style activity history for task changes
- NotificationItem - user notifications
- AuditLog - administrative audit trail
- UserSession - persisted session-related data
At startup, the app configures:
- Razor components with interactive server rendering
- authentication and Identity cookies
- ASP.NET Core Identity with roles
- EF Core SQL Server for
ApplicationDbContext IDbContextFactory<ApplicationDbContext>for services that create short-lived contexts- BlazorBootstrap UI services
- FluentValidation task validation
- memory cache and HTTP context access
- custom exception handling middleware
- health endpoint at
/health
After the app is built, identity seeding runs automatically to ensure roles and the core administrator account exist.
Main configuration lives in appsettings.json.
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=TaskManagementApp;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True"
}"Security": {
"JwtTokenMinutes": 60,
"RefreshTokenDays": 7,
"MaxFailedLoginAttempts": 5
}"SeedUser": {
"Email": "admin@taskmanagement.local",
"Password": "Admin123!",
"DisplayName": "Core Administrator"
}For real deployments, move secrets and production credentials out of source-controlled settings and into user secrets, environment variables, or a secure secret store.
Before running the application, ensure you have:
- .NET 10 SDK
- SQL Server instance available to the configured connection string
- Visual Studio 2026 or the .NET CLI
dotnet restoredotnet ef database updatedotnet runBy default, launch settings define:
http://localhost:5177https://localhost:7187
Use the values from the SeedUser section, unless you changed them in configuration.
Migrations are stored under Data/Migrations/. The current migration history shows support for:
- initial application schema
- task attachments
- projects and task review workflow
A simple health check endpoint is exposed at:
/health
It returns a JSON payload indicating application status.
The application uses a custom middleware component to log unhandled exceptions and return a JSON 500 response with a generic error message.
- Sign in with the seeded or existing administrator account.
- Open
/adminto create departments, users, and roles. - Assign managers and department users to departments.
- Review dashboard-wide metrics and audit logs.
- Sign in and open the dashboard.
- Review department workload and pending tasks.
- Create or update department projects.
- Create tasks and assign department users.
- Monitor comments, progress, and due dates.
- Sign in and open the task workspace.
- Review assigned or self-created tasks.
- Add comments and attachments while the task is active.
- Move tasks through the workflow, including On Review before completion.
- Monitor reminders from the notifications inbox.
Key files worth reviewing:
Program.cs- application startup, service registration, middleware, and endpoint mappingData/ApplicationDbContext.cs- EF Core model and table configurationInfrastructure/Extensions/IdentitySeedExtensions.cs- role and administrator seedingInfrastructure/Services/TaskService.cs- task workflow, permissions, attachments, and notificationsInfrastructure/Services/ProjectService.cs- project management and progress calculationsInfrastructure/Services/DashboardService.cs- dashboard analytics and role-aware summariesInfrastructure/Services/NotificationService.cs- notification loading and due-soon remindersComponents/Pages/- primary Blazor pages for dashboard, tasks, projects, notifications, and admin management
- The default seeded administrator password is suitable only for local development.
- Uploaded files are stored on the web server file system under
wwwroot/uploads. - Authorization rules are implemented both at page level and service level, so future changes should keep those layers aligned.
- The project currently targets SQL Server specifically through
UseSqlServer.
See LICENSE.txt for license details.