A modern ASP.NET Core 9.0 web application built with clean architecture principles, featuring Identity management, role-based authorization, and a responsive admin dashboard.
This solution follows a layered architecture pattern with clear separation of concerns:
GiselX/
βββ GiselX.Web # Presentation Layer (ASP.NET Core MVC)
βββ GiselX.Service # Business Logic Layer
βββ GiselX.Service.Interface # Service Abstractions
βββ GiselX.Service.Dto # Data Transfer Objects
βββ GiselX.Repository # Data Access Layer
βββ GiselX.Repository.Interface # Repository Abstractions
βββ GiselX.Domain # Domain Models & Entities
βββ GiselX.Mapper # Object Mapping (Mapperly)
βββ GiselX.Common # Shared Utilities & Constants
- ASP.NET Core 9.0 - Built on the latest .NET framework
- ASP.NET Core Identity - Complete user authentication and authorization
- Role-Based Access Control (RBAC) - Fine-grained permission system
- Entity Framework Core - SQL Server & SQLite support
- Clean Architecture - Separation of concerns with repository and service patterns
- Mapperly - High-performance object mapping
- Excel Export - ClosedXML integration for data export
- Modern UI - Bootstrap 5 admin dashboard (Materio template)
- Gulp & Webpack - Frontend build pipeline
- .NET 9.0 SDK
- Node.js (for frontend assets)
- SQL Server or SQLite (configured via connection string)
- IDE: Visual Studio 2022, JetBrains Rider, or VS Code
git clone <repository-url>
cd GiselX# Restore .NET packages
dotnet restore
# Restore Node.js packages
cd GiselX.Web
npm installUpdate the connection string in GiselX.Web/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=GiselXDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}Or use SQLite (default):
{
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
}
}cd GiselX.Web
dotnet ef database updatecd GiselX.Web
npm run builddotnet run --project GiselX.WebNavigate to https://localhost:5001 or http://localhost:5000
The main web application containing:
- MVC Controllers and Views
- ASP.NET Core Identity configuration
- Authentication & Authorization setup
- Frontend assets (src/, wwwroot/)
- Database context
Key Technologies:
- ASP.NET Core MVC 9.0
- ASP.NET Core Identity
- Entity Framework Core
- Bootstrap 5 (Materio template)
Business logic layer containing service implementations for:
- Company management
- Service level management
- Business rules and validations
Data access layer implementing the repository pattern:
CompanyRepositoryServiceLevelRepository- Database operations and queries
Domain entities and models:
AppIdentityUser/AppIdentityRole- Identity entitiesCompany- Company entityServiceLevel- Service level entityPeriod- Period entityTransDist- Transaction distributionServelDeliveryEx/ServelReceiptEx- Service delivery/receipt extensions- Common models:
ListRequest,PagedList,PagedListRequest
Data Transfer Objects for:
CompanyDtoServiceLevelDtoPeriodDtoUserDtoRoleDto
Shared utilities and helpers:
PermissionConstants- Application permissionsExcelHelper- Excel export functionalityQueryableExtensions- LINQ extensions
Object mapping using Mapperly for high-performance mapping between entities and DTOs.
The application uses ASP.NET Core Identity with:
- User registration and login
- Email confirmation requirement
- Role-based authorization
- Custom permission-based policies
- Bearer token authentication support
- Session management (30-minute sliding expiration)
Supports both SQL Server and SQLite:
- Development: SQLite (app.db)
- Production: SQL Server (configure in appsettings.json)
Key tables:
- AspNetUsers / AspNetRoles (Identity)
- Companies
- ServiceLevels
- Periods
- TransDist
- ServelDeliveryEx / ServelReceiptEx
dotnet builddotnet testcd GiselX.Web
npm run build # Build assets
npx gulp watch # Watch for changes# Add new migration
dotnet ef migrations add <MigrationName> --project GiselX.Web
# Update database
dotnet ef database update --project GiselX.Web
# Remove last migration
dotnet ef migrations remove --project GiselX.WebConfigure in appsettings.json:
- Connection strings
- Logging levels
- Identity options (in Program.cs)
- Cookie settings
Customize in Program.cs:
- Password requirements
- Lockout settings
- Session timeout
- Email confirmation
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project uses the Materio Bootstrap template (MIT License) for its frontend design.
For questions or support, please open an issue in the repository.
Built with β€οΈ using ASP.NET Core 9.0