Case study · 2026
Ghouls in the Basement
A homepage for a band that didn't have one.
Ghouls in the Basement is an Austin garage-rock four-piece that plays a live show every few weeks but had no web presence beyond a Bandcamp page. I designed and built a single-page homepage in the spirit of the 80s and 90s — equal parts Geocities and SNES title screen — and wired the news, gallery, and tour-date sections to a Google Sheet the band edits themselves, with a guestbook form routing new entries to the band's shared inbox. Now live; the band stays in control without me in the loop.
Final design
An 8-bit homepage that the band keeps current through a spreadsheet.
The problem
A live band with no place to send the people leaving the show.
Ghouls play to packed rooms across Austin every few weeks. Fans hear them once, leave the venue, and have nowhere to follow up — the Bandcamp page has the music but no tour dates, no bios, no personality. The default solutions (Wix, Squarespace, Linktree) all produce the same clean, gridded template that says nothing about a garage rock band.
The brief from the band was equal parts functional and aesthetic: it had to act as a hub for shows, music, and contact — but it had to feel like them. And it had to stay current without me being the bottleneck every time they had a new show or a new piece of news.
No homepage to point fans at
Bandcamp covers music; Instagram covers updates; nothing tied tour dates, bios, and contact together in one URL fans could remember.
Generic templates kill the vibe
Garage rock against a Squarespace gradient reads like a tech startup. The site has to do half the work of telling people what they sound like.
News goes stale fast
Tour dates, EP status, merch — these change weekly. If updates need code or a designer, they don't happen.
The research
Looked at the old web, not new band sites.
Modern band sites converge on the same template. To find a visual direction that matched the music, I ignored them and pulled from somewhere else: Cameron's World (the geocities collage), Heaven's Gate, vintage GameFAQs front pages, SNES title screens. The aesthetic shared a property the band wanted: it reads as a place someone made, not a CMS theme.
The constraints from the band came down to three:
Make it feel like us
Not template energy. The visual should sell the band's personality before they hear a note.
Let them edit for themselves
News, tour dates, photos, videos — band members need to update without touching code.
Look like the 90s
Marquees, blink tags, web rings, hit counters. The full geocities permission to be weird.
The site has to feel like a place someone made, not a CMS theme.
The brief, in one sentence
The architecture
One scrollable page, top-to-bottom.
Multi-page IA would be overkill — and would lose the "long Geocities scroll" feeling. Everything lives on a single page with anchor links in a chunky nav, so fans can either scroll the whole thing like a zine or jump directly to a section.
Marquees + masthead
Scrolling shout-outs and a pixel-font band name. Tells you what the site is in under a second.
Socials + nav
Direct buttons to Bandcamp / Spotify / YouTube / Instagram, then anchor links to each panel below.
News + tour + ghouls
The editorial content — what's happening, where they're playing, who they are.
Photos, tapes, guestbook
Gallery + video clips + a sign-the-guestbook moment that doubles as social proof.
The process · 01
Blocked the layout in low-fi first.
Before committing to a visual direction, I sketched the page in low-fi. The questions here were structural, not aesthetic — what runs on top, what stacks where, which sections need to feel like content vs landmarks. The wireframes are deliberately ugly. They have to prove the layout, not the look.
Annotated digital wireframe · single page
One tall greyscale frame for the single-page site — the eight content zones in scroll order, each with numbered annotations explaining the IA choices and which sections are Sheet-fed vs hand-built.
The process · 02
Three versions, kept the best of each.
I built three full versions in straight HTML/CSS — no Figma slides, no prototyping tool. The fastest way to test "does this feel right?" was to throw a working page in front of the band and watch them react.
v1 was a restrained dark site that hit the visual goals at maybe 30%. v2 went full vintage paper / Heaven's Gate — cream background, blood red type, Pirata One drop shadows, banner row, hit counter. The band liked the top half. v3 pivoted into 8-bit / SNES territory — pixel band name, marquees, NES color palette. The band liked the bottom half. Final design is v3's bottom with a simplified, more colorful version of v2's top sensibility — taking the bits each iteration earned.
The process · 03
Wired the content to a Google Sheet.
The hardest design constraint was "they need to update it without me." The honest answer for a band site is: not a CMS, not a static-site generator, just a tool they already use. They have Google Sheets.
One sheet, three tabs. The News tab feeds the news flash strip — each row becomes a headline item, the first gets a blinking NEW!! badge. The Media tab feeds the gallery (Type / Title / File per row, rendered as a clickable photo tile or an inline video player). The Show dates tab feeds the tour table (Date / Venue / Link / Label).
The page fetches all three tabs as CSV on load and rerenders those sections. If a fetch fails (offline, sheet deleted, whatever) the hardcoded fallback content stays. The band edits the sheet, refreshes the page, the site is up to date — no deploy step, no me involved.
The guestbook is a fourth piece — a Netlify Form at the bottom of the page that routes new submissions straight to the band's shared email. Same principle: the band moderates from a tool they already check.
The system
Built a clashing, on-purpose visual language.
The visual logic is the opposite of a modern brand system: panels in clashing primaries (hot pink, lime, cobalt, yellow, teal), pixel fonts next to blackletter, deliberate scanlines over the masthead. Every interactive thing throbs, blinks, or scrolls. The rule for what stays and what gets cut: does it earn a smile in the first three seconds? If yes, keep it.
Color palette (panels)
Typography — three eras, in one page
Components
Throbbing CTA
Marquee strip
Award stamp
Verified
Ghouls
The process · 04
The final site, top to bottom.
One scrollable page. Pixel masthead and dual marquees at the top, four social pills (Bandcamp / Spotify / YouTube / Instagram), pixel-button nav, then the editorial content: news flash, brief history, tour table, hero photo, the four ghouls, photos & tapes, guestbook, footer.
Live preview — fully functional, including the lightbox and clickable member photos:
ghoulsinthebasement.com
Live site embedded above. The news flash, gallery, and show dates render from a Google Sheet on page load; everything else is hand-built HTML/CSS.
A site that looks like the music sounds — and stays current without me touching it.
What the brief became
The outcome
Site shipped. Sheet shipped. Band has the keys.
The final site reads as a band, not a template. It's live, with a guestbook form routing new submissions to the band's shared inbox. The band updates news, gallery, and tour dates through a shared Google Sheet — no commits, no me. The bandmate photos are clickable, videos play inline (re-encoded from .mov to .mp4 so they actually work in Chrome and Firefox on Windows), and the lightbox handles both via event delegation so it works on dynamically-added items too.
v1, v2, and v3 each contributed something — kept the best parts of each instead of picking one.
News, Media, and Show dates publish to CSV; the guestbook form routes submissions straight to the band's inbox.
.mov → .mp4 re-encode dropped 67MB of source clips to ~18MB without visible quality loss.
Reflection
What I learned.
Iterate in HTML, not Figma.
For a project this small with a stakeholder this hands-on, throwing working pages at the band beat any Figma flow. Each version was a 30-minute build, and "I like the bottom half of this one" was an answer they could only give me if both halves were real.
Make it editable on day one.
The Sheet integration could have been a "phase 2" feature. Building it into v3 instead meant the band started managing their own content immediately — and I stopped being the bottleneck for every "can you add this?" request.