Skip to content

eazariDev/e-learning-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Logo

E-LEARNING-PLATFORM

license last-commit repo-top-language repo-language-count

Built with the tools and technologies:

JSON Redis GNU%20Bash NGINX Django Docker Python


Table of Contents


Overview

A modern, scalable, and extensible web-based e-learning platform built with Django, Django REST Framework, Channels, and Docker. It supports course creation, student enrollment, real-time chat, and secure media handling—all containerized for seamless deployment.


Tech Stack

  • Backend: Django 5.0.4, Django REST Framework

  • Async: Django Channels + Daphne + Redis

  • Database: PostgreSQL

  • Web Server: Nginx + uWSGI

  • Containerization: Docker & Docker Compose


Features

  • 🧑‍🏫 Instructor & student workflows
  • 🧵 Real-time chat using Django Channels + Redis
  • 🎓 Course creation, enrollment, and progress tracking
  • 🖼️ Media uploads and secure content access
  • 🧱 Modular Django apps (courses, students, chat)
  • 🐳 Full Dockerized setup with Nginx, PostgreSQL, Redis
  • ⚙️ ASGI + Daphne for async support
Component Details
⚙️ Architecture
  • Monolithic Django backend
  • ASGI with Channels
  • PostgreSQL + Redis
  • nginx reverse proxy
🔩 Code Quality
  • Modular Django apps
  • Good use of settings structure
  • Consistent dependency versions
🔌 Integrations
  • PostgreSQL
  • Redis (caching + Channels)
  • nginx
  • daphne
🧩 Modularity
  • Separate Django apps: courses, students, chat
  • Logical separation of static/media/configs
⚡️ Performance
  • Redis caching layer
  • uwsgi for WSGI
  • daphne for ASGI
🛡️ Security
  • Environment-based secrets via python-decouple
  • nginx SSL config present
  • Prod config in settings
📦 Dependencies
  • Django 5.0.4
  • Channels
  • DRF
  • Redis
  • Pillow
🚀 Scalability
  • Containerized via Docker
  • ASGI for real-time features
  • Decoupled db/cache services

Project Structure

└── e-learning-platform/
    ├── Dockerfile
    ├── config
    │   ├── nginx
    │   └── uwsgi
    ├── data
    │   ├── cache
    │   └── db
    ├── docker-compose.yml
    ├── educa
    │   ├── api_examples
    │   ├── chat
    │   ├── courses
    │   ├── educa
    │   ├── manage.py
    │   ├── media
    │   ├── ssl
    │   ├── static
    │   └── students
    ├── requirements.txt
    └── wait-for-it.sh

Getting Started

🔧 Prerequisites

  • Docker & Docker Compose
  • Python 3.11+ (for local dev without containers)

Installation (Using docker)

Build e-learning-platform from the source and intsall dependencies:

  1. Clone the repository:

    ❯ git clone https://github.com/eazariDev/e-learning-platform
  2. Navigate to the project directory:

    cd e-learning-platform
  3. Build and run containers:

    ❯ docker-compose up --build

Visit http://localhost:8000 to start exploring the platform.


Contributing

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/eazariDev/e-learning-platform
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published