LearnSphere is a comprehensive educational platform built with ASP.NET Web Forms that enables educational institutions to manage modules, quizzes, and student feedback. The platform supports multiple user roles including Students, Lecturers, and Administrators.
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Installation
- Configuration
- Database Migrations
- User Roles
- API Integrations
- Environment Variables
- Security
- Contributing
- License
- Email/password registration and login
- Google OAuth integration for single sign-on
- Role-based access control (Student, Lecturer, Admin)
- Profile management with profile picture support
- Create, edit, and delete modules
- Module enrollment for students
- Module content management for lecturers
- Announcements system
- File upload and content delivery
- Multiple question types:
- Multiple Choice
- True/False
- Fill in the Blank
- Matching Pairs
- Image-based questions
- Quiz grading and scoring
- Quiz history and results
- Time-limited assessments
- Automatic grading
- Student feedback submission
- Lecturer feedback response
- Feedback management for administrators
- Email notifications via SendGrid
- In-app notification system
- Real-time notification updates
- Admin dashboard
- User search functionality
- Account management
| Component | Technology |
|---|---|
| Framework | ASP.NET Web Forms 4.7.2 |
| Language | C# |
| ORM | Entity Framework 6 |
| Database | SQL Server (LocalDB) |
| Authentication | ASP.NET Identity + Google OAuth |
| Email Service | SendGrid API |
| Rich Text Editor | TinyMCE Cloud |
| IDE | Visual Studio 2022 |
LearnSphere/
├── AdminDashboard.aspx
├── Callback.aspx
├── Default.aspx
├── FeedbackManagement.aspx
├── Login.aspx
├── ModuleManagement.aspx
├── Profile.aspx
├── Register.aspx
├── Search.aspx
├── UserManagement.aspx
# Student Portal
Student/
├── Announcements.aspx
├── AttemptQuiz.aspx
├── Dashboard.aspx
├── Feedback.aspx
├── MyModules.aspx
├── QuizHistory.aspx
├── QuizzesList.aspx
├── QuizResults.aspx
├── ViewModule.aspx
├── Helpers/
│ ├── QuestionRenderer.cs
│ └── QuizHelper.cs
├── Services/
│ └── QuizService.cs
└── (Various .ashx handlers)
# Lecturer Portal
Lecturer/
├── Announcements.aspx
├── Dashboard.aspx
├── Enrollments.aspx
├── ModuleContent.aspx
├── Modules.aspx
├── Quizzes.aspx
├── QuizGrading.aspx
├── StudentFeedback.aspx
# Management Portal
Management/
└── Site.Master
# Core Components
App_Start/
└── IdentitySeed.cs
Content/
├── Admin.css
├── AuthFuturistic.css
├── Dashboard.css
├── LecturerSite.css
├── ProfileStyle.css
├── StudentSite.css
└── UserManagement.css
Helpers/
└── EmailHelper.cs
Migrations/
├── (Database migration files)
└── Configuration.cs
Models/
├── GradingStatistics.cs
├── IdentityModels.cs
└── MatchingPair.cs
Properties/
└── AssemblyInfo.cs
Uploads/
├── Content/ # Module content files
├── Questions/ # Quiz question images
└── Thumbnails/ # Image thumbnails
- Visual Studio 2026 (with .NET Framework 4.7.2)
- .NET Framework 4.7.2 or higher
- SQL Server Express 2019 or SQL Server LocalDB
- IIS Express (included with Visual Studio)
- Google OAuth credentials (Client ID + Secret)
- SendGrid API key for email notifications
- Optional: TinyMCE API key for rich text editing
git clone https://github.com/Maneet7805/Web-App.git
cd Web-AppCopy the example environment file:
cp .env.example .envEdit .env file with your credentials:
GoogleClientId=your_google_client_id
GoogleClientSecret=your_google_client_secret
SendGridApiKey=your_sendgrid_api_key
FromEmail=noreply@learnsphere.com
FromName=LearnSphere
EmailEnabled=true
BaseUrl=http://localhost:44300-
Open the solution file:
LearnSphere.slnx(recommended)- Or
LearnSphere.csproj
-
Restore NuGet packages:
- Right-click solution → Restore NuGet Packages
- Or run:
Update-Package -reinstall
- Press
F5or click Start - The application will open in your browser at
http://localhost:44300
The database will be created automatically on first run. Alternatively, run migrations:
Update-DatabaseThe application reads configuration from Web.config and environment variables:
<appSettings>
<!-- Google OAuth -->
<add key="GoogleClientId" value="" />
<add key="GoogleClientSecret" value="" />
<!-- SendGrid Email -->
<add key="SendGridApiKey" value="" />
<add key="FromEmail" value="" />
<add key="FromName" value="" />
<add key="EmailEnabled" value="" />
<add key="BaseUrl" value="" />
<!-- TinyMCE -->
<add key="TinyCloudApiKey" value="" />
</appSettings>Default connection uses LocalDB:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\LearnSphere.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>The project includes the following migrations:
| Migration | Description |
|---|---|
InitialCreate |
Core identity tables |
AddProfilePictureUrl |
Profile picture support |
InitialLearnSphereTables |
Module, Quiz, Question tables |
AddCompleteModuleFeatures |
Module content, enrollments |
EnhanceModuleContent |
Rich content support |
AddAssessmentFeatures |
Quiz assessments |
AddQuestionImageUrl |
Image questions |
AddUserNotifications |
In-app notifications |
- View and enroll in modules
- Take quizzes and view results
- Submit feedback
- Update profile
- Create and manage modules
- Upload module content
- Create and grade quizzes
- Manage enrollments
- View student feedback
- Post announcements
- Manage all users
- View site-wide statistics
- Manage feedback
- System configuration
Enable Google sign-in:
- Go to Google Cloud Console
- Create a new project
- Enable Google+ API (or Identity platform)
- Create OAuth credentials
- Set authorized redirect URIs:
http://localhost:44300/Callback.aspxhttps://yourdomain.com/Callback.aspx
- Copy Client ID and Secret to
.env
For email notifications:
- Sign up at SendGrid
- Create an API key
- Verify sender email
- Copy API key to
.env
For rich text editing in modules:
- Sign up at Tiny.cloud
- Get API key
- Add to
.env
| Variable | Required | Description |
|---|---|---|
GoogleClientId |
Yes | Google OAuth Client ID |
GoogleClientSecret |
Yes | Google OAuth Client Secret |
SendGridApiKey |
No | SendGrid API key for emails |
FromEmail |
No | Email sender address |
FromName |
No | Email sender name |
EmailEnabled |
No | Enable email (true/false) |
BaseUrl |
Yes | Application base URL |
TinyCloudApiKey |
No | TinyMCE API key |
- Never commit secrets to GitHub
- Use
.envfile for credentials (already gitignored) - Use environment variables in production
- Rotate API keys regularly
- Password hashing via ASP.NET Identity
- Role-based authorization
- SQL injection prevention via Entity Framework
- XSS prevention via output encoding
- CSRF protection via form tokens
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- ASP.NET Web Forms documentation
- Entity Framework documentation
- SendGrid API documentation
- Google OAuth documentation
For issues or questions:
- Open an issue on GitHub
- Check existing documentation
- Review the code inline comments
Built with LearnSphere © 2024











