Personal web ecosystem - one person, one world, several rooms.
thio.qzz.io is the entrance; each room is a subdomain with its own atmosphere but shared identity.
| Room | Subdomain | What lives there |
|---|---|---|
| Rumah (home) | thio.qzz.io |
Entrance, world map, now, timeline, changelog, search, secrets |
| Portofolio | portfolio.thio.qzz.io |
Case studies (Anonimbuz, Dotfiles, Skenpat, PMR, teksreceh, slate-de…) + CV |
| Wiki | wiki.thio.qzz.io |
~20 interconnected knowledge articles from real material |
| Proyek | projects.thio.qzz.io |
All 38 public repos + 6 documented non-repo projects, with honest statuses |
| Lab | lab.thio.qzz.io |
Experiments: live wallpapers, ink-grid canvas, preserved design artifacts |
| Game | games.thio.qzz.io |
Rubik (ported), lintasindo (ported), TAKO (original) |
| Musik | music.thio.qzz.io |
The honest musician story + WebAudio console |
| Alat | tools.thio.qzz.io |
Timestamp/case/JSON tools + directory of real tools |
| Arsip | archive.thio.qzz.io |
Old homepage 2025, old portfolio, wiki snapshot, school task, gudang |
Room subdomains are canonical. The corresponding apex paths remain intentional
permanent shortcuts: thio.qzz.io/<room>/* returns HTTP 301 to
<room>.thio.qzz.io/*, preserving the room-relative deep path and query string.
For example, /wiki/a/tlp-linux-power/?from=home redirects to
https://wiki.thio.qzz.io/a/tlp-linux-power/?from=home. Shared root assets are
excluded from this rule.
npm install
npm run build # → _site/
npm run serve # local dev with watchEleventy 3, Nunjucks, zero client framework. All content is static HTML +
one JSON index (/data/graph.json) powering search, random, and related links.
src/_data/- site config, 38-repo archive, timeline, changelog, now, games, on-site toolssrc/wiki/articles/*.md- wiki articles (add a file, it appears)src/portfolio/case/*.md- portfolio case studiessrc/lab/experiments/*.md- lab experimentssrc/archive/entries/*.md- archive entriessrc/games/rubik,src/games/lintasindo- ported real games (MIT, by the author)src/lab/wallpapers/- ported real HTML wallpaperssrc/artifacts/- preserved legacy files (old pages, scripts, gudang)
Cross-links use related: refs (repo:teksreceh, wiki:indoscript, case:anonimbuz,
lab:wallpapers, game:tako, tool:timestamp…), resolved at build time.
Single project, all subdomains:
- Build command:
npm run build, output dir:_site. - Add
thio.qzz.io+ the room subdomains as custom domains. - The included
_worker.jspermanently redirects exact-root room aliases to their canonical subdomains, rewrites each canonical subdomain to its build folder (portfolio.thio.qzz.io/*→/portfolio/*), and serves the in-world 404.
The host-sensitive room alias rule intentionally lives in the Worker.
_redirects only supplies path normalization when running without it.
See docs/DEPLOYMENT.md for full step-by-step instructions.
Paper & ink neo-brutalism inherited from the original slide deck (/lab/experiments/deck/):
cream paper #f4f1ea, ink #0d0c0a, thick borders, hard shadows, accents
yellow/pink/blue/green - each room overrides tokens via data-room themes.
Space Grotesk + Space Mono. Reduced motion respected everywhere; keyboard &
screen-reader friendly; everything works on mobile.
- No invented content: every fact traces to the repo, the CV, the chrome deck, or the Wikipedia user page.
- Imperfect work is archived, not hidden - with honest statuses (Active, WIP, Experimental, Archived, Broken, Empty, Unknown).
- Discovery first: search, random, related, tags, secrets (terminal, konami code, hidden solver).
- Static-first: no framework on the client, no database, no tracking.
See docs/ARCHITECTURE.md for the full proposal & content map.