Skip to content

m1lean/ProjectManagementSystem

Repository files navigation

Project Management System

A web application for managing projects, tasks, and team members built with ASP.NET Core MVC.

πŸ“‹ About the Project

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.

✨ Key Features

  • 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

πŸ›  Tech Stack

  • 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)

πŸ“¦ Dependencies (NuGet Packages)

<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" />

πŸ— Project Architecture

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

πŸš€ Getting Started

Prerequisites

Installation and Running

  1. Clone the repository

    git clone https://github.com/m1lean/ProjectManagementSystem.git
    cd ProjectManagementSystem
  2. Restore dependencies

    dotnet restore
  3. Run the application

    dotnet run
  4. Open in browser

    http://localhost:5000
    

Running in JetBrains Rider

  1. Open the project in Rider
  2. Build the project (Ctrl+Shift+B)
  3. Run the project (Ctrl+F5)

πŸ“Š Data Model

Core Entities

  • 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)

Relationships

  • Project β†’ Tasks (one-to-many)
  • Project ↔ Members (many-to-many through ProjectUser)
  • Task β†’ User (many-to-one for assignment)

🌐 API Endpoints

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

πŸ§ͺ Test Data

The application automatically creates test data on startup:

  • Sample users
  • Demo project
  • Related tasks and members

πŸ”§ Configuration

Database Switch

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));

🚧 Current Limitations

  • 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

🎯 Roadmap

  • 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!

About

A web application for managing projects, tasks, and team members built with ASP.NET Core MVC.

Resources

License

Stars

Watchers

Forks

Packages

No packages published