mirror of
https://github.com/tiennm99/rubik.git
synced 2026-07-21 06:19:34 +00:00
1a9d8d0c0e554fbc0deb1eb8dca62d88cf61df3e
'smallest' dropped cubejs's top-level `Cube.initSolver = function...` assignments, breaking the prod solver with `t.initSolver is not a function`. Tests passed because vitest uses esbuild, not rollup tree-shaking.
Rubik's 3x3 — Web Simulator
Interactive 3D Rubik's cube in the browser. Three.js rendering, drag-to-rotate face gestures, keyboard notation, scramble + timer + undo.
Live: https://tiennm99.github.io/rubik/
Stack
- Three.js (WebGL rendering)
- Svelte 5 with runes (UI shell)
- Tween.js (move animation)
- Vite (build)
Dev
npm install
npm run dev # http://localhost:8080
npm run dev:codeserver # behind code-server proxy (set CODESERVER_HOST in .env.local)
npm run build # → ../dist
Controls
| Input | Action |
|---|---|
| Drag a sticker | Rotate that face |
| Drag empty space | Orbit camera |
R L U D F B M E S |
Quarter-turn moves |
| Shift + letter | Inverse (prime) |
x y z |
Cube rotations |
| Space | Scramble |
Z |
Undo |
| Esc | Reset |
Project Layout
src/
main.js
app.css
views/ Svelte components (UI)
lib/
core/ Pure JS — cube state, moves, scramble, parser
render/ Three.js scene + cubie meshes + animation
controls/ Pointer gesture + keyboard
plans/ Implementation plans + research reports
docs/ Project documentation
vite/ Per-environment Vite configs
License
Apache-2.0
Description
Interactive 3x3 Rubik's cube simulator in the browser — drag-to-rotate faces, scramble, timer, undo. Three.js + Svelte 5 + Vite.
Readme
Apache-2.0
631 KiB
Languages
JavaScript
79.2%
Svelte
19.5%
CSS
0.7%
HTML
0.6%