201 lines
5.1 KiB
Markdown
201 lines
5.1 KiB
Markdown
# Beta Signup Form Deployment Log
|
|
|
|
**Issue:** FRE-668 - Deploy beta signup form at scripter.app/beta
|
|
**Date:** 2026-04-26
|
|
**Status:** ✅ Complete
|
|
**Owner:** CMO
|
|
|
|
---
|
|
|
|
## What Was Deployed
|
|
|
|
A comprehensive beta application form at `/beta` that collects detailed information from screenwriters applying to the 3-week beta program (April 26 - May 16, 2026).
|
|
|
|
## Technical Implementation
|
|
|
|
### Frontend
|
|
- **Component:** `/src/routes/beta/BetaSignup.tsx`
|
|
- 14 qualification questions across 4 sections
|
|
- Form validation with required fields
|
|
- Auto-qualification check (feedback commitment required)
|
|
- Success state with next steps
|
|
- Responsive design for mobile/tablet
|
|
|
|
- **Styling:** `/src/styles/beta-signup.css`
|
|
- Clean, professional design matching brand
|
|
- Gradient background
|
|
- Card-based form layout
|
|
- Custom checkbox groups
|
|
- Mobile-responsive breakpoints
|
|
|
|
### Backend
|
|
- **API Router:** `/server/trpc/beta-router.ts`
|
|
- tRPC mutation endpoint `beta.signup`
|
|
- Zod validation for all 14 fields
|
|
- Duplicate email detection
|
|
- Metadata storage for qualification
|
|
|
|
- **Database:** Uses existing `waitlist_signups` table
|
|
- Status: `beta-pending` for review queue
|
|
- Metadata JSON field stores all beta-specific data
|
|
- Event logging in `waitlist_events` table
|
|
|
|
### Integration
|
|
- **Hook:** `useBetaSignup()` in `/src/lib/api/trpc-hooks.ts`
|
|
- **Route:** Added `/beta` to app router in `/src/routes.tsx`
|
|
- **Router:** Registered `beta` router in `/server/trpc/index.ts`
|
|
|
|
## Form Sections
|
|
|
|
### 1. About You (4 questions)
|
|
- Name, email (required)
|
|
- Primary role (6 options)
|
|
- Scripts written (4 experience levels)
|
|
|
|
### 2. Current Tools (3 questions)
|
|
- Current software (8 options)
|
|
- What they love (open text)
|
|
- What frustrates them (open text)
|
|
|
|
### 3. Beta Commitment (4 questions)
|
|
- Hours/week writing (4 levels)
|
|
- Willing to provide feedback (required - must be "Yes, absolutely")
|
|
- Discord participation (3 options)
|
|
- Discord username (optional)
|
|
|
|
### 4. Use Cases (3 questions)
|
|
- Features excited about (6 checkboxes, multi-select)
|
|
- How they heard about Scripter (7 channels)
|
|
- Additional info (optional open text)
|
|
|
|
## Qualification Logic
|
|
|
|
**Auto-accept criteria:**
|
|
- Professional writers: 10+ scripts OR 20+ hours/week
|
|
- Film school students
|
|
- Beta advocates (influencers, bloggers)
|
|
- Must be willing to provide weekly feedback
|
|
|
|
**Waitlist criteria:**
|
|
- Unwilling to provide feedback (form blocks submission)
|
|
- Casual writers: 0-1 scripts AND 0-5 hours/week
|
|
- Bot/spam submissions
|
|
|
|
**Review manually:**
|
|
- Edge cases
|
|
- High-potential users unsure about commitment
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
User submits form
|
|
↓
|
|
POST /api/trpc/beta.signup
|
|
↓
|
|
Validate input (Zod schema)
|
|
↓
|
|
Check for duplicate email
|
|
↓
|
|
Insert into waitlist_signups
|
|
- status: "beta-pending"
|
|
- source: "beta"
|
|
- metadata: { all 14 fields }
|
|
↓
|
|
Log event in waitlist_events
|
|
- eventType: "beta-application"
|
|
- eventData: { beta-specific fields }
|
|
↓
|
|
Return success response
|
|
↓
|
|
Show success screen to user
|
|
```
|
|
|
|
## Build Status
|
|
|
|
```bash
|
|
npx vite build
|
|
✓ built in 3.38s
|
|
|
|
dist/index.html 1.14 kB
|
|
dist/assets/main-B2U0hTg1.css 33.16 kB (includes beta styles)
|
|
dist/assets/main-kFSMP3Dq.js 1,663.84 kB (includes beta component)
|
|
```
|
|
|
|
**Status:** ✅ Build successful, ready for deployment
|
|
|
|
## URLs
|
|
|
|
- **Production:** `https://scripter.app/beta`
|
|
- **Success screen:** Shows next steps and social sharing options
|
|
- **Navigation:** Accessible from main nav (planned)
|
|
|
|
## Updated Files
|
|
|
|
### Created
|
|
1. `/src/routes/beta/BetaSignup.tsx` - Form component
|
|
2. `/src/styles/beta-signup.css` - Form styles
|
|
3. `/server/trpc/beta-router.ts` - API router
|
|
|
|
### Modified
|
|
1. `/src/routes.tsx` - Added /beta route
|
|
2. `/src/lib/api/trpc-hooks.ts` - Added useBetaSignup hook
|
|
3. `/server/trpc/index.ts` - Registered beta router
|
|
4. `/marketing/beta-signup-form.md` - Updated status to deployed
|
|
5. `/plans/FRE-647-beta-program-setup.md` - Updated progress
|
|
|
|
## Next Actions
|
|
|
|
### Immediate (CMO)
|
|
1. Drive traffic to `/beta`:
|
|
- Send Priority 1 influencer emails (5 contacts)
|
|
- Post to Reddit r/Screenwriting
|
|
- Twitter/X campaign
|
|
- Email waitlist conversions
|
|
|
|
2. Review applications daily:
|
|
- Check `waitlist_signups` where `status = 'beta-pending'`
|
|
- Qualify based on criteria
|
|
- Send acceptance emails within 48 hours
|
|
- Track Discord invites
|
|
|
|
### Metrics to Track
|
|
- Applications received per day
|
|
- Acceptance rate
|
|
- Time to respond
|
|
- Beta user activation rate (% who log in)
|
|
- Weekly survey response rate
|
|
- Discord participation rate
|
|
|
|
## Access for Review
|
|
|
|
To review beta applications:
|
|
|
|
```sql
|
|
SELECT
|
|
id,
|
|
name,
|
|
email,
|
|
source,
|
|
status,
|
|
metadata,
|
|
createdAt
|
|
FROM waitlist_signups
|
|
WHERE source = 'beta'
|
|
ORDER BY createdAt DESC;
|
|
```
|
|
|
|
Parse the `metadata` JSON field for:
|
|
- `primaryRole` - Screenwriter type
|
|
- `scriptsWritten` - Experience level
|
|
- `hoursPerWeek` - Time commitment
|
|
- `willingFeedback` - Must be "Yes, absolutely"
|
|
- `joinDiscord` - Community participation
|
|
- `excitedFeatures` - Feature interests
|
|
|
|
---
|
|
|
|
**Deployment completed by:** CMO
|
|
**Time:** 2026-04-26 08:15 AM
|
|
**Build:** ✅ Successful
|
|
**Status:** ✅ Ready for production traffic
|