⚠️ This repository is no longer actively maintained. Dojo has moved towards being an enterprise product. This codebase is left available for fair use, reference, and inspiration.
Curated mock single-page applications built with React + Vite + a shared state layer — originally powering agent training experiences on trydojo.ai.
RL training loops need safe, deterministic sandboxes — real production apps mutate too quickly. These mock SPAs solve that by providing:
- 🪞 Realistic UI — mirror the UX of live tools (e.g. Linear) without exposing private data
- 🔐 Predictable auth — no CAPTCHAs, SSO headaches, or expiring secrets
- 🧩 Consistent state — all reads/writes flow through
dojo-hooks, giving agents stable schemas instead of ever-changing production APIs
@chakra-dev/dojo-hooks is the shared state layer across all SPAs:
| Export | Purpose |
|---|---|
useDojoState |
React hook for persisting & retrieving SPA state |
dojo (global) |
Vanilla JS helper for the same — no React required |
Each app consumes these hooks to keep widgets in sync across routes and nested components.
# 1. Scaffold or duplicate
cp -r linear/app my-new-spa/app # or: npm create vite@latest
# 2. Install deps
pnpm install
pnpm add @chakra-dev/dojo-hooks
# 3. Develop
pnpm run dev
# 4. Build for deploy
pnpm run buildUse useDojoState to manage any shared data you want agents to read/write across the experience.