Work calebworld
web

Caleb World

Music artist platform — dark, mobile-first, single-binary, ready to grow into a player + uploads.

Caleb World is the artist site for an electronic producer — dark-themed public pages, contact + lead capture, admin panel for replying through Postmark, and the bones for music uploads and an in-page player when the catalog goes live. Built on the same single-Go-binary pattern as the rest of the small-operator fleet: SQLite, systemd, Let's Encrypt, no frameworks, deploys in seconds.

Last updateApr 19, 2026 LicenseMIT PrimaryGo
  • Go
  • SQLite
  • Postmark
  • systemd
  • Apache
  • Let's Encrypt
Caleb World — Music artist platform — dark, mobile-first, single-binary, ready to grow into a player + uploads.
Caleb World media
Caleb World media
Caleb World media
Caleb World media

Caleb World is the artist site for an electronic producer working out of St. Petersburg, Florida — dark theming, mobile-first layout, gear-and-skyline imagery, and the small-operator admin pattern underneath. The shape on the public side is "music. vibes. world."; the shape on the back side is one Go binary, SQLite, and a Postmark inbox that lets the artist actually reply to people.

What's there now

  • Releases page — singles, EPs, albums laid out for both fans and label / sync-licensing scouts.
  • About + contact — bio plus a contact form that lands in the admin panel, not in someone's inbox to get lost.
  • Visual identity — Maschine hardware shots, live-performance imagery, Sunshine Skyway hero. The art carries the brand; the copy stays out of the way.
  • SEO surface — structured data, sitemap, Open Graph tags so a shared link on socials renders the cover art instead of a generic preview.

What's wired but waiting

The bones for music uploads and an in-page player are in the repo — schema slots for tracks and releases, admin upload flow, and a player UI behind a feature flag. Catalog publishing flips on when the artist is ready; the infrastructure doesn't need a rewrite to get there.

Why a single Go binary

Artist sites don't need a CMS, and a CMS would just become something that breaks the night before a release. One binary, one database file, one systemd unit, deploys are pull-rebuild-restart. Fast on phones at venues, cheap to host, survives whatever the public internet throws at a sub-200kb page.

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.

Caleb World

Music artist platform for caleb-world.com. Built with Go, featuring a dark-themed public website, admin panel for managing contacts and email, and infrastructure for future music upload and player features.

Features

  • Public Website

    • Dark, music-focused design with custom theme
    • Responsive, mobile-first layout
    • Music/releases page, about page, contact form
    • SEO optimized with structured data, sitemap, Open Graph tags
  • Admin Panel

    • Lead/contact management with status tracking
    • Inbound/outbound email via Postmark
    • Settings management
    • Trash and restore
  • Infrastructure

    • Single Go binary (~2MB), no external dependencies
    • SQLite database with WAL mode
    • systemd service with auto-restart
    • SSL via Let's Encrypt
    • Rate limiting and spam protection

Quick Start

# Build
make build

# Run locally
make run

# Deploy (after editing .env)
make restart

Configuration

Copy .env.example to .env and customize. All branding, colors, and content are environment-driven.

Postmark Email

Outbound and inbound email are handled via Postmark. Configure in .env:

  • POSTMARK_TOKEN — Postmark server API token
  • POSTMARK_FROM — verified Sender Signature (e.g. [email protected])

Inbound webhook URL (paste into Postmark → Servers → your server → Inbound Stream → Webhook URL):

  • With Basic Auth (recommended, and what prod is configured with):
    https://<POSTMARK_WEBHOOK_USER>:<POSTMARK_WEBHOOK_PASS>@caleb-world.com/webhook/inbound
    
  • Without Basic Auth (only if POSTMARK_WEBHOOK_USER/POSTMARK_WEBHOOK_PASS are empty):
    https://caleb-world.com/webhook/inbound
    

The /webhook/inbound path is hardcoded in the Go binary (cmd/main.go routing → webhook.InboundHandler) and will not change unless explicitly edited and redeployed. When POSTMARK_WEBHOOK_USER and POSTMARK_WEBHOOK_PASS are both set in .env, the handler rejects any request without matching Authorization: Basic credentials (constant-time comparison). Inbound emails are stored in the inbound_emails table and optionally forwarded to addresses configured in the admin Settings page.

Rotating webhook credentials: update POSTMARK_WEBHOOK_USER/POSTMARK_WEBHOOK_PASS in .env, run make restart, AND update the URL configured in the Postmark dashboard. All three must stay in sync or inbound email will 401.

Tech Stack

  • Backend: Go 1.24 (stdlib only) + SQLite
  • Frontend: HTML templates, vanilla CSS/JS, Lucide icons
  • Email: Postmark API
  • Server: systemd + Apache reverse proxy + Let's Encrypt SSL

Planned

  • Music upload and management system
  • Audio player/playlist (Winamp-inspired UI)
  • Song streaming and downloads
  • Social media integrations
  • Event/show listings

License

MIT

Gallery

The full set.

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.