Naija Prime School — Sprint 1: Identity & User Management
In this video, I walk you through the complete end-to-end implementation of Sprint 1 of the Naija Prime School management system — built entirely in Visual Studio Code using .NET 10, Blazor Web App (Auto interactivity), Entity Framework Core 10, SQL Server, ASP.NET Core Identity, and Radzen Blazor 10.
Starting from an empty folder, you'll see exactly how the solution is scaffolded, how the four Clean Architecture layers (Domain, Application, Infrastructure, Web) fit together, and how every meaningful decision was made along the way.
What's covered in this video:
Prerequisites and Visual Studio Code setup (C# Dev Kit, .NET 10 SDK, SQL Server, Git, GitHub CLI)
Scaffolding the solution with the .NET CLI using the modern .slnx format
Creating the four Clean Architecture projects and wiring up project references
Installing the right NuGet packages for each layer
Building the Domain layer — BaseEntity, auditing & soft-delete interfaces, ApplicationUser, ApplicationRole, lookup tables (Title, Gender), and role name constants
Building the Application layer — ICurrentUser, OperationResult, DTOs with DataAnnotations, and service contracts (IUserService, ILookupService)
Building the Infrastructure layer — ApplicationDbContext with IdentityDbContext, model configuration, soft-delete global query filters, auditing inside SaveChanges, and the AddInfrastructure DI extension
Implementing UserService, LookupService, and the DatabaseInitializer that migrates and seeds roles, lookups, and the default SuperAdmin
Creating the first EF Core migration
Wiring up the Blazor Web host — Program.cs, cookie authentication, Identity options (lockout, password rules), authorization policies, and Radzen registration
CurrentUserAccessor, the logout endpoint, and the revalidating authentication state provider (so deactivated users are signed out within 30 minutes)
Building the Razor UI — App, Routes, _Imports, MainLayout, role-scoped NavMenu, the login page, the users list with server-side paging, add/edit user pages, the assign-roles page, the roles catalogue, and the admin password reset dialog
Applying a custom Nigerian green + gold theme over the Radzen base skin
Running the app locally, seeding the database, and configuring launch.json
Source control: writing a sensible .gitignore, committing on a sprint branch, and pushing to GitHub
At the end of the video, I run the application from the command prompt. The SuperAdmin couldn't log in because the app was running over HTTP, so I switched to Visual Studio 2026 and ran it over HTTPS — login succeeded, the dashboard loaded, the users list fetched all users from the database, and a new user was added successfully through the Add User page.
What Sprint 1 delivers:
Cookie-based authentication with Identity, seven seeded roles (SuperAdmin, HeadTeacher, Teacher, SchoolBursar, SchoolStoreKeeper, Parent, Student), lockout on failed sign-ins, revalidating auth state, a SuperAdmin-only user management workspace (list/search/filter/create/edit/activate/deactivate/reassign roles/reset password), automatic auditing, soft delete, lookup tables instead of enums, and a custom Nigerian-themed Radzen skin.
📦 Source Code
You can pull the complete source code for Sprint 1 from the GitHub branch here:
👉 https://github.com/benjaminsqlserver/NaijaPrimeSchool/tree/sprint/1-identity-and-user-management
📘 Implementation Guide (PDF)
You can also download the full Sprint 1 implementation guide (the same document narrated in this video) here:
👉 https://github.com/benjaminsqlserver/NaijaPrimeSchoolImplementationGuide/raw/main/Sprint%201%20-%20Implementation%20Guide.pdf
🎯 Coming up next: Sprint 2 picks up the academic domain — sessions, terms, classes, and subjects.
If you found this helpful, please like, subscribe, and hit the bell 🔔 so you don't miss Sprint 2.
Top comments (0)