Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages