TicketSystem is a full-featured ticket management platform built with
ASP.NET Core MVC, Entity Framework Core, C#, and SQL.
It is designed as a portfolio and learning project focusing on clean architecture, real-world backend patterns, and relational database design.
- User creation, editing, and deletion
- Admin Dashboard
- Role-based access (
Admin,User) - Secure password hashing (Salt + Hash + Iteration Count)
- Safe deletion via Soft Delete or SetNull behavior
- Overview of all users
- Edit and delete user accounts
- Ticket and system analytics
- Manage roles and permissions
- Quick access to key management actions (users, tickets, assignments)
- Create and assign tickets
- Track status, priority, creator, and assignee
- Comment system per ticket
- Automatic history tracking for all changes
- Models for domain entities
- Services handling all business logic
- DbContext for EF Core persistence
- ViewModels for safe data binding
- Controllers kept thin and readable
- Razor Views with TagHelpers and validation
- Navigation properties
- Delete behaviors (Restrict, Cascade, SetNull)
- Migrations
- SQL-based relational database design
| Layer | Technologies |
|---|---|
| Backend | C#, .NET 8, ASP.NET Core MVC |
| Database | Entity Framework Core, PostgreSQL/SQLite |
| Frontend | Razor, HTML, CSS, Bootstrap |
| Tools | Git, GitHub, Postman, Visual Studio |
/TicketSystem
│
├── Controllers/ → MVC controllers (HTTP layer)
├── Models/ → Domain entities (User, Ticket, Comment, ...)
├── Services/ → Business logic (interfaces + implementations)
├── ViewModels/ → Models for views/forms
├── Data/
│ ├── TicketDbContext → Entity Framework Core context
│ └── Migrations/ → Database migrations
└── Views/ → Razor frontend
- Constructor-based Dependency Injection
- Clear separation between UI, business logic, and persistence
- PBKDF2 password hashing with Salt + Iteration Count
- EF Core SetNull delete pattern to preserve historical tickets
- Strong ViewModels to prevent over-posting
- Validation on both server and client
- Relational DB modeling with one-to-many and many-to-many patterns
git clone https://github.com/dengaertig/TicketSystem.git
cd TicketSystem
Edit the appsettings.json connection string.
dotnet ef database update
dotnet run
- Improved filtering & search
- Email notifications
- Analytics dashboard
- REST API endpoints
Dennis
📧 [email protected]
🎮 Discord: kenkolino
“Built with clean architecture, learning, and a lot of C# energy.”