ASP.NET Core 8 MVC · SQL Server · Entity Framework Core · Chart.js
| Module | Details |
|---|---|
| Authentication | Cookie auth · bcrypt password hashing · account lockout · change password |
| Student Management | Full CRUD · search/filter · soft delete · auto login account creation |
| Subject Management | Full CRUD · per-semester assignment · credit hours |
| Marks Entry | Internal + External (0–50 each) · auto grade/GPA · AJAX subject loading |
| Grade Engine | A+ / A / B+ / B / C / D / F scale · persisted computed TotalMarks column |
| GPA Engine | Credit-weighted GPA per semester · Distinction / Merit / Pass classification |
| Result Sheets | Per-student official result sheet · Excel export (ClosedXML) |
| Analytics Dashboard | 4 Chart.js charts · top students · dept pass rates · semester GPA trend |
| Audit Log | Every login, CRUD action logged with username + IP |
| Student Portal | Role-based student view of own marks, results, GPA |
- .NET 8 SDK
- SQL Server (LocalDB, Express, or full) — or update connection string for any SQL Server edition
- Visual Studio 2022 / VS Code / Rider
cd StudentPortalEdit appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=StudentPortalDb;Trusted_Connection=True;TrustServerCertificate=True"
}For SQL Server Express: Server=.\\SQLEXPRESS;Database=StudentPortalDb;Trusted_Connection=True;TrustServerCertificate=True
dotnet restore
dotnet ef database updateThe app also auto-runs migrations and seeds data on first startup via
Program.cs.
dotnet runNavigate to https://localhost:5001 (or the port shown in terminal).
| Role | Username | Password |
|---|---|---|
| Administrator | admin |
Admin@123 |
| Student | s001 |
Student@123 |
| Student | s002 |
Student@123 |
| Student | s003 |
Student@123 |
New students you add get username = StudentCode (lowercase), password = Student@123.
StudentPortal/
├── Controllers/
│ ├── AccountController.cs # Login / logout / change password
│ ├── DashboardController.cs # Admin dashboard
│ ├── StudentsController.cs # Student CRUD
│ ├── SubjectsController.cs # Subject CRUD
│ ├── MarksController.cs # Marks entry/edit + AJAX
│ ├── ResultsController.cs # Result sheets + Excel export
│ ├── AnalyticsController.cs # Analytics charts
│ └── StudentPortalController.cs # Student-side portal
├── Models/
│ ├── User.cs Student.cs Subject.cs Mark.cs AuditLog.cs
├── Services/
│ ├── AuthService.cs # Login validation, lockout, audit
│ ├── StudentService.cs # Student business logic
│ ├── SubjectService.cs # Subject business logic
│ ├── MarksService.cs # Marks CRUD + grade calculation
│ ├── ResultService.cs # Result sheet + GPA computation
│ ├── AnalyticsService.cs # Chart data aggregation
│ ├── ExportService.cs # Excel export (ClosedXML)
│ └── GradeHelper.cs # Grade/GPA calculation algorithms
├── Data/
│ ├── ApplicationDbContext.cs # EF Core context
│ └── DbSeeder.cs # Demo data seeder
├── ViewModels/
│ └── AllViewModels.cs # All view models
├── Views/ # Razor views per controller
├── wwwroot/css/site.css # Full CSS design system
├── wwwroot/js/site.js
└── Migrations/ # EF Core migration
| Grade | Range | Grade Point |
|---|---|---|
| A+ | 85–100 | 4.0 |
| A | 80–84 | 4.0 |
| B+ | 70–79 | 3.5 |
| B | 65–69 | 3.0 |
| C | 55–64 | 2.0 |
| D | 45–54 | 1.0 |
| F | 0–44 | 0.0 |
GPA Formula: Σ(GradePoint × Credits) / Total Credits
dotnet publish -c Release -o ./publishHost the publish/ folder in IIS with .NET 8 Hosting Bundle installed.
az webapp up --name <your-app-name> --resource-group <rg> --runtime "DOTNET:8"FROM mcr.microsoft.com/dotnet/aspnet:8.0
COPY publish/ .
ENTRYPOINT ["dotnet", "StudentPortal.dll"]- BCrypt password hashing (cost factor 11)
- Account lockout after 5 failed attempts (15-minute lockout)
- Cookie-based auth with sliding expiration (8 hours)
- Role-based authorization (
[Authorize(Roles = "Admin")]) - Anti-forgery tokens on all POST forms
- Soft delete (students are deactivated, not hard-deleted)
- Full audit log of all actions
- Parent portal
- Email notifications (SendGrid)
- REST API layer for mobile app
- AI performance prediction
- Multi-semester GPA tracking
- Docker containerization