Skip to content

bozemendless/Light

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Light

This was my very first attempt at coding. I know it's filled with lots of shit, but I just don't want to erase my journey. Maybe one day I'll come back and refactor it... but for now, it stays as a testament to how far I've come.

Light is a community-oriented instant messaging platform inspired by Discord's design. It allows members to create servers and communicate in channel of each server freely via messages, video, and audio.

shichenx com_ (2)

Main Freatures

  • Use Django as server framework.
  • Use Django Channels as support of WebSocket (ASGI) to achieve real-time chat.
  • Use WebRTC to achieve voice and video chat.
  • Deploy the website by Docker.
  • Store static files and uploaded media from user by AWS S3 and speed up distribution of static files by CloudFront.
  • Authenticate user with JSON Web Token.
  • Use Django ORM with AWS RDS for MySQL and normalize database in 3NF.
  • Use unit tests to ensure the correctness and robustness.

Main Technologies

Back-End

  • Python Django
  • Python Django Channels (ASGI)
  • RESTful APIs
  • Linux(Ubuntu)
  • MVC Pattern
  • Unit Test

Front-End

  • HTML
  • CSS
  • JavaScript
  • Ajax

Cloud Service (AWS)

  • EC2
  • S3
  • CloudFront
  • RDS (MySQL)

Database

  • MySQL
  • Django ORM
  • Redis

Networking

  • HTTP & HTTPS
  • Domain Name System
  • NGINX
  • SSL (SSL For Free)
  • WebSocket, WebRTC

Development Tools

  • Docker
  • Git /GitHub

Architecture

Light drawio (2)

Light_websocket drawio

Database ER Diagram

Light_DBER

Tree-structured Directories

light
│  manage.py
│  
├─accounts
│  │  admin.py
│  │  apps.py
│  │  models.py
│  │  urls.py
│  │  views.py
│  │  __init__.py
│  │  
│  │          
│  ├─static
│  │  └─accounts
│  │      ├─css
│  │      │      accounts.css
│  │      │      
│  │      └─js
│  │              login.js
│  │              register.js
│  │              
│  └─templates
│       └─accounts
│             login.html
│             register.html
│            
│          
├─channel
│  │ admin.py
│  │ apps.py
│  │ consumers.py
│  │  models.py
│  │  routing.py
│  │  urls.py
│  │  views.py
│  │  __init__.py
│  │ 
│  │        
│  ├─static
│  │  └─channel
│  │      ├─css
│  │      │      channel.css
│  │      │      setting.css
│  │      │      
│  │      ├─imgs
│  │      │      default_avatar-512x512.png
│  │      │      me_server.png
│  │      │      Ripple-2s-243px.gif
│  │      │      
│  │      └─js
│  │              channel.js
│  │              server.js
│  │              setting.js
│  │              
│  └─templates
│     └─channel
│             channel.html
│            
│         
├─chats
│       admin.py
│       apps.py
│       models.py
│       urls.py
│        views.py
│       __init__.py
│            
│          
├─light
│       asgi.py
│       settings.py
│       urls.py
│       wsgi.py
│       __init__.py
│       
│              
└─static
    └─light
            favicon.ico

.gitignore
Dockerfile
README.md
requirements.txt

Contact

🧑‍💻 Jesse Hou 侯晨曦

jessehou6@gmail.com