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.