Cory Copeland
Back to work

SpiceShelf

v0.1.0 app prototype · pre-launch waitlist

A genre-native romantasy book companion for the BookTok crowd — a polished brand, a live landing page that showcases the real product (rendered book spines and in-app mobile screens, not stock art), and a waitlist backend, now extended with a v0.1.0 mobile app prototype: a spine-out wooden bookshelf with a 12-template spine renderer, seven switchable shelf themes that re-skin every book, and a procedural-free / AI-baked-premium 'special editions' monetization model.

  • Community
  • Brand system
  • Mobile app
  • Design system
  • Next.js
  • Monetization

Updated 2026-05-21

SpiceShelf

Overview

SpiceShelf is a romantasy and spicy-fantasy reader community taken from audience insight through brand, landing page, waitlist infrastructure, and launch strategy — before overbuilding the app itself. The live site at spiceshelf.app collects waitlist signups, transactional email is wired through Resend, and the brand system (Cinzel display type, gold/parchment palette, pepper-themed heat ramp) is fully defined.

The case study is about earning the right to build software by getting the positioning, audience read, and channel plan right first.

The problem

The romantasy genre is heating up — multiple titles in the film/TV pipeline, BookTok vocabulary (tropes, heat levels, "book hangovers") leaking into mainstream attention. The existing reader tools were built for a different era:

  • Goodreads is ad-supported, Amazon-owned, and optimized for catalog scale. The default for everyone, the right tool for almost no one.
  • StoryGraph / Fable are closer in spirit but generalist.
  • BookTok itself is where the heat-level vocabulary actually lives — but it's a feed, not a place to track or recommend.

The window to be the default companion app for the romantasy reader is open right now. The bet is that "for readers, not advertisers" — purpose-built for the heat-aware, trope-aware way this audience already talks about books — is the right wedge.

Audience

  • Romantasy and spicy-fantasy readers, BookTok-adjacent.
  • Readers who already think in tropes, heat levels, and book hangovers — not just genres and stars. Reader-insider register, no onboarding-the-genre tone.

What I built

  • A complete brand system. Cinzel + Cinzel Decorative for display, Inter for body. Gold/parchment palette with a five-tier pepper-themed heat ramp (#D4A84B → #C41E2A). Logo, motion philosophy (calm hero, no scroll jacking), tagline ("The Ultimate Romantasy & Spicy Fantasy Companion"), brand promise ("We bring the heat").
  • The product concept. Five feature pillars defined and lived on the landing page: PepperScale (the 5-level heat rating), DogEar (tag moments within a book), TropeSearch (recommendations by trope + heat — the real differentiator), ShowMeYourShelf (shareable shelves), BookHangover (post-read recovery suggestions).
  • A live landing page at spiceshelf.app with the waitlist signup as the only currently-active surface.
  • Self-hosted waitlist backend on PocketBase, with a documented collection schema, API rules, env vars, and an admin UI runbook for recovery scenarios.
  • Transactional email through Resend — DNS, API key setup, smoke test, documented failure modes.
  • A marketing channel plan with per-channel cadence, dimensions, and voice notes for Instagram, TikTok, X, and Pinterest.
  • Deployment topology — Docker on LXC 201, behind a Cloudflare Tunnel.

Product decisions

  • Brand and audience first, app second. None of the five feature pillars is built yet. That's the point of the phase the project is currently in. Audience attention is the gating resource; product is the bet that pays off once attention exists. Shipping the app before the waitlist hits a meaningful number would compound the wrong risk.
  • The heat scale is the signature mechanic. Visual identity (the pepper ramp) and product (heat-aware search) both hang off the same primitive. The brand and the product point at the same thing, by design.
  • For readers, not advertisers. Stated as a positioning rule, not a marketing line. It rules out the most obvious monetization (Goodreads's model) and forces a different question — what would a paid tier look like for someone who deeply loves their books? Answer: TBD, and that's acceptable for this phase.
  • PocketBase, not a managed BaaS. Same self-host pattern used across the portfolio. The waitlist runs on infrastructure I operate, with a documented recovery runbook.
  • Decide the build order once the waitlist gives a signal. Which pillar ships first — PepperScale alone? Trope search first? — depends on what the signups respond to, not on a guess made today.

Technical architecture

  • Frontend: Next.js, self-hosted via Docker on LXC 201 (deployment-pve).
  • Backend: self-hosted PocketBase, collection schema and API rules versioned in the repo and documented in the wiki.
  • Email: Resend, with verified DNS, an API key in the LXC's .env, and a smoke-test path that's been exercised end-to-end.
  • Public surface: spiceshelf.app behind Cloudflare Tunnel.
  • Operational layer: waitlist runbook covers PocketBase env, admin auth, container health, and the unique-constraint failure mode. The runbook is the difference between "the site is down" and "the site is down for exactly this reason and here's the recovery."

Design and brand

The visual system reads warm and a little ornate without tipping into kitsch. Cinzel for display headlines, Cinzel Decorative for select accents, Inter carrying all the body weight so the page stays readable. The palette runs parchment to gold to deep crimson; the heat ramp is the palette extension, not a separate system. Motion is deliberately calm — the hero doesn't shout.

The voice is short, sensory, and reader-insider: imperative verbs, pepper / heat / spice metaphors used load-bearingly rather than decoratively.

Current status

  • Live waitlist at spiceshelf.app.
  • Brand system, product concept, marketing plan, waitlist backend, and transactional email all defined and operational.
  • None of the five product pillars built yet — that's the next phase, gated on waitlist signal.

What I would do next

  • Run the launch / channel plan: Instagram first, then TikTok, with the dimensions and cadence already documented.
  • Pick the first pillar based on what the waitlist responds to. PepperScale alone (the simplest, the most distinctive) is the leading candidate.
  • Tighten the open product questions: free vs paid tiers, and whether DogEar requires book-text integration or stays manual (that's the largest architectural fork ahead).
  • Move the deployment cutover the rest of the way onto Cloudflare Tunnel.

Proof

  • Live site: spiceshelf.app
  • A brand snapshot (palette, type, heat ramp) and a waitlist-flow screenshot are still being prepared for this page; they will land here without changing the status above.