Real-time collaborative code learning platform with Docker execution & AI-powered explanations.
DevCord/
├── client/ # Next.js 16 + React + Tailwind (dark theme)
├── server/ # Node.js + Express + Socket.io + Sequelize
├── docker/ # Runner Dockerfiles (Python, Node, Java)
├── docker-compose.yml
└── .env.example
| Layer | Technology |
|---|---|
| Frontend | Next.js (App Router), React, Tailwind CSS |
| Editor | Monaco Editor (@monaco-editor/react) |
| Realtime | Socket.io (delta-based code sync) |
| Backend | Express, express-async-errors |
| Database | MariaDB + Sequelize ORM |
| Execution | Docker (node-docker-api) — ephemeral containers |
| AI | Google Gemini API |
| Auth | JWT HS256 (access + httpOnly refresh cookie) |
| Security | Helmet, express-rate-limit, CORS, CSP |
cp .env.example .env
# Edit .env with your MariaDB credentials, JWT secret, and Gemini API keyStart MariaDB (via Docker or local):
docker compose up db -dcd server
npm install
npm run devcd client
npm install
npm run devdocker build -t devcord-python -f docker/Dockerfile.python .
docker build -t devcord-node -f docker/Dockerfile.node .
docker build -t devcord-java -f docker/Dockerfile.java .- Discord-style UX — Servers → Rooms hierarchy, dark theme
- Live collaboration — Real-time code sync via WebSocket deltas
- Multi-language execution — Python, Node.js, Java in sandboxed Docker
- AI explanations — Gemini-powered code analysis in EN/FR/AR
- Role-based access — Admin / Teacher / Student with JWT auth
- Security — Helmet CSP, rate limiting, Docker isolation (no network, memory caps)
| Method | Route | Auth | Description |
|---|---|---|---|
| POST | /api/auth/register |
— | Register user |
| POST | /api/auth/login |
— | Login, get JWT |
| POST | /api/auth/refresh |
Cookie | Refresh access token |
| POST | /api/auth/logout |
— | Clear refresh cookie |
| GET | /api/servers |
JWT | List user's servers |
| POST | /api/servers |
JWT + admin/teacher | Create server |
| POST | /api/servers/:id/members |
JWT + admin | Invite member |
| GET | /api/servers/:id/rooms |
JWT + member | List rooms |
| POST | /api/servers/:id/rooms |
JWT + admin/teacher | Create room |
| GET | /api/rooms/:id |
JWT + member | Get room + files |
| POST | /api/run |
JWT (rate-limited) | Execute code |
| POST | /api/ai/explain |
JWT (rate-limited) | AI explanation |
- Docker containers:
NetworkMode: none, 128MB memory, 50% CPU cap - Containers deleted after every execution
- Input sanitization before Docker Cmd
- JWT: 15min access + 7-day httpOnly refresh cookie
- Rate limiting: 100 req/10min global, 10 req/min on
/runand/ai