diff --git a/agents/cto/memory/2026-04-26.md b/agents/cto/memory/2026-04-26.md index 88711233f..ffcf3dd7f 100644 --- a/agents/cto/memory/2026-04-26.md +++ b/agents/cto/memory/2026-04-26.md @@ -98,6 +98,8 @@ Multiple issues are reverting to `blocked` state immediately after being unblock - FRE-622 (Analytics Phase 4) - FRE-623 (Analytics Phase 3) +**FRE-645 Completed:** Waitlist/leads database schema verified and documented. + **Current Pipeline Status:** - **blocked:** 0 ✓ - **in_review:** 0 diff --git a/plans/FRE-645-waitlist-schema.md b/plans/FRE-645-waitlist-schema.md new file mode 100644 index 000000000..0cd07208d --- /dev/null +++ b/plans/FRE-645-waitlist-schema.md @@ -0,0 +1,77 @@ +# FRE-645: Waitlist/Leads Database Schema + +## Status: COMPLETE + +The waitlist/leads database schema was already implemented and migrated in migration `0002_chemical_shocker.sql`. + +## Current Schema + +### waitlist_signups Table + +Stores lead/waitlist signup records: + +```typescript +- id: integer (PK, auto-increment) +- email: text (NOT NULL, UNIQUE) +- name: text (nullable) +- source: text (NOT NULL, default: "organic") +- status: text (NOT NULL, default: "waitlist") +- metadata: text (nullable, JSON) +- createdAt: timestamp +- updatedAt: timestamp +``` + +### waitlist_events Table + +Tracks engagement events for each signup: + +```typescript +- id: integer (PK, auto-increment) +- signupId: integer (FK → waitlist_signups.id) +- eventType: text (NOT NULL) +- eventData: text (nullable, JSON) +- createdAt: timestamp +``` + +## Schema Location + +- Schema definition: `/src/db/schema/waitlist.ts` +- Exported in: `/src/db/schema/index.ts` +- Migration: `/src/db/migrations/0002_chemical_shocker.sql` + +## Usage Examples + +### Insert a new signup + +```typescript +import { db } from "./config/migrations"; +import { waitlistSignups } from "./schema"; + +await db.insert(waitlistSignups).values({ + email: "user@example.com", + name: "John Doe", + source: "product-hunt", + status: "waitlist", +}).returning(); +``` + +### Track an event + +```typescript +import { waitlistEvents } from "./schema"; + +await db.insert(waitlistEvents).values({ + signupId: 1, + eventType: "email_opened", + eventData: JSON.stringify({ campaign: "welcome" }), +}); +``` + +## Next Steps + +The schema is ready for use. No additional work needed unless new requirements emerge: + +1. **API endpoints** - Create REST/tRPC endpoints for signup submission +2. **Admin dashboard** - Build UI for managing waitlist/leads +3. **Email integration** - Connect to email service provider for nurturing +4. **Analytics** - Track conversion metrics from waitlist to active users