An AI-powered web-based programming learning platform built with Django, supporting three user roles:
π€ Administrators, π Learners, and π Visitors.
Admins have full control over the system:
- π Log in with admin privileges.
- π Manage courses (add, update, delete).
- π Manage lessons and π§ͺ test cases.
- π₯ Manage user accounts.
Unauthenticated users (guests) can:
- π Register for a new account.
- π Search and view available courses and lesson lists.
Registered users can:
- π Log in, reset/change password, and view personal profile.
- π Search and access courses and lessons.
- π€ Ask lesson-related questions to an AI chatbot for quick explanations.
- π» Write, run, and submit code to get real-time evaluation feedback.
- β‘ Fast and accurate code execution/submission processing.
- π Secure handling of user data and learning results.
- π€ Smooth chatbot response with minimal delay.
- π₯οΈ Clean, intuitive, and beginner-friendly interface.
[An email containing the link has been sent when reset password] 
[submission and a correct solution]
[submission and a fail solution] 
- Version: 1.101.2 or later
- Version: 3.11.4 or later
- Version: 5.1.7 or later
- Install via pip:
pip install django==5.1.7 tinymce openai==0.28 python-dotenv-
π tinymce β for rich text input
-
π€ openai β to call OpenRouter API (v0.28)
-
π python-dotenv β load environment variables from .env file
-
Docker Desktop for Windows (version 28.1.1 or later)
-
Build Docker image:
docker build -t python-runner .Run this in the folder where Dockerfile is located.
git clone https://github.com/Zank4/CodeZilla-LearningSite.git
cd CodeZilla-LearningSite-
Get a free API Key from OpenRouter.ai
-
Recommended model: deepseek/deepseek-r1-0528-qwen3-8b:free
-
In the root directory (where manage.py is), create a file named .env with:
OPENROUTER_API_KEY="your_api_key_here"-
Under "Signing in to Google", enable 2-Step Verification.
-
Once enabled, click on App passwords.
-
Select Mail as the app and Other, name it e.g. βDjangoβ.
-
Click Generate to get a 16-character app password.
-
Copy and use it as EMAIL_HOST_PASSWORD in the settings.py file inside the MySite folder.
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_app_password'python manage.py makemigrations
python manage.py migratepython manage.py createsuperuser-
Make sure Docker Desktop is running
-
Start the server:
python manage.py runserver
Then visit: http://127.0.0.1:8000- π CS50 Web Programming with Python and JavaScript: https://cs50.harvard.edu/web/
-
If you have questions or want to contribute:
-
π§ Email: huuvan877@gmail.com










