Work metroghost
web

metroGHOST

One dark animated page that links every platform an artist is on — with a full funnel and analytics stack behind it.

metroGHOST.com is an artist landing page: a single forced-dark, heavily animated page — canvas smoke, film grain, a kinetic wordmark, artwork-backed platform badges — that collects every streaming and social destination in one place. Behind it sits a complete business back end: contact/booking/sales funnels wired to Postmark, first-party cookie-less analytics with click attribution per badge, and an admin panel for leads and email. Single Go binary, SQLite, html/template, vanilla CSS/JS. Built so it can flip from unofficial fan site to official artist site by editing config, not code.

Last updateJul 18, 2026 LicenseMIT PrimaryGo
  • Go 1.25
  • SQLite
  • html/template
  • Vanilla JS
  • Canvas API
  • Postmark
  • Apache
  • systemd
  • just
metroGHOST — One dark animated page that links every platform an artist is on — with a full funnel and analytics stack behind it.
metroGHOST media

metroGHOST.com is a link-in-bio page that refuses to look like one. It is a single forced-dark page built as a piece of atmosphere first — an animated wordmark, a canvas smoke layer, film grain, scroll-triggered text reveals, and artwork-backed badges for every platform the artist releases on — with an inverse light mode for anyone who wants the glare.

A landing page with a business behind it

  • Platform links are data. Every destination lives in a platforms.json config and is human-verified before it ships — no scraped or guessed URLs pointing fans at the wrong account.
  • Funnels behind feature flags. Contact is live; booking and sales are fully built and wired to Postmark, sitting dormant behind a funnels.json switch until the artist wants them.
  • First-party analytics. Cookie-less page views and per-badge click tracking, stored locally and surfaced in the admin dashboard. No third-party tag, no consent banner, no data leaving the box.
  • Email both directions. Postmark for outbound notifications and replies, plus a secured inbound webhook that drops responses straight into the admin inbox.

How it's built

One Go binary and one SQLite file. Rendering is html/template; the front end is vanilla CSS and JavaScript with the smoke effect on a raw canvas. No framework, no bundler, no node_modules, no build pipeline — just ship runs the tests, builds, restarts the systemd unit and health-checks it. Deployment is Apache in front of a systemd service on a single host.

The site is a hard-diverged fork of an in-house white-label template, which is what makes the config-over-code posture possible: artist identity, genre, platform list and funnel toggles are all JSON. Flipping this from an unofficial fan site to the artist's official site is a config edit and a DNS change, not a rewrite.

Disclosure

metroGHOST.com is an unofficial fan project. It is not affiliated with or endorsed by the artist, and all trademarks, music and likenesses belong to their respective owners. It is listed here for the engineering — the animation work, the analytics and funnel stack, and the config-driven architecture — not as a client engagement.

Straight from the source

The project's own README.

Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.

metroGHOST.com

Unofficial fan site for the artist metroGHOST — a single dark, animated landing page linking every platform the artist is on, with a full admin panel (leads, email, analytics) behind it. Built so it can flip from fan site to official artist site by changing config, not code.

Single Go binary, SQLite, html/template, vanilla CSS/JS. No frameworks, no build pipeline. Derived from an in-house white-label template and heavily diverged.

Live: https://metroghost.com

Highlights

  • Landing page — forced-dark artistic single page: animated wordmark, canvas smoke, film grain, scroll/text animations, artwork-backed platform badges, inverse light-mode toggle.
  • Platform links — data-driven from config/platforms.json; human-verified links only.
  • Funnels — contact modal live; booking + sales built and wired to Postmark, hidden behind config/funnels.json flags.
  • Analytics — first-party, cookie-less page views + badge click tracking, dashboard in the admin panel.
  • Email — Postmark outbound (notifications, replies) and secured inbound webhook into the admin inbox.

Docs

Start at docs/quick-start.md. Per-feature docs in docs/feature/. Fork history, research, and platform verification in docs/metroghost/.

Commands

just            # list all recipes
just dev        # run locally with race detector
just ship       # test + build + restart service + health check
just check      # tests + lint + brand scrub gate

Disclosure

Unofficial fan project. Not affiliated with or endorsed by the artist. All trademarks, music, and likenesses belong to their respective owners.

Build something like this

Want a tool like this for your shop?

We've shipped this kind of thing before. Twenty-minute intro call, no slides.