Why I built Ghostbase
I have a Spotify, a Simkl account for tracking what I watch, a GitHub profile, a Discord presence, and a habit of writing things down. None of that lived in one place, and every "link in bio" tool I tried was built for creators posting content, not for someone who just wants a home base on the internet. So I built my own. It's called Ghostbase, it runs at razerghost.xyz, and it's open source.
It started as a links page
The first version was almost too simple: a page with links to my socials and projects, because I was tired of my bio linking to a Linktree that looked like everyone else's Linktree. That would have been a fine place to stop. It wasn't, because the moment I had a page that was mine, I kept noticing gaps.
Would it be cool if this page knew what I'm listening to right now? Would it be cool if this page just showed my watchlist directly — the kdramas and anime Simkl already keeps merged into one place — instead of making me go check it separately? What if my devlog lived next to everything else I do? Each question turned into a feature, and each feature turned into a small piece of infrastructure I hadn't planned on building — a cache layer here, an import pipeline there, a full-text search index for my own notes.
What it actually does now
Ghostbase has grown into something closer to a personal dashboard than a links page:
- Live status — what I'm playing on Spotify, what I'm watching, my Discord presence, pulled together instead of scattered across four tabs
- A watchlist (
/watchlist) — my kdramas and anime, pulled from Simkl's merged view instead of making me check it separately - A devlog (
/devlog) — markdown posts with embeddable interactive components (before/after sliders, terminal replays, diagrams) for writing about what I'm actually building - A project showcase (
/projects) — the things I've shipped, tagged and searchable - A listening history (
/listens) — my Spotify history, browsable on its own page instead of buried in a Spotify wrapped once a year - A gear page (
/gear) — the hardware and setup behind all of this - A note-taking system (
/notes) — with autosave, soft delete, and revision history, because I trust "the cloud" with my notes about as much as I trust a browser tab I forgot to bookmark - A
/newtabdashboard — a drag-and-dock replacement for my browser's new tab page, complete with a pomodoro timer and rotating Unsplash backgrounds - An admin panel (
/admin) — a proper CMS behind a login for editing the devlog and projects, managing backups and media, and watching the health of every integration, instead of hand-editing files on a server
None of this was on a roadmap. It's the accumulated result of building the tool I actually wanted to open every day, one annoyance at a time.
Why it's worth writing about
Most software I'll build for other people won't be shareable — client work tends to live under NDA, and even when it doesn't, screenshots of an internal ops dashboard don't tell you much. Ghostbase is the opposite: it's mine, it's public, the code is open, and every decision in it was made because I had to live with the consequences, not because someone else signed off on a spec.
That's a different kind of pressure than working to someone else's requirements, and an instructive one. When you're both the developer and the only user, you can't blame unclear requirements for a bad decision — you just made a bad decision, and you'll be the one annoyed by it next week. It's the same discipline I intend to bring to every project, minus anywhere to hide.
Curious how I work, or want to see the code? Ghostbase is open source — and if you want something built with that same care, let's talk.