Personal project · On my server · 2026
Rubik
Practice the Rubik's cube and other puzzles, with official scrambles and a 3D viewer.
See it live · rubik.rossmel.com ↗My role
Everything: design, development and deployment.
Stack
- JavaScript
- cubing.js
- WebAssembly
- HTML
- CSS
The problem
Speedcubing practice needs valid scrambles and a way to see each puzzle. Rubik generates official scrambles (WCA format) and shows the puzzle in 3D, from the classic cube to dodecahedra like the megaminx and gigaminx.
Highlights
- 01Official scrambles and a 3D viewer with cubing.js, the cubing community's library, including its WebAssembly scramble generator.
- 02No CDN dependency: the library ships with the site itself, so it keeps working if an external service goes down.
- 03Practice mode with the 3D puzzle and a mode to view each puzzle, across many puzzle types.
- 04Framework-free HTML, CSS and JavaScript, served from my homelab.
What I learned
- → 01Bundling a full library isn't just copying files: the scramble generator loads a WebAssembly module dynamically, and if that file is missing everything fails silently.
- → 02Test in more than one browser: a style that did nothing in Chromium broke the 3D in Firefox.
- → 03When the component is a black box (closed shadow DOM), automated screenshots are the best way to verify it actually renders.
- → 04Each puzzle has its own notation: some dodecahedron moves didn't animate and had to be translated to their equivalent form.
Live
Running on my server
Projects running on my homelab, under my own domain. Open each one to see how it works.
- notebook.rossmel.comNotebookNotes as a chat with yourself, with memory: ask them, search them and study with flashcards. Open source.See details →
- selflix.rossmel.comSelflixMy own "Netflix": a Jellyfin media center on my home server.See details →
- manga.rossmel.comMangaMy own manga reader: shared library, per-person progress and a phone app.See details →
Next project
Selflix →