← All projects
Hosting Migration WordPress

LittLive.com

A multi-site WordPress network for a regional healthcare provider — migrated from a struggling shared host, hardened for HIPAA-adjacent workflows, and now humming on our managed infrastructure.

LittLive.com screenshot

A custom digital radio network covering hip-hop, R&B, pop, dance, and Latin music. Premium streaming UX up front, full editorial control in back, AI-powered news automation in the middle — all built on WordPress without touching a single theme file.

RoleSole full-stack developer + designer

StatusLive on staging, production pending

TimelineMulti-phase build

WordPress 6.9PHP 8.2MySQLHotwire Turbo DriveVanilla JSAnthropic ClaudeOpenAI GPTApple iTunes APIMusicBrainzWikipedia

The brief

Build a custom multi-station radio platform on WordPress — premium streaming UX up front, full editorial control in back, with content automation so the team isn’t writing news by hand. No off-the-shelf theme. No drag-and-drop builders.


Public website

The product non-technical visitors experience.

Always-live radio

  • Sticky persistent audio player that survives every page navigation via Hotwire Turbo Drive
  • 39 live station tiles with cross-fading cover art and real-time now-playing
  • 1-minute background cron + 25s in-tab refresh keeps every station current
  • MediaSession API so lock-screen and Bluetooth controls just work
  • 30-second Apple Music previews on every track page — pauses the live stream, plays the clip, auto-resumes when done

Editorial pages

  • Homepage with featured stations, top artists, top tracks, fresh plays, news, DJs
  • Artist + Track detail pages enriched with Wikipedia bios and MusicBrainz metadata
  • Station detail pages with “now playing”, “recently played”, similar stations
  • DJ profiles with bio, socials, weekly schedule, and pulsing “ON AIR NOW” badge
  • Podcast pages with teaser previews and premium paywall

Discovery + navigation

  • Spotify-style ⌘K search modal — debounced REST, keyboard nav, persists across pages
  • Custom dark/neon sticky header with mobile drawer
  • Mobile bottom-tab nav (Home / Stations / Search / You) coordinated with the sticky player
  • Site-wide “fresh on LITT” live activity row

User accounts

A real product, not just a public site.

  • Custom signup / login at clean URLs — the default /wp-login.php is hidden
  • Favorites system — heart any station, artist, track, podcast, or article
  • User dashboard with favorites, recently played, and news from favorited artists
  • Premium tier infrastructure with paywall card and teaser previews (Stripe hooks ready)
  • Personal listening history table for stats and recommendation features

News feed (fully automated)

The platform writes its own editorial content.

  • AI-powered article rewriter — switch between Claude and OpenAI in admin
  • RSS + HTML scrapers with per-source schedules (hourly / 6h / daily / manual)
  • Three-prong duplicate detection: URL hash + normalized title + content fingerprint
  • Admin-tunable system + voice prompts so rewrites match LITT’s editorial voice
  • Test-rewrite sandbox to dial in tone before going live
  • “Strip outbound links” option to keep readers on-site
  • Model dropdown auto-populated from each provider’s /v1/models endpoint
  • Cross-surface on homepage, artist pages, user dashboard, and search

Custom back-office

The piece I’m most proud of — a fully branded admin that doesn’t feel like WordPress.

LITT-branded admin theme

  • Dark gradient sidebar with the LITT logo, centered
  • Inter font, gradient primary buttons, glassmorphic panels
  • “Howdy” stripped via WordPress’s gettext filter — the proper way, not a regex hack
  • Top admin bar reduced to brand mark + “View site” + slim “+ New” + clean avatar
  • WordPress update nag suppressed for non-admins

Card-grid dashboards

  • Replaced the standard WP welcome screen with a content-first card grid
  • Quick stats, quick-add tiles, “news awaiting review”, featured stations, recent plays
  • First-login onboarding tour with role-specific steps and a “Take the tour” replay button

Custom Manage pages

  • Manage Stations / Artists / Tracks / DJs / Shows / Podcasts — each with grid view, status pills, quick toggles
  • Search, filter pills, pagination, inline edit forms with WP media uploader
  • The WP block editor is disabled on every LITT post type — replaced with focused custom forms

Two new user roles

  • Station Manager — full LITT admin, locked out of plugins / themes / users / tools / core settings
  • DJ — own profile + own shows only; physically can’t view or edit another DJ’s content
  • New custom capabilities (litt_manage, litt_dj_self) so the role system grows without colliding with manage_options
  • One-click role simulation via User Switching for testing

Editorial controls

Non-technical staff manage everything without touching code.

  • Featured / banned toggles on stations, artists, tracks with row actions + bulk actions
  • Explicit-content flag with red “E” badges everywhere a flagged station appears
  • Premium content gating with admin toggle, teaser previews, and Stripe-ready paywall
  • Cascade ban — banning an artist auto-hides their tracks across the entire site
  • Per-station logo overrides, custom descriptions, manual featured ordering
  • Site-wide settings page (social URLs, app badge links, contact email, analytics toggle)

Mobile + PWA

The site installs like a real app on phones.

  • Progressive Web App manifest + service worker
  • “Add to Home Screen” install banner with smart timing
  • Full splash screen, standalone display mode, brand icons
  • Mobile sticky player + bottom-tab nav coordinated via safe-area-inset-bottom
  • Custom 404 “Off Air” page with gradient hero

Infrastructure + polish

The unglamorous work that makes the platform reliable.

  • 5 custom DB tables with proper dbDelta migrations
  • Transient caching on every hot path (homepage, stations, featured queries, news models)
  • Polite User-Agent and 25–90s timeouts on every outbound API call
  • iTunes Search API fallback fills missing cover art at ~95% hit rate
  • MusicBrainz + Wikipedia external metadata pipeline (cached 24h)
  • Hidden login URL via WPS Hide Login → /staff-login/
  • All custom code lives in versioned JSON snippet files in git — zero theme edits
  • WP-CLI deploy scripts with php -l syntax checks before any code goes live

Decisions worth calling out

Specific engineering choices that paid off — useful context for anyone considering similar work.

Hotwire Turbo Drive for SPA-style navigation without React — the sticky audio player survives every page change because of data-turbo-permanent.

Code Snippets Pro as the deployment surface — every feature ships as a versioned JSON file in git, deployed via WP-CLI over SSH, no theme touched.

Capability architecture — new litt_manage + litt_dj_self caps so admins inherit via a user_has_cap filter and existing handlers work with zero migration risk.

Dual-AI failover — admin picks Claude or GPT mid-stream; both providers’ model lists drive the dropdown.

3-prong news dedupe — URL + normalized title + first-800-char content fingerprint catches re-syndicated articles even when URL and title differ.

TinyMCE iframe theming via tiny_mce_before_init content_style — the trick most developers miss when dark-theming the WordPress classic editor.

By the numbers

39Live stations

3.7K+Artists captured

16K+Tracks logged

60PHP snippets shipped

5Custom DB tables

4External APIs

2LLM providers

0Theme files modified

What’s next

  • Stripe checkout wired to the existing paywall infrastructure
  • DJ Mixcloud / SoundCloud embed support on show pages
  • Email digest for users with favorited artists
  • Genre deep-dive landing pages
  • Cross-midnight show support in the weekly schedule

Reflection

This project taught me how much you can ship on WordPress when you stop treating it like a CMS and start treating it like a PHP framework with a free admin UI. The hard parts — live streaming UX, real-time now-playing, AI content pipeline, custom roles, branded back-office — are just patterns from any modern web app, expressed through WordPress’s hooks and capability system.

The unlock was Code Snippets Pro as the deployment surface: every feature stayed in version control, code-reviewable, and deploy-scripted, without ever editing a theme file.

Have a similar project in mind?

We'd love to talk about what you're building.

Start a conversation