ToDoList App is a modern web application built using ASP.NET Core MVC that helps users organize and track their daily tasks through a clean category-based system.
Each user gets a personal workspace with full control over their categories and tasks, backed by secure authentication and role-based authorization.
- Register & login with secure authentication
- Auto-created General category on registration (protected — cannot be edited or deleted)
- Create, update, and delete categories
- Create, update, and delete tasks inside any category
- Search categories by name
- Filter and sort tasks by priority and status
- View task details in a popup modal
- View all tasks across all categories in one page
- All user features included
- Access the Users Management page
- View all registered users with their roles
Presentation Layer (PL)
ASP.NET Core MVC — Controllers, Views, ViewModels
↓
Business Logic Layer (BLL)
Services, DTOs, AutoMapper, Result Pattern
↓
Data Access Layer (DAL)
Generic Repository, Unit of Work, EF Core, Entities
↓
SQL Server Database
ToDoListApp
│
├── ToDoListApp.PL ← Presentation Layer
│ ├── Controllers
│ ├── Views
│ ├── ViewModels
│ └── wwwroot
│
├── ToDoListApp.BLL ← Business Logic Layer
│ ├── Services
│ ├── DTOs
│ └── Interfaces
│
├── ToDoListApp.DAL ← Data Access Layer
│ ├── Entities
│ ├── Context
│ ├── Repositories
│ └── Migrations
| Entity | Description |
|---|---|
| ApplicationUser | ASP.NET Identity user |
| Category | Groups tasks per user — includes a protected General category |
| ToDoItem | A task with title, description, priority, and completion status |
Register → Auto-create General Category
↓
Categories Page → Open Category
↓
Tasks Page → Create / Update / Delete Tasks
| Pattern / Concept | Usage |
|---|---|
| 3-Tier Architecture | Separation of concerns across PL, BLL, DAL |
| Generic Repository | Reusable data access for all entities |
| Unit of Work | Single transaction management across repositories |
| Dependency Injection | Built-in ASP.NET Core DI for all services and repositories |
| AutoMapper | Mapping between Entities ↔ DTOs ↔ ViewModels |
| Result Pattern | Consistent IsSuccess, Message, Data responses from services |
- ASP.NET Core Identity
- Roles:
Admin,User - General category is protected per user — cannot be edited or deleted
[Authorize]and[Authorize(Roles = "Admin")]on controllers- Cookie-based authentication with persistent login
| Technology | Purpose |
|---|---|
| ASP.NET Core MVC | Web framework |
| Entity Framework Core | ORM & Code First Migrations |
| SQL Server | Database |
| ASP.NET Core Identity | Authentication & Authorization |
| AutoMapper | Object mapping |
| JavaScript | Client-side interactions & modals |
| LINQ | Data querying |
| Generic Repository + UnitOfWork | Data abstraction & transaction management |
git clone https://github.com/Gargera/ToDoListApp.git
cd ToDoListAppEdit ToDoListApp.PL/appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=ToDoListDb;Trusted_Connection=True;TrustServerCertificate=True;"
}dotnet restoredotnet ef database update --project ToDoListApp.DAL --startup-project ToDoListApp.PLdotnet run --project ToDoListApp.PLGitHub: https://github.com/Gargera