UnBoundEd (Unbounded Education) – Learning without limits. In today’s world, access to quality education remains a challenge for students in areas with low-resource devices and limited network connectivity. Our solution is a lightweight, AI- powered online education platform designed to function seamlessly in such environments.
Key Features:
- ✅ Offline Support – Students can download lessons (text & video) and sync progress when online.
- ✅ AI-Powered Assistance – Smart AI tutors provide personalized learning recommendations and instant Q&A support.
- ✅ Lightweight UI & Optimized Performance – Minimalist design ensures smooth operation on low-end devices and slow networks.
- ✅ Micro-Certifications & Leaderboard – Learners earn digital certifications and compete in a gamified ranking system.
- ✅ Learn-to-Earn Model – Students receive discounts or rewards for course completions, making education more affordable.
- ✅ Community Support – Peer-to-peer learning, mentor matching, and discussion forums enhance collaboration.
Our platform ensures inclusive and scalable learning, empowering students with minimal data consumption and maximum engagement. 🚀
-
User Authentication and Authorization:
- User registration and login.
- Role-based access control (e.g., student, mentor).
-
Offline Support:
- Ability for students to download lessons (text and video).
- Data synchronization when the device is online.
-
AI-Powered Assistance:
- Integration of AI tutors for personalized learning recommendations.
- Instant Q&A support using AI.
-
Lightweight UI & Optimized Performance:
- Minimalist design for smooth operation on low-end devices.
- Usage of TailwindCSS for a lightweight UI.
- Performance optimization for slow networks.
-
Micro-Certifications & Leaderboard:
- Digital certifications upon course completion.
- Gamified ranking system to encourage competition.
-
Learn-to-Earn Model:
- Reward system for course completions (e.g., discounts, points).
-
Community Support:
- Peer-to-peer learning platforms.
- Mentor matching systems.
- Discussion forums for collaboration.
-
Courses & Lessons:
- Video lectures, PDFs, downloadable notes, quizzes.
Feature | Tech Stack / Library | Status |
---|---|---|
Authentication | Passport.js, JWT, bcrypt | done |
Database | MongoDB, Mongoose | done |
API Framework | Express.js | done |
AI Chatbot | Gemini AI API | done |
Leaderboard System | Custom Logic + MongoDB Aggregation | done |
Video Storage | Youtube | done |
Certificate Generation | pdfkit, node-html-pdf | done |
Leaderboard System | Custom Logic + MongoDB Aggregation | pending... |
Video Storage | Youtube | done |
Certificate Generation | pdfkit, node-html-pdf | done |
Offline Syncing | PouchDB, Workbox (Service Workers) | pending... |
Community Features | Socket.io, Discourse Integration | done |
Gamification & Rewards | Custom Rewards Logic | pending... |
/UnBoundEd
├── /frontend
├── /backend
├── package.json
├── package-lock.json
├── result.json //stores results of Quizzes for leaderboard
├── .gitignore
├── server.js
├──/ config
│ ├── config.js // config constants (JWT secret, etc.)
│ └── db.js // MongoDB connection
| ├── cloudinaryConfig.js
├──/ models
│ ├── User.js // User model (for auth)
│ ├── Admin.js // Admin model (for auth)
| ├── Quiz.js //Quiz model(array of questions, options array ,time limit )
│ └── Course.js // Course model
├──/ controllers
│ ├── authController.js // Auth logic for users
│ ├── adminController.js // Auth logic for admins
| ├── quizController.js // CRUD
| ├── leaderboardController.js
│ └── courseController.js // CRUD for courses and certificate API
├──/ middleware
│ └── authMiddleware.js // JWT validation and role-checking
| ├── uploadMiddleware.js
├──/ routes
│ ├── authRoutes.js // Public user auth endpoints
│ ├── adminRoutes.js // Public admin auth endpoints
│ ├── courseRoutes.js // CRUD endpoints for courses (admin only for create/update/delete)
│ └── certificateRoutes.js // GET endpoint for certificate data
| ├── leaderboardRoutes.js //GET Leaderboard
| ├── quizRoutes.js //create Quiz,Update,Delete(isAdmin) || attemptQuiz (User)
| ├── chatbotRoutes.js
├──/ utils
└── resultHelper.js
├──Readme.md
-
User Signup/Login
- Users register & log in using JWT-based authentication.
- Role-based access (Student/Mentor/Admin) is managed.
-
Courses & Content
- Admin uploads video courses, notes (Stored on Youtube).
- Students access video courses & downloadable PDFs.
- Offline mode enables downloads for later viewing.
-
AI-Powered Assistance
- Students ask questions → Sent to Claude AI API.
- AI returns answers + personalized recommendations.
-
Gamification & Leaderboard
- Students earn points by completing quizzes/courses.
- Leaderboard updates ranks based on learning activity.
-
Certificates & Rewards
- On course completion, a PDF certificate is generated.
- Students receive rewards (discounts, badges, points).
-
Community & Mentorship
- Peer discussions in forums (Discourse).
- Mentor-student matching for guidance.
-
Offline Support
- Course materials are downloadable.
- Progress syncs once online.
Here's an API guide table based on the routes you've provided. This will allow your team to fetch these APIs on the frontend easily.
BASE URL - localhost:3000
HTTP Method | API Endpoint | Description | Authentication Required | Role Required | Parameters | Response |
---|---|---|---|---|---|---|
POST | /api/auth/register |
Register a new admin | No | Admin | username , password , email |
201 Created |
POST | /api/auth/login |
Login as an admin | No | None | username , password |
200 OK, JWT Token |
GET | /api/admin/dashboard |
Get the admin dashboard details | Yes | Admin | None | 200 OK |
POST | /api/users/register |
Register a new user | No | User | username , password , email |
201 Created |
POST | /api/users/login |
Login as a user | No | None | username , password |
200 OK, JWT Token |
GET | /api/users/dashboard |
Get the user dashboard details | Yes | User | None | 200 OK |
GET | /api/certificate |
Generate certificate for a course | Yes | User/Admin | username , courseName |
200 OK, PDF Certificate |
GET | /api/courses |
Get a list of all available courses | No | None | None | 200 OK |
GET | /api/courses/:id |
Get course details by course ID | No | None | id |
200 OK |
POST | /api/courses |
Create a new course (Admin only) | Yes | Admin | courseName , youtubeLinks , quizLink , discordLink |
201 Created |
PUT | /api/courses/:id |
Update course details (Admin only) | Yes | Admin | id , courseName , youtubeLinks , quizLink , discordLink |
200 OK |
DELETE | /api/courses/:id |
Delete a course by course ID (Admin only) | Yes | Admin | id |
200 OK |
-
Authentication & Authorization:
- For public routes (e.g.,
GET /api/courses
andGET /api/courses/:id
), no authentication is needed. - Admin routes (e.g.,
POST /api/courses
andPUT /api/courses/:id
) require authentication (JWT token) and admin privileges (isAdmin
middleware).
- For public routes (e.g.,
-
Parameters:
username
,password
,email
for login and registration.courseName
,youtubeLinks
,quizLink
, anddiscordLink
for course creation and updates.courseName
andusername
for generating certificates.
-
Response:
- Most API calls return a
200 OK
status along with the required data (e.g., course list, certificate). - The
POST
requests for creating a course or user will return a201 Created
status. - The
GET /api/certificate
returns a PDF certificate upon success.
- Most API calls return a
HTTP Method | Endpoint | Role | Description | Headers | Sample Body |
---|---|---|---|---|---|
POST | /api/auth/admin/login |
Admin | Admin login to get JWT token | Content-Type: application/json |
{ "email": "admin@example.com", "password": "adminpassword" } |
POST | /api/quiz |
Admin | Create a new quiz | Authorization: Bearer {{adminToken}} Content-Type: application/json |
JSON with quiz details (see Create Quiz sample above) |
GET | /api/quiz/{{quizId}} |
Public | Get details of a quiz | None (or with token) | – |
POST | /api/auth/users/login |
User | User login to get JWT token | Content-Type: application/json |
{ "email": "user@example.com", "password": "userpass123" } |
POST | /api/quiz/{{quizId}}/attempt |
User | Submit quiz attempt | Authorization: Bearer {{userToken}} Content-Type: application/json |
{ "answers": [ ...10 answers... ], "timeTaken": 290 } |
localhost:3000/api/leaderboard/