A web application for managing projects, tasks, and team members built with ASP.NET Core MVC.
The Project Management System provides a comprehensive interface for creating and managing projects, tasks, and team members. The application is developed using the MVC pattern and modern .NET technologies.
- Project Management: Create, edit, delete, and view projects
- Project Filtering: Filter by status (Open, In Progress, Closed)
- Task Management: Full CRUD operations for tasks linked to projects
- Task Assignment: Assign tasks to team members
- Member Management: Add and remove members from projects
- Detailed Views: View projects with associated tasks and members
- Backend: ASP.NET Core MVC (.NET 9.0)
- Language: C# 13.0 with nullable enable
- ORM: Entity Framework Core
- Database: In-Memory Database (for development)
- UI: Razor Views + HTML/CSS
- IDE: JetBrains Rider (recommended)
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.8" />
ProjectManagementSystem/
├── Controllers/ # MVC Controllers
│ ├── ProjectsController.cs
│ ├── TasksController.cs
│ ├── UsersController.cs
│ └── HomeController.cs
├── Models/ # Data Models
│ ├── Project.cs
│ ├── ProjectTask.cs
│ ├── User.cs
│ └── ProjectUser.cs
├── Data/ # Database Context
│ └── ApplicationDbContext.cs
├── Services/ # Business Logic
│ ├── Interfaces/
│ │ ├── IProjectService.cs
│ │ ├── IProjectTaskService.cs
│ │ └── IUserService.cs
│ └── Implementations/
│ ├── ProjectService.cs
│ ├── ProjectTaskService.cs
│ └── UserService.cs
├── Views/ # Razor Views
│ ├── Projects/
│ ├── Tasks/
│ ├── Users/
│ └── Shared/
└── Program.cs # Entry Point
- .NET 9.0 SDK
- JetBrains Rider or Visual Studio 2022
-
Clone the repository
git clone https://github.com/m1lean/ProjectManagementSystem.git cd ProjectManagementSystem
-
Restore dependencies
dotnet restore
-
Run the application
dotnet run
-
Open in browser
http://localhost:5000
- Open the project in Rider
- Build the project (Ctrl+Shift+B)
- Run the project (Ctrl+F5)
- Project - Project with name, description, and status
- ProjectTask - Task linked to a project and assigned to a user
- User - System user
- ProjectUser - Junction entity for project members (many-to-many)
- Project → Tasks (one-to-many)
- Project ↔ Members (many-to-many through ProjectUser)
- Task → User (many-to-one for assignment)
Method | Endpoint | Description |
---|---|---|
GET | /Projects |
List all projects |
GET | /Projects?status=Open |
Filter by status |
GET | /Projects/Details/{id} |
Project details |
GET | /Tasks?projectId={id} |
Project tasks |
GET | /Users |
List users |
GET | /Users/Participants?projectId={id} |
Project members |
The application automatically creates test data on startup:
- Sample users
- Demo project
- Related tasks and members
To use a real database (e.g., SQL Server), modify in Program.cs
:
// Replace
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseInMemoryDatabase("ProjectManagementDb"));
// With
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
- Database: Uses in-memory database, data is not persisted after restart
- Authentication: No authorization system
- Validation: Basic server-side validation only
- UI: Minimal interface without JavaScript
- Migrate to real database (SQL Server/PostgreSQL)
- Add authentication system (ASP.NET Core Identity)
- Improve UI with Bootstrap/modern CSS frameworks
- Add REST API endpoints
- Implement real-time notifications (SignalR)
- Add file attachments to tasks
- Role-based access control
- Mobile responsiveness
- Unit and integration tests
⭐ Don't forget to give the project a star if you found it helpful!