About this software
About EduSphere
EduSphere is a self-hosted learning management system built with ASP.NET Core 10 MVC, C# and SQL Server, using plain ADO.NET and server-rendered Razor — no ORM and no front-end build step, so a buyer's developer can read every query and every page without learning a toolchain.
It covers the full journey: a searchable course catalogue, sections and lessons (video upload, YouTube/Vimeo embed, articles and PDFs), a video player that remembers where each student stopped, a quiz engine with timers and server-side grading, per-lesson progress tracking, and certificates issued automatically on completion with a QR code anyone can verify publicly.
Paid access works through Stripe Checkout, bank transfer or cash, with coupons, VAT and multi-currency pricing (USD base with AED conversion, built for the Middle East). Prices are stored once in a base currency and each payment records the exchange rate used, so a rate change never rewrites a historical invoice.
The admin panel covers courses, curriculum, quizzes, students, instructors, categories, coupons, payments, reviews, messages, certificates, currencies and settings — with Excel and print/PDF export on every list and an activity log recording every administrative change with user, IP and outcome.
Uploaded videos and PDFs are stored outside the web root and streamed only after an enrolment check, so a copied link is useless to a non-buyer. Full source code, database scripts, Docker setup and deployment documentation for Windows/IIS and Linux are included. Installs in about twenty minutes.
Why EduSphere
What makes it better
than the alternatives
- 01
No ORM, no build pipeline
Plain ADO.NET and server-rendered Razor mean every query is visible and there's no npm, bundler or lock file to maintain.
- 02
Paid content is genuinely protected
Videos live outside the web root and stream only after an enrolment check, so sharing a link gives a non-buyer nothing.
- 03
Payments verified server-side
Orders are repriced on submit and confirmed with Stripe directly through both a return check and a signed webhook, so the browser is never believed.
- 04
Multi-currency that never corrupts history
Prices are stored once in a base currency and every payment records the rate it used, so changing a rate leaves past invoices untouched.
- 05
Built-in audit trail
Every administrative change, sign-in and data export is recorded with user, IP address and outcome, with no extra configuration.
Catalogue
- search
category/level/pricefilters- sorting
- paging
- featured courses
- ratings
Courses
- sections
- lessons
- video upload
- YouTube/Vimeo embed
- articles
- PDF lessons
- free previews
Player
- resume playback
- per-lesson completion
- progress bar
- sidebar navigation
- protected streaming
Quizzes
- single choice
- multiple choice
- true/false
- timer
- attempt limits
- shuffling
- server-side grading
- explanations
Progress
- per-lesson tracking
- automatic percentage
- course completion
- my-learning dashboard
Certificates
- automatic issue
- printable PDF
- QR code
- public verification page
- revocation
Checkout
- coupons
- VAT
- invoice numbering
- order confirmation
- free enrolment
Payments
- Stripe Checkout
- signed webhooks
- bank transfer
- cash
- admin confirmation
- invoice records
Currency
- base currency pricing
- editable rates
- header switcher
- per-payment rate recording
Accounts
- registration
- email confirmation
- password reset
- profile
- avatar upload
- change password
Admin courses
- create
- edit
- publish
- archive
- curriculum editor
- lesson reordering
- thumbnail upload
Admin quizzes
- question builder
- option editor
- passing score
- attempt limits
- answer locking
Admin students
- search
- detail view
- deactivate
- unlock
- complimentary access
Admin commerce
- payments
- coupons
- currencies
- VAT settings
- Stripe key management
Admin content
- categories
- instructors
- reviews moderation
- contact inbox
- certificates
Admin system
- dashboard
- activity log
- site settings
- Excel and print/PDF export on every list
Security
- BCrypt hashing
- account lockout
- rate limiting
- antiforgery
- session invalidation
- encrypted payment keys
SEO
- meta tags
- Open Graph
- Twitter cards
- JSON-LD
- sitemap.xml
- robots.txt
- landing page
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| C# | — | — | Web, API, admin | 53.2% |
| C# (Razor) | — | — | Web pages | 19.8% |
| CSS | — | — | Styling | 12.2% |
| SQL | — | — | Database | 8.8% |
| HTML | — | — | Front-end | 3.9% |
| JavaScript | — | — | Front-end | 1.7% |
| PowerShell | — | — | Scripts | 0.3% |
- Primary language
- C#
- Framework
- C#
- Database
- SQL Server 2019+ (Express, Standard or Azure SQL)
- Authentication
- Email + password (BCrypt, work factor 11), cookie sessions, role-based access
- Licence
- Single-site
- Screens
- 50
- Database tables
- 22
- Supported languages
- English
- Browser support
- Chrome 110+, Edge 110+, Firefox 110+, Safari 16+
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| OS | Ubuntu 22.04 or Windows Server 2019+, .NET 10, SQL Server 2019+ | Ubuntu 22.04 or Windows Server 2019+, .NET 10, SQL Server 2019+ |
| Est. monthly hosting | $20 | $20 |
git clone <repo> /opt/edusphere && cd /opt/edusphere
echo "SA_PASSWORD=$(openssl rand -base64 24)" > .env
docker compose up -d --build
# Initialize database
PW=$(grep SA_PASSWORD .env | cut -d= -f2)
for f in schema seed demo-data; do
docker compose exec -T sql /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "$PW" -C -i "/scripts/$f.sql"
done
# App: :8080 — use Nginx for HTTPS
# Windows Server + IIS
dotnet publish src\EduSphere.Web -c Release -o .\publish
# Copy publish\ to C:\inetpub\EduSphere
sqlcmd -S localhost\SQLEXPRESS -E -C -i database\schema.sql
sqlcmd -S localhost\SQLEXPRESS -E -C -i database\seed.sql
sqlcmd -S localhost\SQLEXPRESS -E -C -i database\demo-data.sql
# IIS App Pool: No Managed Code
# Grant Modify access to App_Data, logs & DataProtection keys
# Configuration
# Copy appsettings.example.json → appsettings.json
# Set ConnectionStrings__EduSphereDb and DataProtection__KeyPath
# Demo__ShowCredentials=true only for demo sitesQuality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (1 minor)
Strong authentication and role guards; missing ownership checks on student profile reads. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
Release historyCurrent version
Updates in the last 90 days
Buyers
Updates included
-
1.0.1 Patch Current7 Oct 2026 ✓ Checked by a reviewer
- Public pages can now be embedded in an iframe by approved sites, and a build-breaking XML comment in Directory.Build.props is fixed.
-
1.0.0 First release 7 Oct 2026 ✓ Reviewed & audited
How updates work: versions add features and go through the full AI audit and human review. Patches are small fixes, audited and checked by a reviewer before release. Buyers get every update free for 1 year and are emailed the how-to-apply steps.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.