Katas
Code, chat or whiteboard.
Refactor code, discuss a technical decision or work through a system design. Junior, mid or senior helps shape which katas you are offered, alongside the topics you choose.
Open source · Self-hosted · MIT
Vibe coding is making developers faster and their instincts weaker. Dojo is the counter-practice: timed katas with no AI, then a sensei that reviews your reasoning after you submit.
No account needed for the playground. Running an instance needs Docker and a GitHub OAuth app.
Illustrative evaluation — not a real session
NEEDS WORK
“You fixed the symptom, but left the race condition. Explain what happens when both requests arrive together.”
The kata loop
AI belongs after the attempt, never during it. A kata is one problem and one timer. The sensei may ask one follow-up question before it gives the verdict.
Nothing technical stops you from opening an assistant during a kata. Dojo trusts you, because the practice only works if you keep it.
If you cheat yourself here, you cheat yourself everywhere.
What is inside
An instance serves one group. Whoever runs it decides who is invited.
Katas
Refactor code, discuss a technical decision or work through a system design. Junior, mid or senior helps shape which katas you are offered, alongside the topics you choose.
Belts
White to black, computed from completed katas, topic variety, active days and time at your rank. The verdict never adds points, but a kata that ends in Needs work does not count as completed. A belt is not a certificate. Read the rules.
Engawa
An anonymous code playground: drop in a snippet and run it. No kata, no verdict.
Open the playground →Scrolls are external learning apps that an operator registers and embeds in Dojo. What an instance offers depends on what its operator publishes. How scrolls are authored.
Run your own
A full instance, Docker only
git clone https://github.com/rodacato/dojo
cd dojo
cp .env.example .env
# set the GitHub OAuth values and WEB_URL=http://localhost in .env
docker compose up --build
docker compose exec dojo-api \
node dist/infrastructure/persistence/seed.js
The last command loads the katas; a new instance starts with none. Code execution needs the dev container or a Kamal deploy, and everything needs the running instance, so nothing works offline.
Contribute
Dojo has a point of view about practice, and the contributing guide protects it.