Practice coding problems with a partner.
One shared editor, one judge, and a replay of the whole session.
tandemcode.space · Docs · Add a problem
Two people share a room, edit the same code with live cursors, chat, and run their solution against the problem's tests together. Everyone in the room sees the verdict, and the session can be replayed afterwards. TandemCode is free and open source under the Apache License 2.0.
- Rooms that are public or unlisted, shared by invite link, with a way to ask for a partner.
- One shared editor with live cursors, built on Yjs.
- Problems with starter code, visible examples and hidden tests, added by pull request.
- Python submissions judged in an isolated container per run, with the verdict shown to everyone in the room.
- A replay of each session: the code as it was typed, the chat and every run.
You need Docker, Node 22 and a free Clerk application.
make setup # copy the .env templates, install web dependencies
# then fill in the Clerk keys and a DB password
make up # Postgres, the API and the runner
make web # http://localhost:5173docs/development.md has the details, the checks and the common changes.
- Web: React 19, Vite, TypeScript, Tailwind, Monaco, Yjs, Clerk.
- API: FastAPI on Python 3.11 with asyncpg, HTTP plus two websockets.
- Runner: the API's image running
python -m app.runner, judging in Docker containers under gVisor. - Database: Postgres 17 with forward-only SQL migrations.
- Production: one Linux host with Docker Compose and Caddy, and the web app on Vercel.
Pull requests are welcome, and adding a problem is the easiest place to start. CONTRIBUTING.md explains both. Report security issues privately as described in SECURITY.md.