v3.0.0 — Growth Surface: Landing Page + PostHog Funnel
🏠 StayOps — v3.0.0
Phase 3 complete. The public-facing growth surface is live at the root URL — a premium marketing landing page with PostHog funnel tracking, UTM attribution, and lead capture into Supabase.
What's included
Route group architecture
app/(marketing)/— public landing page at/, light-only, Poppins font, OG metaapp/(app)/— ops console at/dashboard,/bookings,/reconciliation,/reports(URLs unchanged)- Root
app/layout.tsxslimmed to bare font shell; each group has its own layout
Landing page sections
| Section | Component | Notes |
|---|---|---|
| Sticky nav | MarketingNav |
Scroll-to-anchor links, transparent overlay on dark hero |
| Hero | Hero |
Dark slate/blue-950 gradient mesh, floating glassmorphic card, animated pulse dot |
| Metrics strip | MetricsStrip |
IntersectionObserver count-up animation (86+ bookings, 5 conflict types, 3 channels) |
| Features grid | FeaturesGrid |
6 cards with Lucide icons, stagger entrance animation |
| How it works | HowItWorks |
3-step numbered flow with dashed connector |
| Social proof | SocialProof |
Testimonial card with 5-star rating |
| Lead form | LeadForm |
PostHog funnel events, honeypot spam guard, optional fields |
PostHog funnel events
| Event | When |
|---|---|
landing_page_viewed |
Auto-captured on init |
form_start |
First focus on email field |
form_submit_attempt |
Submit clicked |
lead_created |
201 response — conversion |
form_error |
API error |
Leads API
POST /api/leads— Zod validation, honeypot guard (silent 200), Drizzle insert- 4 TDD tests: valid email, honeypot, invalid email, optional field passthrough
- Schema:
property_count+channels_usedadded toleadstable (Migration 0003)
Test suite
| File | Tests |
|---|---|
lib/reconciliation.test.ts |
8 |
lib/ai-agent.test.ts |
8 |
lib/weekly-report.test.ts |
7 |
lib/leads-api.test.ts |
4 (new) |
| Total | 27 |
CI: run 26707895559 — both jobs green.
Roadmap
v4.0.0— Phase 4 portfolio polish: integration tests, Playwright E2E, README screenshots