A fun, open-source platform that makes coding fun through gamified challenges and multiplayer.
✨ Coding Challenges: Solve puzzles in 20+ programming languages
🏆 Multiplayer Games: Compete in real-time coding competitions
📊 Progress Tracking: Track your skills and achievements
🎨 In-Browser Editor: Write and test code without leaving the browser
🔧 Community-Driven: Built by developers, for developers
This guide will get you up and running in ~10 minutes, even if you're new to development.
- Clone the project structure and its submodules:
Before you begin, make sure you have these installed on your computer:
-
Git - For cloning the repository
📥 Download Git ```
-
Node.js 18+ - JavaScript runtime
📥 Download Node.js (get the LTS version)
-
pnpm - Package manager (faster than npm)
After installing Node.js, run:
npm install -g pnpm ``` -
MongoDB - Database (choose ONE option):
- Option A (Recommended for beginners): Use Docker (see step 3 below)
- Option B: Install locally - MongoDB Community
- Option C: Use cloud - MongoDB Atlas (free tier)
-
Piston - Code execution service (we'll set this up with Docker)
📥 Docker Desktop (easiest way to run Piston)
Open your terminal (Command Prompt, PowerShell, or Terminal app) and run:
git clone https://github.com/JuiceMitApfelnDrin/CodinCod
cd CodinCodThis downloads the code to your computer and navigates into the folder.
We use a monorepo structure (all code in one repository, organized in separate packages). Let's install everything:
pnpm installThis command:
- Installs dependencies for all packages (backend, frontend, types)
- Sets up workspace links between packages
If you have Docker Desktop installed (recommended):
docker compose up -dThis starts:
- MongoDB on
localhost:27017(database) - Piston on
localhost:2000(code execution service)
The -d flag runs them in the background (detached mode).
Verify it's running:
docker compose psYou should see both services "Up".
The types package contains TypeScript schemas shared between frontend and backend. Build it first:
cd libs/types
pnpm build
cd ../..Or from the root directory:
pnpm --filter types buildMigrations set up the database schema and populate initial data (like programming languages):
cd libs/backend
pnpm migrateThis creates:
- Database collections (users, puzzles, submissions, etc.)
- ProgrammingLanguage documents from Piston runtimes
- Indexes for performance
To populate your database with "realistic" test data:
pnpm seedWhy? It's much easier to develop and test features when you have data to work with!
From libs/backend:
pnpm devKeep this terminal open! The backend needs to stay running.
Open a new terminal and run:
cd libs/frontend
pnpm devNavigate to: http://localhost:5173
🎉 You're done! You should see the CodinCod home page.
You now have a full-stack application running:
- Frontend (
localhost:5173) - SvelteKit web app you interact with - Backend (
localhost:8888) - Fastify API server handling requests - MongoDB (
localhost:27017) - Database storing users, puzzles, etc. - Piston (
localhost:2000) - Service that safely executes user code
- Explore the app: Create an account, solve a puzzle, view your profile
- Check the docs:
- Backend README - API routes, migrations, architecture
- Frontend README - SvelteKit, components, routing
- Make changes: Edit a file, save, and watch it hot-reload in the browser!
- Backend README: libs/backend/README.md
- Frontend README: libs/frontend/README.md
- Online Docs: codincod.com/docs
- GitHub Issues: Report bugs or request features
- Discussions: Ask questions, share ideas
Happy coding! 🚀 If you get stuck, don't hesitate to ask for help in discussions or issues.