A structured, role-based deployment approval platform built for engineering teams.
DRMS is an ASP.NET Core MVC application for managing deployment requests through a structured, role-based approval workflow. It helps developers submit deployment requests, routes them through Tech Lead β QA β DevOps approvals, and gives administrators a consolidated view of request status and deployment history.
| Feature | Description |
|---|---|
| π Authentication | Cookie-based auth with role-aware redirects and BCrypt password hashing |
| π Request Creation | Submit deployments with project, environment, type, rollback plan & target date |
| π Approval Workflow | Multi-step approvals: Tech Lead β QA β DevOps |
| π Developer Dashboard | Track your requests and see deployment summaries at a glance |
| π‘οΈ Admin Panel | Filter and review all requests by status or project |
| π Audit History | Full deployment history tracking for every request |
| π€ Self-Service Signup | New users can register directly through the signup screen |
DRMS/
βββ π¦ DRMS.Domain/ # Entities and repository contracts
βββ βοΈ DRMS.Application/ # DTOs and application service logic
βββ ποΈ DRMS.Infrastructure/ # Dapper context and repository implementations
βββ π DRMS.Web/ # MVC controllers, Razor views, static assets
βββ ποΈ database/ # Schema, seed data, stored procedures, SQL tests
βββ π docs/ # Workflow and supporting documentation
βββ π§ DRMS.slnx # Solution file
The project follows a clean layered architecture:
DRMS.Web βββΊ DRMS.Application βββΊ DRMS.Domain
β β²
βΌ β
DRMS.Infrastructure βββββββββ
DRMS.Domainβ Core entities and repository interfaces (no dependencies)DRMS.Applicationβ DTOs and service-level business logicDRMS.Infrastructureβ Dapper + SQL Server stored procedure implementationsDRMS.Webβ Controllers, Razor views, auth, authorization policies, DI setup
Developer ββsubmitsβββΊ [ Submitted ]
β
Tech Lead reviews
β
[ Approved L1 ]
β
QA reviews
β
[ Approved L2 ]
β
DevOps reviews
β
[ Deployed ] β
| Role | Permissions |
|---|---|
| π¨βπ» Developer | Create & track own deployment requests |
| π§βπΌ Tech Lead | First approval step |
| π§ͺ QA | Quality approval step |
| βοΈ DevOps | Final deployment approval |
| π‘οΈ Admin | View all requests and full history |
- .NET 10 SDK
- Docker Desktop (recommended for SQL Server)
- A SQL client: SSMS, Azure Data Studio, or
sqlcmd
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong@Password" \
-p 1433:1433 --name drms-sqlserver \
-d mcr.microsoft.com/mssql/server:2022-latestRun the SQL scripts in order:
database/01_schema_and_seed.sql β Schema, master data & seed
database/02_stored_procedures.sql β All stored procedures
database/03_test_stored_procedures.sql β Optional: validate
cp DRMS.Web/appsettings.Development.example.json DRMS.Web/appsettings.Development.jsonEdit the file:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=DRMS;User Id=sa;Password=YOUR_PASSWORD;TrustServerCertificate=True;"
}
}Or use .NET user secrets:
dotnet user-secrets set "ConnectionStrings:DefaultConnection" \
"Server=localhost,1433;Database=DRMS;User Id=sa;Password=YOUR_PASSWORD;TrustServerCertificate=True;" \
--project DRMS.Webdotnet restore DRMS.slnx
dotnet build DRMS.slnx
dotnet run --project DRMS.WebOpen the URL printed in the terminal β it lands on the Login page. Create your first user via the Sign Up screen.
# Check if SQL Server is running
docker ps
# View SQL Server logs
docker logs -f drms-sqlserver
# Open an interactive SQL shell inside the container
docker exec -it drms-sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P 'YourPassword' -C
# Stop / Start the container
docker stop drms-sqlserver
docker start drms-sqlserverdotnet restore DRMS.slnx # Restore NuGet packages
dotnet build DRMS.slnx # Build the solution
dotnet run --project DRMS.Web # Run the web app- Passwords are hashed using BCrypt β no plaintext passwords stored anywhere
- Only
@lnt.comemail addresses are accepted at signup - Do not commit
appsettings.Development.jsonβ it is.gitignored - The
bin/andobj/build folders are also excluded from version control
Generated build folders (bin/, obj/) and local config files (appsettings.Development.json) are excluded via .gitignore so credentials never reach the repository.
Built as a capstone internship project β DRMS Β© 2026