Case Study
Coyotes and Candles: Building a Full-Service Creative Platform for a Two-Person Business
Role: Solo Full-Stack Developer & Co-founderDuration: June 2026 (~8 days active development)Status: Live and accepting bookings
Next.js 16SupabasePostgreSQLStripePayPalAgoraUpCloud + pm2
The Problem
My wife Alli and I run Coyotes and Candles - a two-person business offering tarot readings, D&D one-shots, private group campaigns, and an online community. Before this build, every piece of the business lived in a different tool:
- -Calendly for scheduling (no payment, no video link, no follow-up)
- -Zoom for video (manual links, no native context)
- -Patreon and Ko-fi for subscriptions (fragmented audiences)
- -Discord for community (disconnected from everything else)
Customers had to bounce between five tools to book a session, join a video call, and find the community. We needed a single platform that handled everything from booking through post-session follow-up.
What Was Built
One integrated platform with six distinct booking flows, two payment providers, embedded live video, a full virtual tabletop, a community system, and an admin dashboard - replacing all five tools.
Booking & Payments
- ·6 booking flows: tarot readings, one-shots, private groups, campaigns with deferred billing, gift cards, subscriptions
- ·Stripe for one-time payments and recurring subscriptions
- ·PayPal Subscriptions API with complete webhook lifecycle management
- ·20+ automated email templates: confirmations, reminders, failures, and recovery
- ·Real-time availability calendar with timezone awareness
- ·Automatic refunds for cancellations 48+ hours before session
- ·Self-service rescheduling and campaign seat reservations with deferred payment
- ·Gift cards with promo codes
Session Delivery (VTT)
- ·Embedded Agora live video rooms - no downloads required
- ·Full virtual tabletop: tokens, fog of war, freehand drawing, dice roller
- ·D&D 5e character sheets with full SRD compendium integration
- ·Shadowrun 4e character sheets with Chummer XML import
- ·GM-controlled music via YouTube
- ·CoyoteCloud: live DiceCloud write-back and two-way sync so character changes in DiceCloud appear in the VTT instantly
Community
- ·Discord-style channel system, campaign-gated channels
- ·Direct messaging, reactions, typing indicators
- ·Web push notifications
- ·Moderation tools and audit logs
- ·Optional Discord webhook mirroring
Admin Dashboard
- ·Booking and campaign management
- ·Player management with custom pricing and attendance tracking
- ·Session notes and recaps
- ·Revenue analytics and P&L view
- ·Google Search Console integration
- ·Error monitoring with deduplication
Screenshots






Technical Architecture
FrontendNext.js 16 (App Router), TypeScript, Tailwind CSS
BackendSupabase (PostgreSQL, Auth, Realtime) with Row Level Security
DeploymentUpCloud VPS via pm2 + Caddy reverse proxy
PaymentsStripe (one-time + recurring), PayPal Subscriptions API
VideoAgora SDK - embedded rooms, no downloads
SecurityNonce-based CSP, atomic database operations, timing-safe comparisons
ComplianceGDPR-ready, Finnish VAT (25.5%), JSON-LD structured data, Finnish sole trader (Y-tunnus: 3572436-7)