Online Learning Management System built with .NET 8 MVC and MySQL. Features include user, course, module, quiz, and question management with role-based access control. Utilizes Entity Framework Core for database operations and Bootstrap for responsive design. Clone, configure, and run to get started.
C#
0
288 commits
updated Oct 5, 2026
A production-oriented online learning management system built with ASP.NET Core MVC (.NET 8), Entity Framework Core, MySQL, ASP.NET Core Identity, Bootstrap, and a responsive custom design system.
For courses configured with the default professional completion policy, a learner must:
Only after these requirements are satisfied may the platform issue a certificate. Direct certificate access also re-evaluates the completion rules.
The application uses a payment-gateway abstraction with a Paystack implementation for NGN checkout. The secret key is read from configuration and must never be committed to source control. The server initializes transactions and verifies the transaction reference and amount before marking an order as paid. Paystack's documentation recommends server-side initialization and verification before delivering digital value.
Required production configuration:
Paystack:SecretKey=<secret>
For Render or another deployment platform, configure this as a secret environment variable rather than committing it to a configuration file.
A manual admin MarkPaid action remains available for controlled reconciliation of offline/manual payments. It should be restricted to trusted finance/admin workflows in production.
Every course defaults to an applied capstone requirement. Course fields define the capstone title, description, and deliverables. Learners submit a project URL/repository and executive summary. Instructors/admins review submissions and can approve, reject, or request revisions. Approval is required before certification when RequireCapstone is enabled.
The platform provides editable Razor pages for:
/Legal/Terms/Legal/Privacy/Legal/RefundsThese are platform-specific starter policies and should be reviewed by the organisation's legal/privacy adviser before production use.
Clone the repository and open the project directory.
Provide a local DefaultConnection through appsettings.json, environment variables, or user secrets. Do not commit local or production secrets.
Provide Paystack:SecretKey if testing real checkout.
Restore and build:
dotnet restore dotnet build
Create a migration whenever the EF model changes:
dotnet ef migrations add
Apply migrations locally:
dotnet ef database update
Run:
dotnet run
Seed accounts are created only when the corresponding password configuration exists:
The application intentionally does not store seed passwords in source control.
The repository uses EF Core migrations to evolve the schema. Model changes must be accompanied by a generated migration and updated model snapshot. Review generated migrations before applying them to shared or production databases. For automated production deployment, prefer a reviewed migration script or migration bundle rather than giving the runtime application unnecessary schema-modification privileges.
Keep feature and hardening work on a dedicated branch, validate with:
dotnet restore
dotnet build
dotnet ef migrations list
dotnet ef database update
dotnet run
Then open a pull request into main after local validation and database migration review.
The current implementation adds payment and capstone fields/tables in addition to the learning-progress and assessment schema. If the local database reports an unknown-column/table error after pulling main, generate and apply the pending EF migration before starting the application.
Online Learning Management System built with .NET 8 MVC and MySQL. Features include user, course, module, quiz, and question management with role-based access control. Utilizes Entity Framework Core for database operations and Bootstrap for responsive design. Clone, configure, and run to get started.
C#
0
288 commits
updated Oct 5, 2026
A production-oriented online learning management system built with ASP.NET Core MVC (.NET 8), Entity Framework Core, MySQL, ASP.NET Core Identity, Bootstrap, and a responsive custom design system.
For courses configured with the default professional completion policy, a learner must:
Only after these requirements are satisfied may the platform issue a certificate. Direct certificate access also re-evaluates the completion rules.
The application uses a payment-gateway abstraction with a Paystack implementation for NGN checkout. The secret key is read from configuration and must never be committed to source control. The server initializes transactions and verifies the transaction reference and amount before marking an order as paid. Paystack's documentation recommends server-side initialization and verification before delivering digital value.
Required production configuration:
Paystack:SecretKey=<secret>
For Render or another deployment platform, configure this as a secret environment variable rather than committing it to a configuration file.
A manual admin MarkPaid action remains available for controlled reconciliation of offline/manual payments. It should be restricted to trusted finance/admin workflows in production.
Every course defaults to an applied capstone requirement. Course fields define the capstone title, description, and deliverables. Learners submit a project URL/repository and executive summary. Instructors/admins review submissions and can approve, reject, or request revisions. Approval is required before certification when RequireCapstone is enabled.
The platform provides editable Razor pages for:
/Legal/Terms/Legal/Privacy/Legal/RefundsThese are platform-specific starter policies and should be reviewed by the organisation's legal/privacy adviser before production use.
Clone the repository and open the project directory.
Provide a local DefaultConnection through appsettings.json, environment variables, or user secrets. Do not commit local or production secrets.
Provide Paystack:SecretKey if testing real checkout.
Restore and build:
dotnet restore dotnet build
Create a migration whenever the EF model changes:
dotnet ef migrations add
Apply migrations locally:
dotnet ef database update
Run:
dotnet run
Seed accounts are created only when the corresponding password configuration exists:
The application intentionally does not store seed passwords in source control.
The repository uses EF Core migrations to evolve the schema. Model changes must be accompanied by a generated migration and updated model snapshot. Review generated migrations before applying them to shared or production databases. For automated production deployment, prefer a reviewed migration script or migration bundle rather than giving the runtime application unnecessary schema-modification privileges.
Keep feature and hardening work on a dedicated branch, validate with:
dotnet restore
dotnet build
dotnet ef migrations list
dotnet ef database update
dotnet run
Then open a pull request into main after local validation and database migration review.
The current implementation adds payment and capstone fields/tables in addition to the learning-progress and assessment schema. If the local database reports an unknown-column/table error after pulling main, generate and apply the pending EF migration before starting the application.