Software Project Management System
Software Project Management System
Duration: 2 Days
Objective: Design and implement a comprehensive .NET 8-based solution encompassing Web API,
ASP.NET MVC, Blazor WebAssembly, JWT Authentication, and SQL Server, with an emphasis on
secure data handling, complex logic, and real-time data interaction.
1. System Overview
A fictional software company, TechPro Solutions, creates custom software projects for its clients. The
company requires a system to manage its clients, projects, and project tracking, ensuring that project
tasks are assigned and tracked efficiently. The system will be designed as a distributed application
with three layers:
• Web API: Acts as the backend and handles all data operations.
• Blazor WebAssembly: Provides real-time task tracking functionality for developers working
on the projects.
The system will enforce strict security policies, allowing only authenticated users to access project
data, and only administrators will have the privilege to add or modify project data.
2. Functional Requirements
o TaskStatus: Status(enum) of the task (e.g., "To Do", "In Progress", "Completed").
• Project API: Create, read, update, and delete projects. Link projects to specific clients.
• Project Tracking API: Create, read, update, and delete tasks related to projects.
The Web API must provide additional endpoints for complex operations:
• Get Projects Ending Soon: Return a list of projects that are due to be completed in the next
30 days.
• Get Projects with Incomplete Tasks: Return a list of projects that still have incomplete tasks
(tasks not marked as "Completed").
• Get Projects by Client: Return a list of projects filtered by client name, allowing for a
dynamic search functionality.
• JWT Token-Based Authorization: The API should implement JWT token authentication. Only
authenticated users should access any endpoints.
• Admin Privileges: Only users with an "Admin" role should be allowed to create or modify any
data (i.e., clients, projects, or tasks). General users will have read-only access to data.
• Implement robust error handling and logging to ensure the API can handle and log all
exceptions for easier troubleshooting and auditing.
Develop an ASP.NET MVC application that consumes the Web API and provides administrative access
to manage the following:
• The dashboard will display all active projects, including basic information like project name,
client name, start and end dates, and current project status.
• Admin users can add, edit, or delete clients and projects directly from the MVC application.
• Implement server-side validation for form data (client and project details) to ensure the
integrity of data entered into the system.
• Implement a reporting feature that allows administrators to fetch and display projects
nearing their deadline (projects ending within the next 30 days).
• Include pagination, filtering, and sorting functionality in the MVC views to enhance the user
experience when managing large datasets.
Develop a Blazor WebAssembly application that provides real-time task tracking and interaction
capabilities with the Web API.
• The task tracking page will display project tasks based on their status ("To Do", "In Progress",
"Completed").
• Only admin users can add or delete tasks. Developers can update the task status.
2.4.3. UI Logic
• Ensure smooth interaction between the Blazor WebAssembly front end and the Web API for
data fetching and updates.
2.4.3. UI Logic
• Implement JWT-based authentication in both ASP.NET MVC and Blazor WebAssembly apps.
• Enforce role-based access, ensuring that only admins can modify data, while general users
have read-only access.
3. Technical Requirements
• ASP.NET MVC: For developing the admin dashboard and project management system.
• JWT Authentication: For securing the API and ensuring role-based access control.
Use Entity Framework Core Migrations to create the following tables in SQL Server:
• Clients
• Projects
• ProjectTracking
4. Non-Functional Requirements
• Security: All APIs must be secured with JWT token authentication. User roles must be
enforced.
• Performance: The system should be able to handle concurrent users, especially in the Blazor
WebAssembly app where real-time notifications are essential.
• Scalability: The solution should be designed in a way that allows easy scaling as the number
of clients and projects grows.
• Maintainability: The codebase should follow clean coding practices, be modular, and ensure
separation of concerns.
5. Deliverables
• Fully functional .NET 8 Web API with JWT authentication, capable of performing CRUD
operations and complex data queries.
• API documentation (Swagger or Postman) outlining all endpoints and their expected
inputs/outputs.
• A global exception filter that logs and returns standardized error responses.
• Reporting features to fetch and filter projects based on deadlines and incomplete tasks.
• Proper role-based access to ensure only authorized actions are performed by each user.