{"id":29117269,"url":"https://github.com/3bdalrhmans3d/learnquest","last_synced_at":"2026-05-18T06:35:34.374Z","repository":{"id":297282798,"uuid":"995480331","full_name":"3bdalrhmanS3d/LearnQuest","owner":"3bdalrhmanS3d","description":"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.","archived":false,"fork":false,"pushed_at":"2025-07-03T12:44:00.000Z","size":2763,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-20T09:27:22.228Z","etag":null,"topics":["api","cache","clean-architecture","dotnet","dto-pattern","elearning-platform","email-notification","entity-framework-core","jwt","notification","repository-pattern","services","signalr","sqlserver"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3bdalrhmanS3d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-03T14:43:28.000Z","updated_at":"2025-07-19T06:35:27.000Z","dependencies_parsed_at":"2025-06-12T16:33:32.764Z","dependency_job_id":"e96fdccb-093e-4b68-8e73-7c00024254e5","html_url":"https://github.com/3bdalrhmanS3d/LearnQuest","commit_stats":null,"previous_names":["3bdalrhmans3d/learnquest"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/3bdalrhmanS3d/LearnQuest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3bdalrhmanS3d%2FLearnQuest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3bdalrhmanS3d%2FLearnQuest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3bdalrhmanS3d%2FLearnQuest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3bdalrhmanS3d%2FLearnQuest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3bdalrhmanS3d","download_url":"https://codeload.github.com/3bdalrhmanS3d/LearnQuest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3bdalrhmanS3d%2FLearnQuest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33167685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cache","clean-architecture","dotnet","dto-pattern","elearning-platform","email-notification","entity-framework-core","jwt","notification","repository-pattern","services","signalr","sqlserver"],"created_at":"2025-06-29T11:37:52.915Z","updated_at":"2026-05-18T06:35:34.344Z","avatar_url":"https://github.com/3bdalrhmanS3d.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 LearnQuest V1 - Advanced Learning Management System\n\n![LearnQuest](https://img.shields.io/badge/LearnQuest-v1.0-blue.svg)\n![.NET](https://img.shields.io/badge/.NET-8.0-purple.svg)\n![Entity Framework](https://img.shields.io/badge/Entity%20Framework-9.0.5-green.svg)\n\nLearnQuest 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.\n\n## 📋 Table of Contents\n\n- [🌟 Key Features](#-key-features)\n- [🏗️ Architecture](#️-architecture)\n- [🛠️ Technology Stack](#️-technology-stack)\n- [⚡ Quick Start](#-quick-start)\n- [🔧 Installation \u0026 Setup](#-installation--setup)\n- [🔑 Authentication \u0026 Security](#-authentication--security)\n- [📚 API Documentation](#-api-documentation)\n- [🎯 User Roles \u0026 Permissions](#-user-roles--permissions)\n- [🎓 Course Management](#-course-management)\n- [📊 Analytics \u0026 Reporting](#-analytics--reporting)\n- [🔒 Exam \u0026 Proctoring System](#-exam--proctoring-system)\n- [💾 Database Schema](#-database-schema)\n- [🚀 Deployment](#-deployment)\n- [🤝 Contributing](#-contributing)\n- [📞 Support](#-support)\n\n## 🌟 Key Features\n\n### 📚 **Comprehensive Course Management**\n\n- **Multi-level Course Structure**: Courses → Levels → Sections → Content\n- **Rich Content Types**: Videos, documents, interactive materials\n- **Course Tracks**: Organized learning paths\n- **Skills Management**: Skill tracking and validation\n- **Prerequisites**: Course dependency management\n\n### 👥 **Advanced User Management**\n\n- **Multi-role System**: Admin, Instructor, Student\n- **Enhanced Authentication**: JWT with refresh tokens\n- **Account Security**: Email verification, password reset\n- **User Profiles**: Detailed profile management\n- **Learning Analytics**: Personal progress tracking\n\n### 🏆 **Examination \u0026 Certification System**\n\n- **Secure Exam Engine**: Time-limited, randomized questions\n- **Advanced Proctoring**: Webcam monitoring, screen recording\n- **Anti-Cheating Measures**: Browser lockdown, activity monitoring\n- **Automated Certificates**: Digital certificates with verification\n- **Multiple Question Types**: MCQ, Essay, True/False\n\n### 📊 **Analytics \u0026 Dashboard**\n\n- **Real-time Dashboards**: Role-based analytics\n- **Performance Metrics**: Course completion, engagement rates\n- **Predictive Analytics**: Learning outcome predictions\n- **Detailed Reports**: Exportable data reports\n- **System Health Monitoring**: Performance tracking\n\n### 🔔 **Real-time Communication**\n\n- **SignalR Integration**: Live notifications\n- **Course Forums**: Student-instructor interaction\n- **Messaging System**: Internal communication\n- **Progress Notifications**: Automated updates\n\n### 🔒 **Enterprise Security**\n\n- **Advanced Authentication**: JWT + refresh token strategy\n- **Role-based Access Control**: Granular permissions\n- **Security Audit Logs**: Comprehensive activity tracking\n- **Data Encryption**: At-rest and in-transit\n- **GDPR Compliance**: Data protection standards\n\n## 🏗️ Architecture\n\nLearnQuest follows a **Clean Architecture** pattern with clear separation of concerns:\n\n```\nLearnQuestV1/\n├── 🎯 LearnQuestV1.Api/          # Presentation Layer\n│   ├── Controllers/              # API Controllers\n│   ├── DTOs/                    # Data Transfer Objects\n│   ├── Services/                # Business Logic\n│   ├── Middlewares/             # Custom Middleware\n│   └── Configuration/           # App Configuration\n│\n├── 🧠 LearnQuestV1.Core/        # Domain Layer\n│   ├── Models/                  # Domain Entities\n│   ├── Enums/                   # System Enumerations\n│   ├── Interfaces/              # Contracts\n│   └── DTOs/                    # Core DTOs\n│\n└── 💾 LearnQuestV1.EF/          # Data Access Layer\n    ├── Application/             # DbContext\n    ├── Repositories/            # Data Repositories\n    ├── UnitOfWork/             # Unit of Work Pattern\n    └── Migrations/             # Database Migrations\n```\n\n## 🛠️ Technology Stack\n\n### **Backend**\n\n- **Framework**: ASP.NET Core 8.0\n- **Database**: Entity Framework Core 9.0.5 + SQL Server\n- **Authentication**: JWT Bearer Tokens\n- **Mapping**: AutoMapper 14.0.0\n- **Email**: MailKit 4.12.1\n- **Caching**: In-Memory Caching\n- **Documentation**: Swagger/OpenAPI\n- **Real-time**: SignalR\n\n### **Security**\n\n- **Password Hashing**: PBKDF2 with SHA-256\n- **Token Management**: JWT with refresh tokens\n- **CORS**: Configured for React frontend\n- **HTTPS**: TLS 1.3 enforcement\n- **Rate Limiting**: Request throttling\n\n### **Monitoring \u0026 Logging**\n\n- **Logging**: Serilog with file rotation\n- **Health Checks**: Database connectivity\n- **Audit Trails**: Security action logging\n- **Performance**: Request/response monitoring\n\n### **Frontend Integration**\n\n- **CORS Policy**: Configured for React (localhost:3000)\n- **API Design**: RESTful with standardized responses\n- **WebSocket**: SignalR for real-time features\n\n## ⚡ Quick Start\n\n### Prerequisites\n\n- **.NET 8.0 SDK** or later\n- **SQL Server** (Local/Express/Cloud)\n- **Visual Studio 2022** or **VS Code**\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/3bdalrhmanS3d/LearnQuest.git\ncd learnquest\n```\n\n### 2. Database Setup\n\n```bash\n# Update connection string in appsettings.json\n# Run migrations\ndotnet ef database update -p LearnQuest.EF -s LearnQuest.Api\n```\n\n### 3. Run the API\n\n```bash\ncd LearnQuest.Api\ndotnet run\n```\n\n### 4. Access the Application\n\n- **API**: \u003chttps://localhost:7217\u003e\n- **Swagger UI**: \u003chttps://localhost:7217/swagger\u003e\n- **Health Check**: \u003chttps://localhost:7217/health\u003e\n\n## 🔧 Installation \u0026 Setup\n\n### **Step 1: Environment Configuration**\n\nCreate `appsettings.Development.json`:\n\n```json\n{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Data Source=YOUR_SERVER;Initial Catalog=LearnQ_DBV3;Integrated Security=True;Connect Timeout=30;Encrypt=True;Trust Server Certificate=True\"\n  },\n  \"JWT\": {\n    \"ValidIss\": \"https://localhost:7217/\",\n    \"ValidAud\": \"https://localhost:7217\",\n    \"SecretKey\": \"YourSuperSecretKeyForJwtTokenThatIsLongEnoughToBeSecure123!\"\n  },\n  \"EmailSettings\": {\n    \"Host\": \"smtp.gmail.com\",\n    \"Port\": 587,\n    \"Username\": \"your-email@gmail.com\",\n    \"Password\": \"your-app-password\",\n    \"FromEmail\": \"noreply@learnquest.com\",\n    \"EnableSsl\": true\n  },\n  \"Security\": {\n    \"MaxFailedAttempts\": 5,\n    \"LockoutDurationMinutes\": 30,\n    \"RequireEmailConfirmation\": true\n  }\n}\n```\n\n### **Step 2: Database Initialization**\n\n```bash\n# Install EF tools\ndotnet tool install --global dotnet-ef\n\n# Create initial migration\ndotnet ef migrations add InitialCreate -p LearnQuestV1.EF -s LearnQuestV1.Api\n\n# Update database\ndotnet ef database update -p LearnQuestV1.EF -s LearnQuestV1.Api\n```\n\n### **Step 3: Seed Default Data**\n\nThe application automatically seeds:\n\n- **Default Admin**: \u003cadmin@learnquest.com\u003e / Yg1rb76y@Yg1rb76y\n- **Sample Courses**: Programming, Data Science tracks\n- **Demo Users**: 50 sample users for testing\n\n### **Step 4: Configure CORS for Frontend**\n\nUpdate `Program.cs` CORS settings:\n\n```csharp\noptions.AddPolicy(\"AllowReactApp\", policy =\u003e\n    policy.WithOrigins(\"http://localhost:3000\") // Your frontend URL\n          .AllowAnyHeader()\n          .AllowAnyMethod()\n          .AllowCredentials());\n```\n\n## 🔑 Authentication \u0026 Security\n\n### **JWT Token Strategy**\n\n- **Access Token**: 1-hour expiry, contains user claims\n- **Refresh Token**: 7-day expiry, secure HTTP-only\n- **Auto-login Token**: Optional persistent login\n\n### **Security Features**\n\n- **Account Lockout**: After 5 failed attempts\n- **Email Verification**: Required for new accounts\n- **Password Requirements**: Complex password policy\n- **Security Auditing**: All actions logged\n- **Session Management**: Multiple device detection\n\n### **API Authentication**\n\n```javascript\n// Frontend example\nconst token = localStorage.getItem('accessToken');\nfetch('/api/courses', {\n  headers: {\n    'Authorization': `Bearer ${token}`,\n    'Content-Type': 'application/json'\n  }\n});\n```\n\n## 📚 API Documentation\n\n### **Base URL**: `https://localhost:7217/api`\n\n### **Core Endpoints**\n\n#### **Authentication** (`/api/auth`)\n\n- `POST /signup` - Register new user\n- `POST /signin` - User login\n- `POST /verify-account` - Email verification\n- `POST /refresh-token` - Token refresh\n- `POST /forgot-password` - Password reset\n\n#### **Course Management** (`/api/courses`)\n\n- `GET /browse` - Browse available courses\n- `GET /{id}` - Get course details\n- `POST /` - Create course (Instructor)\n- `PUT /{id}` - Update course (Instructor)\n- `DELETE /{id}` - Delete course (Instructor)\n\n#### **User Profile** (`/api/profile`)\n\n- `GET /` - Get user profile\n- `POST /update` - Update profile\n- `GET /my-courses` - Enrolled courses\n- `POST /upload-photo` - Profile picture\n\n#### **Dashboard** (`/api/dashboard`)\n\n- `GET /course-stats` - Course statistics\n- `GET /system-stats` - System analytics (Admin)\n- `GET /performance-metrics` - Performance data\n\n#### **Exam System** (`/api/exam`)\n\n- `POST /{examId}/register` - Register for exam\n- `POST /{examId}/start` - Start exam attempt\n- `POST /{examId}/submit` - Submit exam\n- `GET /{examId}/certificate/{attemptId}` - Get certificate\n\n### **Response Format**\n\n```json\n{\n  \"success\": true,\n  \"message\": \"Operation completed successfully\",\n  \"data\": { /* Response data */ },\n  \"errors\": [], // Validation errors if any\n  \"timestamp\": \"2025-07-01T00:00:00Z\"\n}\n```\n\n## 🎯 User Roles \u0026 Permissions\n\n### **🔧 Admin**\n\n- **System Management**: Full system control\n- **User Management**: Create/modify all users\n- **Course Oversight**: Access to all courses\n- **Analytics**: System-wide reports\n- **Security**: Audit logs and security settings\n\n### **👨‍🏫 Instructor**\n\n- **Course Creation**: Create and manage courses\n- **Content Management**: Upload materials, create exams\n- **Student Monitoring**: Track student progress\n- **Grading**: Manual grading and feedback\n- **Analytics**: Course-specific reports\n\n### **👨‍🎓 Student (RegularUser)**\n\n- **Course Enrollment**: Browse and enroll in courses\n- **Learning Progress**: Track personal progress\n- **Exam Taking**: Participate in assessments\n- **Certificates**: Download earned certificates\n- **Profile Management**: Update personal information\n\n## 🎓 Course Management\n\n### **Course Structure**\n\n```\nCourse\n├── About Course Items (Features, Prerequisites)\n├── Course Skills (Technologies/Skills taught)\n├── Levels (Course modules)\n│   └── Sections (Grouped content)\n│       └── Content Items (Videos, documents, etc.)\n├── Enrollments (Student registrations)\n├── Reviews \u0026 Ratings\n└── Exams/Quizzes\n```\n\n### **Content Types**\n\n- **Video Content**: Streaming video lessons\n- **Document Content**: PDFs, presentations\n- **Interactive Content**: Hands-on exercises\n- **Code Examples**: Programming snippets\n- **External Resources**: Links and references\n\n### **Progress Tracking**\n\n- **Completion Status**: Per content item\n- **Time Spent**: Learning session tracking\n- **Bookmarks**: Save important content\n- **Notes**: Personal annotations\n\n## 📊 Analytics \u0026 Reporting\n\n### **Student Analytics**\n\n- **Learning Streak**: Consecutive study days\n- **Progress Metrics**: Completion percentages\n- **Time Investment**: Hours spent learning\n- **Achievement Badges**: Milestone rewards\n- **Performance Trends**: Grade improvements\n\n### **Instructor Analytics**\n\n- **Course Performance**: Enrollment and completion rates\n- **Student Engagement**: Activity and participation\n- **Content Effectiveness**: Most/least engaging content\n- **Revenue Tracking**: Course earnings\n- **Student Feedback**: Reviews and ratings\n\n### **Admin Analytics**\n\n- **System Health**: Performance metrics\n- **User Growth**: Registration trends\n- **Course Popularity**: Top performing courses\n- **Revenue Reports**: Financial analytics\n- **Security Metrics**: Security incident tracking\n\n## 🔒 Exam \u0026 Proctoring System\n\n### **Advanced Security Features**\n\n- **Browser Lockdown**: Prevents tab switching\n- **Screen Recording**: Full session capture\n- **Webcam Monitoring**: Facial recognition\n- **Audio Analysis**: Background noise detection\n- **Activity Tracking**: Mouse/keyboard monitoring\n\n### **Anti-Cheating Measures**\n\n- **Question Randomization**: Unique question sets\n- **Time Limits**: Per-question constraints\n- **Copy/Paste Prevention**: Clipboard disabled\n- **Multiple Device Detection**: Session validation\n- **Suspicious Activity Alerts**: Real-time monitoring\n\n### **Proctoring Dashboard**\n\n- **Live Monitoring**: Real-time student view\n- **Alert System**: Automated suspicious activity alerts\n- **Emergency Controls**: Pause/evacuate sessions\n- **Communication Tools**: Chat with students\n- **Incident Reporting**: Detailed violation logs\n\n### **Certificate System**\n\n- **Digital Certificates**: Secure PDF generation\n- **Verification System**: QR code validation\n- **Blockchain Integration**: Immutable records (planned)\n- **Skills Validation**: Industry-recognized credentials\n\n## 💾 Database Schema\n\n### **Core Entities**\n\n#### **User Management**\n\n- `Users` - Core user information\n- `UserDetails` - Extended profile data\n- `AccountVerification` - Email verification\n- `RefreshTokens` - Token management\n- `UserVisitHistory` - Login tracking\n\n#### **Course Structure**\n\n- `Courses` - Course master data\n- `CourseTracks` - Learning paths\n- `Levels` - Course modules\n- `Sections` - Content groupings\n- `Contents` - Individual content items\n- `AboutCourses` - Course descriptions\n- `CourseSkills` - Skill associations\n\n#### **Learning \u0026 Progress**\n\n- `CourseEnrollments` - Student registrations\n- `UserProgress` - Learning progress\n- `UserContentActivity` - Content interactions\n- `UserBookmarks` - Saved content\n- `StudySessions` - Learning sessions\n\n#### **Assessment System**\n\n- `Quizzes` - Exam definitions\n- `Questions` - Question bank\n- `QuizAttempts` - Exam attempts\n- `UserAnswers` - Student responses\n\n#### **Financial**\n\n- `Payments` - Payment records\n- `PaymentTransactions` - Transaction logs\n- `Discounts` - Coupon system\n\n### **Key Relationships**\n\n- **User** → **CourseEnrollments** → **Course** (Many-to-Many)\n- **Course** → **Levels** → **Sections** → **Contents** (Hierarchical)\n- **User** → **QuizAttempts** → **Quiz** (Exam tracking)\n- **User** → **UserProgress** → **Course** (Progress tracking)\n\n## 🚀 Deployment\n\n### **Development Environment**\n\n```bash\n# Clone repository\ngit clone https://github.com/3bdalrhmanS3d/LearnQuest.git\n\n# Restore packages\ndotnet restore\n\n# Update database\ndotnet ef database update -p LearnQuest.EF -s LearnQuest.Api\n\n# Run application\ndotnet run --project LearnQuest.Api\n```\n\n### **Performance Considerations**\n\n- **Connection Pooling**: Configure for high traffic\n- **Caching Strategy**: Redis for distributed caching\n- **CDN Integration**: For static content delivery\n- **Load Balancing**: Multiple instance deployment\n- **Database Optimization**: Index optimization and query tuning\n\n## 🤝 Contributing\n\nWe welcome contributions to LearnQuest! Please follow these guidelines:\n\n### **Development Process**\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Commit** your changes (`git commit -m 'Add amazing feature'`)\n4. **Push** to the branch (`git push origin feature/amazing-feature`)\n5. **Open** a Pull Request\n\n### **Code Standards**\n\n- Follow **C# coding conventions**\n- Write **comprehensive unit tests**\n- Update **API documentation**\n- Ensure **security best practices**\n\n### **Pull Request Requirements**\n\n- **Clear description** of changes\n- **Tests** for new functionality\n- **Documentation** updates\n- **Security** impact assessment\n\n## 📞 Support\n\n### **Getting Help**\n\n- **Documentation**: Check this README and API docs\n- **Issues**: Report bugs via GitHub Issues\n- **Discussions**: Community Q\u0026A and feature requests\n- **Email**: \u003cabdalrhmansaad24@gmail.com\u003e\n\n### **System Requirements**\n\n- **.NET 8.0** or later\n- **SQL Server 2019** or later\n- **4GB RAM** minimum (8GB recommended)\n- **2 CPU cores** minimum\n- **10GB** storage space\n\n### **Common Issues**\n\n- **Database Connection**: Check connection string format\n- **JWT Errors**: Verify secret key configuration\n- **CORS Issues**: Ensure frontend URL is whitelisted\n- **Email Delivery**: Verify SMTP settings\n\n--- \n**Built with ❤️ by the LearnQuest BackEnd Team**\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3bdalrhmans3d%2Flearnquest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3bdalrhmans3d%2Flearnquest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3bdalrhmans3d%2Flearnquest/lists"}