SidelineWorks — Domain Scope & RTSport Migration Plan
2026-05-09 | Author: Wadsworth 📋
Domain: sidelineworks.com (Matt-owned)
Existing: hoffdesk.com (blog/admin)
The Vision
SidelineWorks.com becomes the public face of the return-to-play platform. Two layers:
Layer 1: Public Marketing Site (this is what we build now)
- sidelineworks.com → public website
- Sales / landing pages
- Product pages (AT Dashboard, Coach Dashboard, Parent Portal)
- Support / knowledge base
- Blog (separate from HoffDesk — product-focused)
- Contact / demo request
- Pricing page (the $1,500-2,000/school model)
Layer 2: Application (RTSport migrates here later)
- app.sidelineworks.com or sidelineworks.com/app/ → the RTSport dashboards
- AT/Coach/Parent/AD login
- Sideline entry, case management, recovery tracking
- Message system between roles
- Currently lives at
hoffdesk.com/rtsport/— needs migration plan
What We Get With Our Own Domain
| Feature | How |
|---|---|
Cloudflare Email Routing → forward *@sidelineworks.com to us |
|
| Webhooks | hooks.sidelineworks.com — same Cloudflare Tunnel pattern as current |
| SSL | Automatic via Cloudflare |
| Subdomains | app.sidelineworks.com, docs.sidelineworks.com, status.sidelineworks.com |
| SPF/DKIM | For sending email as @sidelineworks.com (down the line) |
Current Architecture (unchanged)
titanium-butler (Beelink, 127.0.0.1)
├── port 8000 → HoffDesk API (blog, family, rtsport proxy)
│ └── Cloudflare Tunnel → hoffdesk.com
├── port 8001 → RTSport API (standalone FastAPI)
└── port 8002 → Radicale (CalDAV)
SidelineWorks.com would get its own Cloudflare Tunnel (separate from hoffdesk.com), pointing to either:
- A new port on the Beelink (e.g. port 8003) running a marketing site
- OR the same port 8000 with host-based routing (Tunnel sends hostname → app routes)
What We Build (Phase 1: Marketing Site)
1. Public Pages
| Page | Purpose |
|---|---|
/ |
Hero + value prop + 3-role cards (AT/Coach/Parent) + CTA |
/product |
Feature breakdown: 3-tap sideline entry, recovery tracking, case management |
/pricing |
School ($1,500-2,000/yr), District ($4-8K/yr), Enterprise (negotiated) |
/demo |
Request form → webhooks → Telegram notify Matt |
/contact |
Support contact form |
/blog |
Product blog (separate from HoffDesk) |
2. Tech Stack
- Same as current: FastAPI + Jinja2 + HTMX (vanilla JS)
- Hosted on: Beelink via new Cloudflare Tunnel
- No auth needed — fully public site
- Design: Dark theme from RTSport dashboards (existing palette). Clean, minimal, professional. Communicates high-impact tool for high school athletes, not a startup.
3. Domain Infrastructure
- Cloudflare Tunnel for
sidelineworks.com→ local port - DNS:
AorCNAMEvia Cloudflare - Email routing:
hello@sidelineworks.com,support@sidelineworks.com→ current iCloud/outlook - Webhooks:
hooks.sidelineworks.com→ same Beelink
RTSport Migration Path (Phase 2+)
When
After marketing site is live. RTSport stays at hoffdesk.com/rtsport/ for now.
Steps
- Build marketing site on sidelineworks.com
- When RTSport is beta-ready, move dashboards to
app.sidelineworks.com - Keep HoffDesk as internal admin/blog — never exposes RTSport data
Benefits of Separate Domain
- No confusion between "this is a product" and "this is my personal blog"
- Professional email addresses for sales outreach
- Clean separation: HoffDesk = the workshop, SidelineWorks = the product
What We DON'T Do (yet)
- ❌ No email sending infrastructure (SPF/DKIM config deferred)
- ❌ No multi-server architecture (everything on Beelink)
- ❌ No payment processing (pricing page is informational)
- ❌ No user signup flow (demo request → manual outreach)
- ❌ No migration of RTSport from hoffdesk.com (Phase 2)
Brand Architecture (2026-05-09 ✅)
Two Marks Required
1. SidelineWorks — Master Brand
- Full wordmark + icon/emblem for sidelineworks.com
- The company / platform brand
- Style: Clean, professional, high-impact. Dark theme palette from RTSport alpha.
- Sits in header of marketing site, blog, all public pages
2. RTSport — Product Wordmark
- Complimentary wordmark, not competing with SidelineWorks
- Use case: sub-brand on the app/sign-in pages, footer credit "RTSport — a product by SidelineWorks"
- Same design language, smaller scale, clearly subordinate
- Maintains product identity for the AT/Coach/Parent audience who know "RTSport"
Relationship:
SidelineWorks
└── RTSport (product by SidelineWorks)
└── (future products)
Demo Form → Telegram Notifications
On the /demo page, a form collects:
- School name
- Contact name
- Email
- Phone (optional)
- Role (AT / Coach / AD)
- Message
On submit: The webhook sends a Telegram message to Matt's DM with the lead details. This requires:
1. A POST endpoint on port 8003 that receives the form
2. A Telegram API call from the Beelink (using existing bot token) to notify Matt
Matt sees something like:
📋 New Demo Request
School: Green Bay South
Contact: Jake Thompson (AT)
Email: jake@south.k12.wi.us
Phone: (920) 555-0142
Message: Looking for district pricing, 3 high schools
This is implementable with 50 lines of Python and the existing Telegram bot setup.
Director Decisions (2026-05-09 ✅)
- Design: Dark theme from RTSport alpha, clean and minimal. Convey high-impact tool for high school athletes.
- Blog: Separate product blog on sidelineworks.com. HoffDesk stays personal.
- Email: Phase 2 — not setting up forwarding now.