{"id":15211197,"url":"https://github.com/devcom33/elearnon","last_synced_at":"2026-03-12T14:39:56.526Z","repository":{"id":256084756,"uuid":"853291488","full_name":"devcom33/ElearnON","owner":"devcom33","description":"A Spring Boot API for managing eLearning platforms, featuring course management, user authentication, and enrollment handling.","archived":false,"fork":false,"pushed_at":"2024-10-20T22:31:48.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T22:59:30.804Z","etag":null,"topics":["elearning","elearning-system","flyway-postgresql","rest-api","restapi-framework","restful-api","spring-boot","spring-mvc","spring-security","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/devcom33.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}},"created_at":"2024-09-06T11:17:06.000Z","updated_at":"2024-10-20T22:31:51.000Z","dependencies_parsed_at":"2024-10-22T02:18:31.573Z","dependency_job_id":null,"html_url":"https://github.com/devcom33/ElearnON","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"4132c88cf383b049c4c99ac1803dbe27c16d12bb"},"previous_names":["devcom33/elearnon"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcom33%2FElearnON","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcom33%2FElearnON/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcom33%2FElearnON/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcom33%2FElearnON/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devcom33","download_url":"https://codeload.github.com/devcom33/ElearnON/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242940016,"owners_count":20209883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elearning","elearning-system","flyway-postgresql","rest-api","restapi-framework","restful-api","spring-boot","spring-mvc","spring-security","springboot"],"created_at":"2024-09-28T08:20:58.871Z","updated_at":"2025-12-07T14:01:10.891Z","avatar_url":"https://github.com/devcom33.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏫 ElearnON - E-Learning REST API  \n\n![Java](https://img.shields.io/badge/Java-21-blue) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4.3-brightgreen) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-✔-blue) ![JWT](https://img.shields.io/badge/JWT-Security-orange)  \n\n## 📌 Project Overview  \n\n**ElearnON** is a REST API built using **Spring Boot**, **PostgreSQL**, and **JWT authentication** for an **E-Learning System**. It allows students to enroll in courses, instructors to manage content, and provides authentication and role-based access control.  \n\n## 🚀 Features  \n\n- ✅ **User Authentication \u0026 Authorization** (Spring Security + JWT)  \n- ✅ **Role-Based Access Control** (Admin, Instructor, Student)  \n- ✅ **Course \u0026 Lesson Management**  \n- ❌ **Enrollment \u0026 Progress Tracking** *(In Progress ⏳)*  \n- ❌ **Certificate Generation** *(Not Started 🚧)*  \n- ❌ **Reviews \u0026 Ratings** *(Not Started 🚧)*  \n- ✅ **OpenAPI Documentation (Swagger UI)**  \n\n## 🏗 Tech Stack  \n\n| Technology | Description |\n|------------|-------------|\n| **Java 21** | Backend language |\n| **Spring Boot 3.4.3** | Application framework |\n| **Spring Security \u0026 JWT** | Authentication \u0026 Authorization |\n| **Spring Data JPA** | ORM for database interaction |\n| **PostgreSQL** | Relational database |\n| **MapStruct** | DTO mapping |\n| **Lombok** | Reduces boilerplate code |\n| **SpringDoc OpenAPI** | API Documentation |\n\n## 📂 Project Structure  \n\n```\n📦 src/main/java/com/system/training  \n ┣ 📂 config         # Security \u0026 configurations  \n ┣ 📂 controller     # REST controllers  \n ┣ 📂 DTO           # Data Transfer Objects  \n ┣ 📂 enums         # Enum types  \n ┣ 📂 exception     # Custom exception handling  \n ┣ 📂 mappers       # DTO to entity mappers  \n ┣ 📂 model         # Entity models  \n ┣ 📂 repository    # Database repositories  \n ┣ 📂 service       # Business logic layer  \n ┗ 📜 TrainingApplication.java  # Main Spring Boot Application  \n```\n\n## ⚙️ Setup \u0026 Installation  \n\n### 1️⃣ Clone the Repository  \n\n```bash\ngit clone https://github.com/devcom33/ElearnON.git  \ncd ElearnON  \n```\n\n### 2️⃣ Configure Database  \n\nUpdate `application.properties` with your **PostgreSQL** credentials:  \n\n```properties\nspring.datasource.url=jdbc:postgresql://localhost:5432/elearnon  \nspring.datasource.username=your_db_user  \nspring.datasource.password=your_db_password  \nspring.jpa.hibernate.ddl-auto=update  \nspring.security.jwt.secret=your-secret-key  \n```\n\n### 3️⃣ Build \u0026 Run the Project  \n\n```bash\nmvn clean install  \nmvn spring-boot:run  \n```\n\n### 4️⃣ API Documentation  \n\nAfter running the app, visit:  \n\n🔗 **Swagger UI:** [http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html)  \n\n## 🔐 Authentication  \n\nTo access secured endpoints, generate a **JWT token** by logging in:  \n\n**POST** `/api/auth/login`  \n\n```json\n{\n  \"email\": \"mouad@gmail.com\",\n  \"password\": \"password\"\n}\n```\n\nUse the received **JWT token** in headers:  \n\n```\nAuthorization: Bearer \u003cyour-token\u003e\n```\n\n## 🛠 API Endpoints  \n\n| Endpoint | Description | Access |\n|----------|------------|--------|\n| `POST /api/auth/register` | Register new user | Public |\n| `POST /api/auth/login` | Authenticate \u0026 get JWT | Public |\n| `GET /api/courses` | Get all courses | Public |\n| `POST /api/courses` | Create a new course | Instructor |\n| `POST /api/enrollments` | Enroll a student *(In Progress ⏳)* | Student |\n| `GET /api/progress` | Get user progress *(In Progress ⏳)* | Student |\n| `POST /api/reviews` | Add course review *(Not Started 🚧)* | Student |\n\n## 📜 License  \n\nThis project is **open-source** and available under the [MIT License](LICENSE).  \n\n---\n\n💡 **Contributions \u0026 Issues**  \nFeel free to open issues or submit pull requests! 🚀  \n\n🔗 **Author:** [Devcom33](https://github.com/devcom33)  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcom33%2Felearnon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevcom33%2Felearnon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcom33%2Felearnon/lists"}