Solvers, trainers, analytics, and statistics for the Rubik's Cube — all in the browser.
cuberoot.me/
├── core/ pnpm + Turbo monorepo — active apps, shared packages, and offline jobs
│ ├── apps/
│ │ ├── api/ Hono + PostgreSQL 13 — WCA OAuth, reconstructions, algorithm library
│ │ ├── mobile/ React + Capacitor — native mobile application
│ │ ├── miniprogram/ WeChat Mini Program — independent native runtime
│ │ └── fmc-solver/ Rust FMC solver service — independent Cargo workspace and deployment
│ ├── packages/
│ │ ├── client/ React 19 + Next.js 16 (App Router) — current Web application
│ │ ├── platform/ Retired read-only archive; its product surfaces now live under client /platform
│ │ └── ... Reusable libraries with public package boundaries
│ └── jobs/
│ ├── alg-build/ Offline algorithm data and SQL generators
│ ├── scramble-stats-build/ Offline scramble analysis generators
│ ├── stats-build/ Offline WCA statistics and database-load pipeline
│ └── wb-build/ Offline unofficial world-best dataset generator
├── solver/ Rust solving engines — native analyzers and WebAssembly builds
├── research/ Independent research projects
│ └── reconer/ Automated reconstruction from speedsolving video
├── tools/ Upstream forks, served from static.cuberoot.me
├── stats/ Generated statistics JSON (committed)
├── ops/ nginx vhosts, systemd units, deployment scripts
└── docs/ Design notes and runbooks
Frontend React 19, Next.js 16 with Turbopack, TypeScript. Backend Hono on PostgreSQL 13, behind nginx. Pipelines TypeScript jobs over the WCA MySQL export, run by GitHub Actions. Solving Rust engines, compiled natively for services and statistics pipelines or to WebAssembly for the browser. Hosting A self-hosted server and Vercel, split by DNS.
Use the Node version in .node-version and the pnpm version
declared by core/package.json.
cd core
pnpm install
pnpm --filter @cuberoot/client dev # http://127.0.0.1:3000/
pnpm --filter @cuberoot/client typecheck # tsgo, the fast daily check
pnpm --filter @cuberoot/client test
pnpm --filter @cuberoot/client buildAPI calls are proxied to production through Next.js rewrites, so the full site
runs without a local backend. Platform is part of that same frontend at
/platform; the archived packages/platform app is excluded from the workspace
and is not built or deployed.
Architecture decisions, document status, and generated-artifact ownership are
indexed in docs/README.md.
This project builds on a great deal of open-source work. The full list is at cuberoot.me/support.
See LICENSE. Vendored upstream modules keep their original licenses.