Skip to content

Latest commit

 

History

109 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TandemCode logo

TandemCode

Practice coding problems with a partner.
One shared editor, one judge, and a replay of the whole session.

tandemcode.space  ·  Docs  ·  Add a problem

Site status API status Vercel deployment Backend tests Web checks License

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.

What it does

  • 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.

Run it locally

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:5173

docs/development.md has the details, the checks and the common changes.

Stack

  • 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.

Docs

Contributing

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.

About

A tech collaborative interview preparation tool made using python, WebSockets, AWS and React. Pair-program interview problems in one Yjs-synced editor, judged against hidden tests in gVisor sandboxes.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages