An ASP.NET Core Web API and MVC-based Task Management System that enables users to create, assign, track, and manage tasks within teams. The system leverages Entity Framework Core for data persistence, AutoMapper for object mapping between data models and DTOs, and SQL Server (or SQLite) as the database. A clean, RESTful API serves data to the MVC frontend, which provides an intuitive interface for managing tasks, teams, and task statuses.
- Project Overview
- Features
- Tech Stack
- Prerequisites
- Installation
- Configuration
- Usage
- Project Structure
- Contributing
- License
- Contact
The Task Management System is designed to help organizations and teams streamline their workflow by providing:
- User authentication and authorization (roles: Admin, User).
- CRUD operations for tasks, teams, and task statuses.
- Assignment of tasks to team members.
- Task status tracking (e.g., To Do, In Progress, Done).
- RESTful Web API built with ASP.NET Core.
- MVC frontend consuming the API for a seamless user experience.
-
User Management:
- Registration, login, and role-based access control.
- User profiles with basic information.
-
Task Management:
- Create, read, update, and delete tasks.
- Assign tasks to users and teams.
- Set due dates and priority levels.
- Filter tasks by status, assigned user, or team.
-
Team Management:
- Create and manage teams.
- Add or remove members from teams.
- View tasks by team.
-
Task Status Workflow:
- Predefined status categories (To Do, In Progress, Completed).
- Ability to add custom status if needed.
-
RESTful API:
- Controllers for Tasks, Teams, Users, and Statuses.
- JSON-based endpoints following best practices.
- Integration with AutoMapper to map between entities and DTOs.
-
MVC Frontend:
- Razor views for displaying dashboards, lists, and forms.
- jQuery/AJAX integration for asynchronous operations.
- Bootstrap 5 for responsive UI styling.
-
Backend:
- ASP.NET Core 9.0 Web API
- Entity Framework Core (EF Core) with Code-First migrations
- AutoMapper
- SQL Server (or SQLite for development/testing)
- FluentValidation (optional, for model validation)
- JWT or ASP.NET Identity (if implemented for authentication)
-
Frontend:
- ASP.NET Core MVC (Razor views)
- Bootstrap 5 for styling
- jQuery and AJAX for dynamic updates
-
Tools & Utilities:
- Visual Studio 2022 / Visual Studio Code
- Postman (for API testing)
- Git for version control
- .NET 9.0 SDK
- SQL Server (or SQLite if preferred)
- Node.js and npm (optional, if managing frontend assets separately)
- Git
-
Clone the repository
git clone https://github.com/karimd18/Task-Management-System.git cd Task-Management-System -
Restore NuGet packages
cd TaskManagement.Api dotnet restore -
Apply database migrations
Ensure the connection string inappsettings.jsonis configured (see Configuration).dotnet ef database update
-
Run the Web API
dotnet run --project TaskManagement.Api
The API will launch at
https://localhost:5001(or the configured port). -
Run the MVC Frontend
In a new terminal:cd TaskManagement.Web dotnet runAccess the frontend at
https://localhost:5000.
-
Connection Strings:
InTaskManagement.Api/appsettings.json, update theDefaultConnectionentry underConnectionStringsto point to your SQL Server or SQLite database."ConnectionStrings": { "DefaultConnection": "Server=YOUR_SERVER;Database=TaskDb;Trusted_Connection=True;" }
-
JWT / Identity (if used):
Configure JWT settings (Issuer, Audience, Key) or Identity settings inappsettings.jsonandProgram.cs. -
API Base URL:
In the MVC project (TaskManagement.Web), ensure that the base API URL in theappsettings.jsonor_Layout.cshtmlmatches the running API endpoint.
-
Register a new user
Visit/Account/Registeron the MVC frontend and create an account. -
Login
Authenticate via/Account/Loginand access the dashboard. -
Create Teams
Navigate toTeamsand add a new team. Invite or assign users to the team. -
Manage Tasks
Go toTasks:- Click “Create Task”
- Fill in title, description, due date, priority, and assign to a user or team.
- Save and view tasks in the list.
-
Update Task Status
Edit an existing task to change its status from To Do → In Progress → Completed. -
View Reports
Optionally, view summary dashboards or export task lists (if implemented).
Task-Management-System/
│
├── TaskManagement.Api/ # ASP.NET Core Web API project
│ ├── Controllers/ # API controllers (Tasks, Teams, Users, Status)
│ ├── Data/ # DbContext and entity models
│ ├── DTOs/ # Data Transfer Objects (for API requests/responses)
│ ├── Mappings/ # AutoMapper profiles
│ ├── Migrations/ # EF Core migrations
│ ├── Services/ # Business logic and repository classes
│ ├── appsettings.json # Configuration (connection strings, JWT, etc.)
│ └── Program.cs # Application entry point
│
└── TaskManagement.Web/ # ASP.NET Core MVC frontend project
├── Controllers/ # MVC controllers
├── Models/ # ViewModels or frontend-specific models
├── Views/ # Razor views (Layouts, partials, pages)
├── wwwroot/ # Static assets (CSS, JS, images)
├── appsettings.json # Frontend configuration (API URL)
└── Program.cs # MVC app entry point
Contributions are welcome! To get started:
- Fork the repository.
- Create a new branch:
git checkout -b feature/YourFeatureName
- Make your changes and commit them with descriptive messages.
- Push your branch to GitHub:
git push origin feature/YourFeatureName
- Open a Pull Request against the
mainbranch of the original repository.
Please ensure code is clean, well-documented, and passes existing tests (if any).
This project is licensed under the MIT License. See LICENSE for details.
Karim Doueik
- GitHub: karimd18
- Email: karimdoueik9@gmail.com
Feel free to open issues or contact me with suggestions and questions.