LearnQuest V1 is a comprehensive Learning Management System (LMS) designed for modern educational institutions. Built with cutting-edge technologies, it provides a secure, scalable, and feature-rich platform for online learning and course management.
- π Key Features
- ποΈ Architecture
- π οΈ Technology Stack
- β‘ Quick Start
- π§ Installation & Setup
- π Authentication & Security
- π API Documentation
- π― User Roles & Permissions
- π Course Management
- π Analytics & Reporting
- π Exam & Proctoring System
- πΎ Database Schema
- π Deployment
- π€ Contributing
- π Support
- Multi-level Course Structure: Courses β Levels β Sections β Content
- Rich Content Types: Videos, documents, interactive materials
- Course Tracks: Organized learning paths
- Skills Management: Skill tracking and validation
- Prerequisites: Course dependency management
- Multi-role System: Admin, Instructor, Student
- Enhanced Authentication: JWT with refresh tokens
- Account Security: Email verification, password reset
- User Profiles: Detailed profile management
- Learning Analytics: Personal progress tracking
- Secure Exam Engine: Time-limited, randomized questions
- Advanced Proctoring: Webcam monitoring, screen recording
- Anti-Cheating Measures: Browser lockdown, activity monitoring
- Automated Certificates: Digital certificates with verification
- Multiple Question Types: MCQ, Essay, True/False
- Real-time Dashboards: Role-based analytics
- Performance Metrics: Course completion, engagement rates
- Predictive Analytics: Learning outcome predictions
- Detailed Reports: Exportable data reports
- System Health Monitoring: Performance tracking
- SignalR Integration: Live notifications
- Course Forums: Student-instructor interaction
- Messaging System: Internal communication
- Progress Notifications: Automated updates
- Advanced Authentication: JWT + refresh token strategy
- Role-based Access Control: Granular permissions
- Security Audit Logs: Comprehensive activity tracking
- Data Encryption: At-rest and in-transit
- GDPR Compliance: Data protection standards
LearnQuest follows a Clean Architecture pattern with clear separation of concerns:
LearnQuestV1/
βββ π― LearnQuestV1.Api/ # Presentation Layer
β βββ Controllers/ # API Controllers
β βββ DTOs/ # Data Transfer Objects
β βββ Services/ # Business Logic
β βββ Middlewares/ # Custom Middleware
β βββ Configuration/ # App Configuration
β
βββ π§ LearnQuestV1.Core/ # Domain Layer
β βββ Models/ # Domain Entities
β βββ Enums/ # System Enumerations
β βββ Interfaces/ # Contracts
β βββ DTOs/ # Core DTOs
β
βββ πΎ LearnQuestV1.EF/ # Data Access Layer
βββ Application/ # DbContext
βββ Repositories/ # Data Repositories
βββ UnitOfWork/ # Unit of Work Pattern
βββ Migrations/ # Database Migrations
- Framework: ASP.NET Core 8.0
- Database: Entity Framework Core 9.0.5 + SQL Server
- Authentication: JWT Bearer Tokens
- Mapping: AutoMapper 14.0.0
- Email: MailKit 4.12.1
- Caching: In-Memory Caching
- Documentation: Swagger/OpenAPI
- Real-time: SignalR
- Password Hashing: PBKDF2 with SHA-256
- Token Management: JWT with refresh tokens
- CORS: Configured for React frontend
- HTTPS: TLS 1.3 enforcement
- Rate Limiting: Request throttling
- Logging: Serilog with file rotation
- Health Checks: Database connectivity
- Audit Trails: Security action logging
- Performance: Request/response monitoring
- CORS Policy: Configured for React (localhost:3000)
- API Design: RESTful with standardized responses
- WebSocket: SignalR for real-time features
- .NET 8.0 SDK or later
- SQL Server (Local/Express/Cloud)
- Visual Studio 2022 or VS Code
git clone https://github.com/3bdalrhmanS3d/LearnQuest.git
cd learnquest# Update connection string in appsettings.json
# Run migrations
dotnet ef database update -p LearnQuest.EF -s LearnQuest.Apicd LearnQuest.Api
dotnet run- API: https://localhost:7217
- Swagger UI: https://localhost:7217/swagger
- Health Check: https://localhost:7217/health
Create appsettings.Development.json:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=YOUR_SERVER;Initial Catalog=LearnQ_DBV3;Integrated Security=True;Connect Timeout=30;Encrypt=True;Trust Server Certificate=True"
},
"JWT": {
"ValidIss": "https://localhost:7217/",
"ValidAud": "https://localhost:7217",
"SecretKey": "YourSuperSecretKeyForJwtTokenThatIsLongEnoughToBeSecure123!"
},
"EmailSettings": {
"Host": "smtp.gmail.com",
"Port": 587,
"Username": "your-email@gmail.com",
"Password": "your-app-password",
"FromEmail": "noreply@learnquest.com",
"EnableSsl": true
},
"Security": {
"MaxFailedAttempts": 5,
"LockoutDurationMinutes": 30,
"RequireEmailConfirmation": true
}
}# Install EF tools
dotnet tool install --global dotnet-ef
# Create initial migration
dotnet ef migrations add InitialCreate -p LearnQuestV1.EF -s LearnQuestV1.Api
# Update database
dotnet ef database update -p LearnQuestV1.EF -s LearnQuestV1.ApiThe application automatically seeds:
- Default Admin: admin@learnquest.com / Yg1rb76y@Yg1rb76y
- Sample Courses: Programming, Data Science tracks
- Demo Users: 50 sample users for testing
Update Program.cs CORS settings:
options.AddPolicy("AllowReactApp", policy =>
policy.WithOrigins("http://localhost:3000") // Your frontend URL
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());- Access Token: 1-hour expiry, contains user claims
- Refresh Token: 7-day expiry, secure HTTP-only
- Auto-login Token: Optional persistent login
- Account Lockout: After 5 failed attempts
- Email Verification: Required for new accounts
- Password Requirements: Complex password policy
- Security Auditing: All actions logged
- Session Management: Multiple device detection
// Frontend example
const token = localStorage.getItem('accessToken');
fetch('/api/courses', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});POST /signup- Register new userPOST /signin- User loginPOST /verify-account- Email verificationPOST /refresh-token- Token refreshPOST /forgot-password- Password reset
GET /browse- Browse available coursesGET /{id}- Get course detailsPOST /- Create course (Instructor)PUT /{id}- Update course (Instructor)DELETE /{id}- Delete course (Instructor)
GET /- Get user profilePOST /update- Update profileGET /my-courses- Enrolled coursesPOST /upload-photo- Profile picture
GET /course-stats- Course statisticsGET /system-stats- System analytics (Admin)GET /performance-metrics- Performance data
POST /{examId}/register- Register for examPOST /{examId}/start- Start exam attemptPOST /{examId}/submit- Submit examGET /{examId}/certificate/{attemptId}- Get certificate
{
"success": true,
"message": "Operation completed successfully",
"data": { /* Response data */ },
"errors": [], // Validation errors if any
"timestamp": "2025-07-01T00:00:00Z"
}- System Management: Full system control
- User Management: Create/modify all users
- Course Oversight: Access to all courses
- Analytics: System-wide reports
- Security: Audit logs and security settings
- Course Creation: Create and manage courses
- Content Management: Upload materials, create exams
- Student Monitoring: Track student progress
- Grading: Manual grading and feedback
- Analytics: Course-specific reports
- Course Enrollment: Browse and enroll in courses
- Learning Progress: Track personal progress
- Exam Taking: Participate in assessments
- Certificates: Download earned certificates
- Profile Management: Update personal information
Course
βββ About Course Items (Features, Prerequisites)
βββ Course Skills (Technologies/Skills taught)
βββ Levels (Course modules)
β βββ Sections (Grouped content)
β βββ Content Items (Videos, documents, etc.)
βββ Enrollments (Student registrations)
βββ Reviews & Ratings
βββ Exams/Quizzes
- Video Content: Streaming video lessons
- Document Content: PDFs, presentations
- Interactive Content: Hands-on exercises
- Code Examples: Programming snippets
- External Resources: Links and references
- Completion Status: Per content item
- Time Spent: Learning session tracking
- Bookmarks: Save important content
- Notes: Personal annotations
- Learning Streak: Consecutive study days
- Progress Metrics: Completion percentages
- Time Investment: Hours spent learning
- Achievement Badges: Milestone rewards
- Performance Trends: Grade improvements
- Course Performance: Enrollment and completion rates
- Student Engagement: Activity and participation
- Content Effectiveness: Most/least engaging content
- Revenue Tracking: Course earnings
- Student Feedback: Reviews and ratings
- System Health: Performance metrics
- User Growth: Registration trends
- Course Popularity: Top performing courses
- Revenue Reports: Financial analytics
- Security Metrics: Security incident tracking
- Browser Lockdown: Prevents tab switching
- Screen Recording: Full session capture
- Webcam Monitoring: Facial recognition
- Audio Analysis: Background noise detection
- Activity Tracking: Mouse/keyboard monitoring
- Question Randomization: Unique question sets
- Time Limits: Per-question constraints
- Copy/Paste Prevention: Clipboard disabled
- Multiple Device Detection: Session validation
- Suspicious Activity Alerts: Real-time monitoring
- Live Monitoring: Real-time student view
- Alert System: Automated suspicious activity alerts
- Emergency Controls: Pause/evacuate sessions
- Communication Tools: Chat with students
- Incident Reporting: Detailed violation logs
- Digital Certificates: Secure PDF generation
- Verification System: QR code validation
- Blockchain Integration: Immutable records (planned)
- Skills Validation: Industry-recognized credentials
Users- Core user informationUserDetails- Extended profile dataAccountVerification- Email verificationRefreshTokens- Token managementUserVisitHistory- Login tracking
Courses- Course master dataCourseTracks- Learning pathsLevels- Course modulesSections- Content groupingsContents- Individual content itemsAboutCourses- Course descriptionsCourseSkills- Skill associations
CourseEnrollments- Student registrationsUserProgress- Learning progressUserContentActivity- Content interactionsUserBookmarks- Saved contentStudySessions- Learning sessions
Quizzes- Exam definitionsQuestions- Question bankQuizAttempts- Exam attemptsUserAnswers- Student responses
Payments- Payment recordsPaymentTransactions- Transaction logsDiscounts- Coupon system
- User β CourseEnrollments β Course (Many-to-Many)
- Course β Levels β Sections β Contents (Hierarchical)
- User β QuizAttempts β Quiz (Exam tracking)
- User β UserProgress β Course (Progress tracking)
# Clone repository
git clone https://github.com/3bdalrhmanS3d/LearnQuest.git
# Restore packages
dotnet restore
# Update database
dotnet ef database update -p LearnQuest.EF -s LearnQuest.Api
# Run application
dotnet run --project LearnQuest.Api- Connection Pooling: Configure for high traffic
- Caching Strategy: Redis for distributed caching
- CDN Integration: For static content delivery
- Load Balancing: Multiple instance deployment
- Database Optimization: Index optimization and query tuning
We welcome contributions to LearnQuest! Please follow these guidelines:
- 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
- Follow C# coding conventions
- Write comprehensive unit tests
- Update API documentation
- Ensure security best practices
- Clear description of changes
- Tests for new functionality
- Documentation updates
- Security impact assessment
- Documentation: Check this README and API docs
- Issues: Report bugs via GitHub Issues
- Discussions: Community Q&A and feature requests
- Email: abdalrhmansaad24@gmail.com
- .NET 8.0 or later
- SQL Server 2019 or later
- 4GB RAM minimum (8GB recommended)
- 2 CPU cores minimum
- 10GB storage space
- Database Connection: Check connection string format
- JWT Errors: Verify secret key configuration
- CORS Issues: Ensure frontend URL is whitelisted
- Email Delivery: Verify SMTP settings
Built with β€οΈ by the LearnQuest BackEnd Team