A modern, action-packed task management application built with ASP.NET Core 8.0, Entity Framework Core, and Bootstrap 5. Perfect for organizing projects, managing tasks, and collaborating with team members.
- Complete user authentication using ASP.NET Core Identity
- Register, Login, and Logout functionality
- Role-based access control (Admin, User)
- Secure password management
- Authorization checks on all protected resources
- Create, edit, and delete projects
- View all your projects with search functionality
- Project completion percentage progress bars
- Only project owners can edit/delete their projects
- Cascade delete related tasks when project is deleted
- Full CRUD operations for tasks within projects
- Task properties:
- Title & Description: Clear task identification
- Status: To Do, In Progress, Done
- Priority: Low, Medium, High
- Deadline: Track when tasks are due
- Assignment: Assign tasks to team members
- Comments: Collaborate with task comments
- Overview of your workload:
- Total projects count
- Total tasks count
- Overdue tasks count
- Task distribution chart (To Do, In Progress, Done)
- Recent tasks list
- Visual statistics with icons and cards
- Real-time data updates
- Search projects by name
- Search tasks by title
- Filter tasks by status
- Filter tasks by priority
- Combined search and filter functionality
- Add comments to tasks
- View all comments with timestamps
- Display commenter information
- Ordered by most recent first
- Direct feedback on task progress
- Framework: ASP.NET Core 8.0
- Database: SQL Server with Entity Framework Core (Code-First)
- ORM: Entity Framework Core with migrations
- Authentication: ASP.NET Core Identity
- Mapping: AutoMapper
- Validation: Server-side & Client-side validation
- UI Framework: Bootstrap 5
- Icons: Font Awesome 5.15.4
- Alerts: SweetAlert2
- JavaScript: jQuery with unobtrusive validation
- Charts: Chart.js for dashboard visualization
TaskManagementSystem/
├── Controllers/ # MVC Controllers
│ ├── AccountController.cs
│ ├── DashboardController.cs
│ ├── ProjectsController.cs
│ └── TasksController.cs
├── Views/ # Razor Views
│ ├── Account/
│ ├── Dashboard/
│ ├── Projects/
│ ├── Tasks/
│ └── Shared/
├── Models/ # Database Models/Entities
│ ├── ApplicationUser.cs
│ ├── Project.cs
│ ├── Task.cs
│ ├── Comment.cs
│ ├── TaskStatus.cs
│ └── TaskPriority.cs
├── ViewModels/ # View-specific Models
├── Repositories/ # Data Access Layer
├── Data/ # DbContext & Migrations
├── wwwroot/ # Static files (CSS, JS, Images)
└── Program.cs # Application configuration
- Id (PK)
- UserName, Email
- Projects (1:N)
- Tasks (1:N)
- Comments (1:N)
- Id (PK)
- Name, Description
- CreatedDate
- OwnerId (FK to Users)
- Tasks (1:N)
- Id (PK)
- Title, Description
- Status (Enum: ToDo, InProgress, Done)
- Priority (Enum: Low, Medium, High)
- Deadline (DateTime)
- ProjectId (FK)
- AssignedUserId (FK to Users)
- CreatedAt
- Comments (1:N)
- Id (PK)
- Content
- CreatedAt
- TaskId (FK)
- UserId (FK to Users)
User (1) -------- * (Projects) : One user can own many projects
User (1) -------- * (Tasks) : One user can be assigned many tasks
User (1) -------- * (Comments) : One user can write many comments
Project (1) ---- * (Tasks) : One project contains many tasks
Task (1) -------- * (Comments) : One task has many comments
- .NET 8.0 SDK or later
- SQL Server (LocalDB or Express)
- Visual Studio 2022 or VS Code
-
Clone or extract the repository
cd TaskManagementSystem -
Configure Database Connection
- Open
appsettings.json - Update the
DefaultConnectionstring if needed:
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TaskManagementSystem;Trusted_Connection=True;" }
- Open
-
Install Dependencies
dotnet restore
-
Apply Database Migrations
dotnet ef database update
Or using Package Manager Console:
Update-Database -
Run the Application
dotnet run
The application will be available at:
https://localhost:7xxx
-
Website Redesign (Admin's project)
- Design new homepage
- Develop login page
-
Mobile App Development (User1's project)
- Setup database
- Users can only view/manage their own projects
- Only project owners can edit or delete projects
- Users can see tasks assigned to them or in their projects
- Tasks with deadline < today and status ≠ Done are marked as overdue
- Visual indicators on both task lists and details pages
- Overdue tasks appear in the dashboard count
- Project completion percentage calculated automatically
- Progress bar visualization on project cards
- Task distribution chart on dashboard
- Comments are displayed in task details page
- Sorted by most recent first
- Shows commenter name and timestamp
- Simple text-based commenting
GET /Account/Login- Login pagePOST /Account/Login- Login submissionGET /Account/Register- Register pagePOST /Account/Register- Register submissionPOST /Account/Logout- Logout
GET /Projects/Index- List all user's projectsGET /Projects/Create- Create project formPOST /Projects/Create- Create project submissionGET /Projects/Edit/{id}- Edit project formPOST /Projects/Edit/{id}- Edit project submissionPOST /Projects/Delete/{id}- Delete project
GET /Tasks/Index?projectId={id}- List project tasksGET /Tasks/Create?projectId={id}- Create task formPOST /Tasks/Create- Create task submissionGET /Tasks/Edit/{id}- Edit task formPOST /Tasks/Edit/{id}- Edit task submissionGET /Tasks/Details/{id}- View task detailsPOST /Tasks/Delete/{id}- Delete taskPOST /Tasks/AddComment- Add comment to task
GET /Dashboard/Index- User dashboard
GET /Home/Index- Landing page / Home
- Required field validation
- String length validation
- Email format validation
- Password strength validation
- Authorization checks
- jQuery Validation
- HTML5 form validation
- Real-time field validation
- Error messages display
- Authentication: ASP.NET Core Identity
- Authorization: Role-based and resource-based authorization
- CSRF Protection: AntiForgery tokens on all forms
- SQL Injection Prevention: Entity Framework parameterized queries
- Password Security: Hashed and salted passwords
- HTTPS: Enabled in production
- Clean, light-themed interface
- Gradient backgrounds and shadows
- Smooth animations and transitions
- Responsive design (mobile, tablet, desktop)
- Hover effects on cards and buttons
- SweetAlert2 confirmation dialogs
- Progress bars with percentages
- Status and priority badges
- Icon-rich interface using Font Awesome
- Semantic HTML
- ARIA labels and roles
- Keyboard navigation support
- Color contrast compliance
- Clear form labels
- Async/await for all database operations
- Entity Framework lazy loading considerations
- Efficient LINQ queries
- Bootstrap CDN for fast CSS loading
- Minified CSS and JavaScript
- Optimized database queries with proper indexing
- Custom error pages
- User-friendly error messages
- Server-side exception logging
- Client-side form validation
- Graceful degradation
- SignalR Integration: Real-time comment notifications
- Email Notifications: Notify users of task assignments and deadlines
- File Attachments: Attach files to tasks
- Activity Log: Track all changes to projects and tasks
- Pagination: Implement pagination for large lists
- Advanced Filtering: More complex filter combinations
- Recurring Tasks: Support for recurring task creation
- Task Dependencies: Define task dependencies and workflows
- Team Collaboration: Share projects with team members
- Mobile App: Native mobile application
- Verify SQL Server is running
- Check connection string in appsettings.json
- Ensure LocalDB is installed (comes with Visual Studio)
# Remove last migration
dotnet ef migrations remove
# Add migration
dotnet ef migrations add MigrationName
# Update database
dotnet ef database update- Change the port in
Properties/launchSettings.json - Or use:
dotnet run --urls="https://localhost:8443"
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is open source and available under the MIT License.
For issues and questions, please open an issue in the repository.
Built with El-Hussieny El-Nemr❤️ using ASP.NET Core