everything you are made of was forged in a dying star, and will be scattered into infinite others. the cyphering is the soundtrack for the parts in between.
not background music. the cyphering turns the deepest questions — reality, the cosmos, the self — into something you can lose yourself to at full volume.
created with AI · psytrance · hardstyle · drum and bass · progressive trance · melodic techno
spotify is the main / primary platform; instagram is the social hub.
The artist site for thecyphering.com — a single page that doubles as the link hub for the instagram bio link. it shows upcoming pre-saves, a two-line intro, and a continuously-playing spotify embed.
Built with Astro + Tailwind CSS v4, deployed as a static site on Cloudflare Pages.
npm install
npm run dev # http://localhost:4321
npm test # releases.json + links.ts contract tests (vitest)
npm run check # astro type check
CI (.github/workflows/ci.yml) runs check → test → build on every push/PR.
All platform destinations live in src/data/links.ts (LINKS). Platform
roles:
- spotify — main / primary
- instagram — the social hub
- soundcloud, apple music — secondary
- youtube — visuals
- suno — generation source
The spotify embed (the always-on player) is configured in src/consts.ts.
Pre-saves are handled by DistroKid HyperFollow (free, OAuth-backed). The
queue renders from src/data/releases.json — a GENERATED artifact; do not
hand-edit it. The single source of truth is the-cyphering-ops/releases.yaml.
A card shows as an upcoming pre-save before its releaseAt, spotlights as
"out now" for a week after, then drops off — all advanced client-side, so
the queue rolls over at the real release moment with no redeploy.
To add a release: drop the hyperfollow URL into the "➕ add a release" form
on signal (signal.thecyphering.com), or run
python -m release.add_release <url> --push in the-cyphering-ops. Either way
it appends to releases.yaml, regenerates this releases.json, and commits
both to main — Cloudflare Pages rebuilds and the card appears. Covers are
auto-fetched from the hyperfollow og:image; site-hosted covers live in
public/covers/<slug>.webp.
npm run build # outputs to dist/
Cloudflare Pages settings:
- Build command:
npm run build - Output directory:
dist - Custom domain:
thecyphering.com
Push to main and Pages rebuilds automatically.
TODO: add a real
public/og.png(1200×630) for social-share cards.