A complete Open Source Learning Platform designed to help beginners confidently transition from zero to real open-source contributions.
| Feature | Description |
|---|---|
| 🎮 Gamified Curriculum | 8 core modules going from mindset basics to advanced conflict resolution |
| 📝 Interactive Quizzes | Multiple-choice testing dashboards with instant feedback |
| 🏅 Badges Cabinet | Earn milestone rewards mapping directly to module progress |
| 📜 Printable Certificates | Gorgeous A4 neobrutalist certificate with verification hashes |
| 🏆 Hall of Fame | Cohort stats, active streak calendars, and GitHub contributor recognition |
| 📖 Markdown-Driven Content | Lessons are parsed dynamically — adding content requires zero code changes |
| 💬 Real-Time Community Chat | End-to-end encrypted WebSocket chat with typing indicators |
| 👥 Peer Review System | Submit code for review and earn XP by reviewing others |
| 🔍 Interactive Sandbox | Git terminal emulator with autocomplete and command replay |
|
React 19 · TypeScript · Vite · Tailwind CSS |
Django 5.0 · Django REST Framework · Simple JWT |
|
Vercel (Frontend) · Hugging Face (Backend API) |
Vitest · Playwright · Pytest |
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envWarning
Google OAuth login requires a valid VITE_GOOGLE_CLIENT_ID in frontend/.env.
Create credentials in the Google Cloud Console with authorized redirect URIs set to http://localhost:5173.
Warning
GitHub OAuth login requires GitHub OAuth credentials.
- Go to GitHub OAuth Apps Settings
- Click "OAuth Apps" → "New OAuth App"
- Fill in:
- Application name:
Open Source Contribution Atelier - Homepage URL:
http://localhost:8000 - Authorization callback URL:
http://localhost:8000/accounts/github/login/callback/
- Application name:
- Copy
Client IDandClient Secrettobackend/.env:GITHUB_OAUTH_CLIENT_ID=your_client_id GITHUB_OAUTH_CLIENT_SECRET=your_client_secret
Ensure you are using Python 3.9+.
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Setup the local SQLite database
python manage.py migrate
python manage.py seed_lessons
python manage.py seed_dashboard
# Start the server
python manage.py runserver- API:
http://localhost:8000/api/
Ensure you are using Node 20+.
cd frontend
npm install
npm run dev- SPA:
http://localhost:5173/
Spin up the entire stack (Postgres, Redis, Django backend, Celery worker, Vite frontend) with a single command:
docker compose up --buildThis boots:
| Service | URL | Description |
|---|---|---|
| postgres | localhost:5432 |
Database |
| redis | localhost:6379 |
Celery broker + Channels cache |
| backend | http://localhost:8000/api/ |
Django REST API with hot-reload |
| celery_worker | — | Background task processor for email notifications |
| frontend | http://localhost:5173/ |
Vite dev server with hot-reload |
If you hit any setup issues, see TROUBLESHOOTING.md.
Tip
The Celery worker mounts the codebase as a volume (./services/notifications_worker:/app),
so code changes take effect immediately without rebuilding the image.
Restart the worker with docker compose restart celery_worker after editing worker.py.
The Docker backend reads these environment variables automatically. You can override them in docker-compose.yml or via a .env file:
cp backend/.env.example backend/.envKey variables for Docker:
| Variable | Default | Notes |
|---|---|---|
DATABASE_URL |
postgres://atelier:atelier@postgres:5432/atelier |
Auto-configured |
REDIS_URL |
redis://redis:6379/0 |
Auto-configured |
DEBUG |
True |
Development mode |
This project is fully configured to be deployed on Vercel as a monorepo.
- Import the repository into your Vercel dashboard.
- Vercel will automatically detect the configuration in
vercel.jsonand deploy both the Vite frontend and the Django backend as a serverless API. - Ensure you add all backend environment variables (from
backend/.env.example) into your Vercel project settings.
We welcome contributions of all levels suitable for SSoC 2026 and long-term participation!
Important
Before requesting an issue, please read the pinned guide issues on the Issues tab to understand the keyword assignment rules, CI checks, and the 3-day stale policy.
| Resource | Description |
|---|---|
| 📋 CONTRIBUTING.md | Forking, branching guidelines, commit conventions, and review cycles |
| 💬 CODE_OF_CONDUCT.md | Community participation guidelines |
| 🔒 SECURITY.md | Responsible vulnerability disclosure policy |
| 📖 Content Guide | How to add lessons, modules, and quizzes (zero code changes!) |
Thanks to all the amazing people who have contributed to this project! 💜
Want to see your avatar here? Check the Contributing Guide and pick an issue to get started!