mirror of
https://github.com/tiennm99/rubik.git
synced 2026-08-30 04:21:46 +00:00
main
Replace pnpm-lock.yaml with package-lock.json.
pnpm-workspace.yaml pinned npm only where cubejs depends on it
("cubejs>npm: ^11.14.1"). npm expresses that path scoping with a nested
override, so the pin stays scoped to cubejs instead of applying to every copy of
npm in the tree. Verified: cubejs is still the only overridden path.
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 in the browser — drag faces, scramble, timer, undo. Three.js + Svelte 5 + Vite.
Readme
Apache-2.0
715 KiB
Languages
JavaScript
79.2%
Svelte
19.5%
CSS
0.7%
HTML
0.6%