# Edulearn - Online Learning Platform
**Edulearn** is a full-featured online learning platform inspired by Udemy and Coursera. It allows instructors to create courses, manage lessons and sections, accept payments, and lets students enroll, learn, and review courses. Built with **Django**, it provides a robust, scalable, and secure backend.
---
## **Table of Contents**
1. [Project Overview](#project-overview)
2. [Features](#features)
3. [Tech Stack](#tech-stack)
4. [Setup Instructions](#setup-instructions)
5. [Project Structure](#project-structure)
6. [URL Routing and Endpoints](#url-routing-and-endpoints)
7. [Modules](#modules)
- Users
- Courses
- Payments
- Reviews
8. [Contributing](#contributing)
9. [License](#license)
---
## **Project Overview**
Edulearn is an online course management system where:
- **Students** can browse courses, enroll, complete lessons, and leave reviews.
- **Instructors** can create courses, add sections and lessons, and track student progress.
- **Admins** can manage users, courses, payments, and reviews.
- Integrated **Stripe payments** allow secure course checkout.
---
## **Features**
- User registration, login, logout, and password reset.
- Instructor dashboard for course creation and management.
- Course sections and lessons with CRUD functionality.
- Public and private course views.
- Student enrollment and learning progress tracking.
- Review system for courses.
- Stripe integration for payments.
- Admin panel for managing users, courses, and payments.
- Privacy, Terms of Service, and Cookie Policy pages.
---
## **Tech Stack**
- Python 3.x
- Django 5.x
- PostgreSQL / SQLite
- Stripe (for payments)
- HTML, CSS, JavaScript (Frontend templates)
---
## **Setup Instructions**
1. Clone the repository:
```bash
git clone https://github.com/yourusername/edulearn.git
cd edulearn
```- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows- Install dependencies:
pip install -r requirements.txt- Set up environment variables in
.envfile:
SECRET_KEY=your_django_secret_key
DEBUG=True
DATABASE_URL=postgres://user:password@localhost:5432/edulearn
STRIPE_SECRET_KEY=your_stripe_secret
STRIPE_PUBLIC_KEY=your_stripe_public_key
- Apply migrations:
python manage.py migrate- Create a superuser:
python manage.py createsuperuser- Run the development server:
python manage.py runserverAccess the project at http://127.0.0.1:8000/.
edulearn/
│
├── edulearn/ # Project settings
├── users/ # User management (auth, profile)
├── courses/ # Course management (sections, lessons)
├── payments/ # Stripe integration and booking
├── reviews/ # Course reviews
├── templates/ # HTML templates
├── static/ # CSS, JS, images
└── manage.py
| URL | Method | Purpose |
|---|---|---|
/ |
GET | Home dashboard |
/user/login/ |
GET/POST | User login |
/user/logout/ |
GET/POST | Logout user |
/user/register/ |
GET/POST | User registration |
/user/terms/ |
GET | Terms of service |
/user/privacy/ |
GET | Privacy policy |
/user/cookie-policy/ |
GET | Cookie policy |
/user/password-reset/ |
GET/POST | Password reset workflow |
| URL | Method | Purpose |
|---|---|---|
/courses/instructor-dashboard/ |
GET | Instructor dashboard |
/courses/create/ |
GET/POST | Create course |
/courses/course/<id>/ |
GET | Course detail (instructor) |
/courses/pcourse/<id>/ |
GET | Public course detail |
/courses/learning/<id>/ |
GET | Course learning page |
/courses/course/<id>/edit/ |
GET/PATCH | Edit course |
/courses/course/<id>/manage/ |
GET | Manage course (sections/lessons) |
/courses/course/<course_id>/section/create/ |
GET/POST | Create section |
/courses/course/<course_id>/section/<id>/edit/ |
PATCH | Edit section |
/courses/course/<course_id>/section/<id>/delete/ |
DELETE | Delete section |
/courses/course/<course_id>/section/<section_id>/lesson/create/ |
POST | Create lesson |
/courses/course/<course_id>/section/<section_id>/lesson/<id>/edit/ |
PATCH | Edit lesson |
/courses/course/<course_id>/section/<section_id>/lesson/<id>/delete/ |
DELETE | Delete lesson |
| URL | Method | Purpose |
|---|---|---|
/payments/checkout/<id>/ |
POST | Create Stripe checkout session |
/payments/success/<id>/ |
GET | Payment success page |
/payments/cancel/<id>/ |
GET | Payment cancel page |
| URL | Method | Purpose |
|---|---|---|
/reviews/course/<course_id>/review/create/ |
POST | Create course review |
- Registration, login/logout, password reset
- Profile management
- Terms, privacy, cookie policies
- Instructor can create, edit, and manage courses, sections, and lessons
- Public and private course views
- Learning progress for students
- Stripe integration for secure course payments
- Payment success/cancel handling
- Students can create reviews for courses
- Optional edit/delete features for reviews
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature - Commit changes:
git commit -m "Add some feature" - Push to branch:
git push origin feature/your-feature - Open a Pull Request
MIT License © 2025 Your Name
- Ensure
DEBUG=Falsein production - Set proper Stripe webhook endpoint for live payments
- Use PostgreSQL or MySQL for production database
This README.md provides a complete, professional documentation for developers or QA to understand Edulearn and its routing, modules, and workflows.