Add the Workshops page and keep each sign-up on the site.

The form is built once to the settled field set, and a valid send is saved before anyone is emailed.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
adilalloandCursor committed 2026-11-03 19:56:49 -07:00
1 parent 974a5ace4c
commit c0ba3a3798
50 files changed
+2773 -1

No files matched your search

@@ -0,0 +1,28 @@
-- CreateTable
CREATE TABLE "WorkshopInquiry" (
"id" TEXT NOT NULL,
"challenges" TEXT[],
"challengeOther" TEXT,
"unspokenQuestion" TEXT,
"organizationName" TEXT NOT NULL,
"organizationKind" TEXT NOT NULL,
"memberCount" TEXT NOT NULL,
"contactName" TEXT NOT NULL,
"email" TEXT NOT NULL,
"role" TEXT,
"sourcePage" TEXT NOT NULL,
"sourceUrl" TEXT,
"routeSuggestion" TEXT NOT NULL,
"largeOrganization" BOOLEAN NOT NULL,
"inboxNotifiedAt" TIMESTAMP(3),
"confirmationSentAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "WorkshopInquiry_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "WorkshopInquiry_email_idx" ON "WorkshopInquiry"("email");
-- CreateIndex
CREATE INDEX "WorkshopInquiry_createdAt_idx" ON "WorkshopInquiry"("createdAt");
+25
View File
@@ -147,6 +147,31 @@ model MethodFacet {
@@index([group, value, matches])
}
/// Workshop page inquiry. Kept for the privacy-policy period, then deleted.
/// Member count is stored as the answer given. It never sets a price.
model WorkshopInquiry {
id String @id @default(cuid())
challenges String[]
challengeOther String?
unspokenQuestion String?
organizationName String
organizationKind String
memberCount String
contactName String
email String
role String?
sourcePage String
sourceUrl String?
routeSuggestion String
largeOrganization Boolean
inboxNotifiedAt DateTime?
confirmationSentAt DateTime?
createdAt DateTime @default(now())
@@index([email])
@@index([createdAt])
}
/// Template-level recommendation matrix (Template Composition, cols G–Y). Canonical
/// JSON in `data/templates/templateFacet.json`; rebuilt at seed like
/// `MethodFacet`. One row per `(templateSlug, group, value)` where the matrix