← /code

/stack_

Not a "trending list" — 41 pieces of software cuberoot.me actually leans on (plus the ones I am about to adopt, and a few I evaluated and passed on): what runs on the production VM, the authoring chain that writes it, and personal tooling about to enter the loop. One page each: history, strengths, and the exact job it does in this architecture.

Snapshot·2026-05·Full system topology →
/Cloudflare DNS→Let’s Encrypt TLS→nginx :443→Next 16 :3002→React 19 + App Router
/nginx :443 (api)→Hono :3001→Node 22 (pm2)→PostgreSQL 13 :5432→pg_dump 03:00 UTC
/Claude Opus 4.7→Claude Code→git→GitHub Actions→nginx + acme.sh
// frontend

Frontend

The half that runs in the browser

⚛
19.2

React

Declarative UI, components, virtual DOM

Renders the whole SPA — 24 tool pages all live inside one React tree.

born 2013-05→
⇄
7.x

React Router

Binds URLs to your component tree

Routes all 24+ tool pages. Each page is lazy()-split into its own chunk with <Suspense> covering the load; react-router-dom 7 pairs with React 19 concurrent renderer.

born 2014-05→
▲
16.2.6

Next.js

The full-stack framework on top of React

The whole site now runs on it. Phase 4 (2026-05) cut the SPA over to Next 16 App Router, ~128 pages prerendered.

born 2016-10→
⚡
8.0

Vite

Native ESM dev server + Rolldown production build

Dev server + production bundler for the SPA. Cold start under 1s; build emits ~80 hashed chunks.

born 2020-04→
△
r184

Three.js

The de facto standard for 3D in the browser

The renderer behind every 3D cube on this site — TwistyPlayer and the sq1 demo both ride three.js.

born 2010-04→
▣
0.63.3

cubing.js

WCA-grade scrambles + 3D twisty + alg parsing

Random-state scrambles for all 17 WCA events, 3D animation for every player, and KPuzzle state derivation all live here.

born 2018-09→
⏵
CR 2023-02

WebCodecs Stack

Hardware-accelerated decode + re-encode + zero-drop export in the browser

The core pipeline behind /frame-count. Video file → mp4box.js demux → WebCodecs hardware decode into VideoFrame → OffscreenCanvas crop → VideoEncoder hardware re-encode → mp4-muxer writes back to .mp4. VFR / exotic codecs fall back to ffmpeg.wasm.

born 2020-11→
≈
4.3

Tailwind CSS

Utility-first CSS framework

Installed on cuberoot.me, but mostly used as the preflight base layer with utility classes as an escape hatch.

born 2017-11→
⊕
24.x + 15.x

i18next

The de-facto i18n stack of JavaScript

The whole site\

born 2011-08→
ʕ
5.0.x

Zustand

Bear-minimum React state management

Client-side cross-page state — 11 stores: auth / settings / sessions / trainer / battle / calc / mosaic / viz / recon.

born 2019-09→
◫
0.85.3

React Native

Real native apps, written in React

The site doesn't use it — mobile goes through a Capacitor shell. This page covers what it is and why this web-first toolchain took a different road.

born 2015-03→
// backend

Backend

Processes and tables on that one VM

炎
4.12

Hono

TS-first multi-runtime web framework

The whole backend API shell on this site. Hono 4 + Node 22 + pm2, 22 endpoints on 127.0.0.1:3001.

born 2022-01→
⬢
22 LTS

Node.js

JavaScript runtime for the server

Where the backend API, build tools, test runner, and scripts all run.

born 2009-05→
P2
7.0

PM2

Node process manager, cluster, and logs

Starts the Hono API, restarts it on crash, and brings it back after reboot — one CLI.

born 2013-06→
Pg
13

PostgreSQL

Object-relational + document + array, one engine

Primary store. Recon caches, the 41-set alg library, training data, and WCA stats derivatives all live in PG 13.

born 1986→
↧
nightly

pg_dump

PostgreSQL\

Nightly backups. A 03:00 UTC systemd timer runs pg_dump -Fc into custom format on a 30-day rolling window.

born 1996→
≣
9.7.0 LTS

MySQL

The world’s most ubiquitous open-source relational database

Local parser for the WCA public dump. stats-build reads it, ships JSON — never touches prod.

born 1995-05→
⊞
29.4

Docker

Package apps as images and run them anywhere

Run a local PG13 container to dry-run schema / migrations / load.sql before pushing to prod.

born 2013-03→
⌬
260

systemd

PID 1 + service manager + journal + timers

Runs the whole cuberoot.me VM — nginx, pm2, the pg-dump backup, and acme.sh renewals are all systemd units.

born 2010-03→
// edge

Edge / Network

TLS, DNS, HTTP — before a request even reaches a process

n
mainline 1.31

nginx

Event-driven web server + reverse proxy

First hop for every request. SPA / API / WASM COI / blog archive all dispatched by one process.

born 2004-10→
CF
authoritative

Cloudflare DNS

Authoritative DNS + global anycast network

Hosts the entire cuberoot.me zone. Authoritative only, grey-cloud on every record.

born 2009-09→
LE
ACME v2

Let’s Encrypt

Free, automated, universally trusted CA

Signs the three certs (cuberoot.me / api.cuberoot.me / blog.cuberoot.me) used across this site; acme.sh + DNS-01 + a systemd timer renews them with zero hand-holding.

born 2015-12→
// dev

Dev / AI

From keystrokes to a commit — the whole authoring chain

⎇
2.54

Git

Distributed version control + content-addressable storage

The single source of truth for this repo. Every commit, every branch, every deploy trigger starts here.

born 2005-04→
✦
Opus 4.7

Claude

Anthropic's chat / tool-use / coding LLM

Co-author of nearly every new line of code on cuberoot.me. Opus 4.7 is the daily driver — the whole repo fits in one conversation at 1M context.

born 2023-03→
>_
2.x

Claude Code

Anthropic's official CLI agent

100% of this codebase is maintained inside Claude Code. Read / Edit / Bash / Grep + subagents + skills + memory replace most of an IDE.

born 2025-02→
⬢
11.1.2

pnpm

A drop-in npm replacement, with a content-addressable store and hard links

Package manager for the cuberoot.me monorepo — stitches 10 workspaces into a shared tree.

born 2017-01→
⟫
2.5

Turborepo

Incremental task orchestration + content-addressed cache

Threads build / typecheck / test / lint across the monorepo into a dependency graph, replaying cached outputs for unchanged packages.

born 2020-11→
⌑
pnpm 10 + Turbo 2

Monorepo

One repo, many packages, one lockfile

Four core workspaces (client / server / shared / stats-build), one pnpm-lock, Turbo cache, one CI workflow.

born ~2003→
❒
11.14

npm

The world's largest software registry — and the de-facto JS package format

We type `pnpm install`, but every dependency still comes from registry.npmjs.org. package.json is the source; semver / lockfile is the glue.

born 2010-01→
◓
1.2

Bun

Node + npm + Vite + Vitest, all in one binary

Not in use. If we ever switch, the two first targets are api.cuberoot.me (Hono on Bun beats Node) and the one-off TS scripts under core/scripts/ (bun run is 2-3x faster cold start than tsx). The current pm2 + Node 22 setup is fine, so it stays.

born 2022-07→
✦
0.11.14

uv

pip + virtualenv + pipx + pyenv, replaced by one Rust binary

Python toolchain + deps + venvs in one binary. The site’s scripts are still on plain python3 — uv is the migration plan.

born 2024-02→
▶
ubuntu-24.04

GitHub Actions

YAML-driven CI/CD + general-purpose orchestration

The execution engine behind this repo\

born 2018-10→
▶
1.60

Playwright

Cross-browser E2E testing + browser automation

UI regression suites + the browser backend AI agents drive to verify pages on this site.

born 2020-01→
✓
4.1

Vitest

Next-gen test runner powered by Vite

Runs unit / worker / regression tests — utils pure functions, worker algorithms, analyzer baselines all live here.

born 2021-12→
⬣
10.4.0

ESLint

The pluggable JavaScript linter

Code-checks the site's client-next. One flat-config rule: force playwright scripts through the headless.mjs wrapper instead of importing a browser engine directly.

born 2013-06→
◇
1.96.5

Tailscale

WireGuard-based mesh VPN

Pulls dev machine, phone, laptop onto one private network — dev servers reachable across devices without ever opening a public port.

born 2019-04→
⌬
10.3p1

OpenSSH

The encrypted remote-login suite that runs the public internet

The transport beneath every server login, deploy, and git push. Every CI deploy on cuberoot.me rides it.

born 1999-12→
⇆
3.4.2

rsync

Ship only the bytes that changed

Syncs build artifacts / backups / mirrors between two machines — only the delta crosses the wire.

born 1996-06→
◇
1.7

Obsidian

Local-first markdown thinking tool

Planned tooling — personal knowledge base + AI-era context store. The cuberoot.me codebase does not depend on it yet, but the next year of work plans to move notes / design decisions / research into a vault and close the loop with Claude Code.

born 2020-03→
◔
3.20

GitHub

A social forge on top of git, with first-party CI and AI collaboration

Hosts this repo, RuiminYan/cuberoot.me, and executes the deploy / mirror / stats / healthcheck workflows.

born 2008-04→
⇄
8.20.0

curl

Thirty years, one maintainer, twenty billion installations

The default way to poke this repo. Opening an nginx vhost, pinging an endpoint, checking a cert, running a GitHub Actions health probe — all curl.

born 1996-11→
/code·/architecture·CubeRoot