ship-create 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/create.mjs +301 -0
- package/package.json +25 -0
- package/templates/.cursorrules +51 -0
- package/templates/.windsurfrules +51 -0
- package/templates/AGENTS.md +51 -0
- package/templates/CLAUDE.md +51 -0
- package/templates/docs/HUMAN_FLOW.md +205 -0
- package/templates/docs/PROJECT.md +154 -0
- package/templates/docs/PROMPTS.md +246 -0
- package/templates/docs/product-types/CRM_TEMPLATE.md +78 -0
- package/templates/docs/product-types/DASHBOARD_TEMPLATE.md +78 -0
- package/templates/docs/product-types/DIRECTORY_TEMPLATE.md +75 -0
- package/templates/docs/product-types/INTERNAL_TOOL_TEMPLATE.md +77 -0
- package/templates/docs/product-types/LEADGEN_TEMPLATE.md +78 -0
- package/templates/docs/product-types/MARKETPLACE_TEMPLATE.md +81 -0
- package/templates/docs/product-types/MEMBERSHIP_TEMPLATE.md +80 -0
- package/templates/docs/product-types/SAAS_TEMPLATE.md +79 -0
- package/templates/starter-kit/README.md +64 -0
- package/templates/starter-kit/app/backoffice/content/page.tsx +93 -0
- package/templates/starter-kit/app/backoffice/layout.tsx +105 -0
- package/templates/starter-kit/app/backoffice/page.tsx +165 -0
- package/templates/starter-kit/app/backoffice/settings/page.tsx +145 -0
- package/templates/starter-kit/app/backoffice/users/page.tsx +134 -0
- package/templates/starter-kit/app/globals.css +141 -0
- package/templates/starter-kit/app/layout.tsx +43 -0
- package/templates/starter-kit/app/member/(app)/billing/page.tsx +137 -0
- package/templates/starter-kit/app/member/(app)/content/page.tsx +111 -0
- package/templates/starter-kit/app/member/(app)/dashboard/page.tsx +129 -0
- package/templates/starter-kit/app/member/(app)/layout.tsx +130 -0
- package/templates/starter-kit/app/member/(app)/settings/page.tsx +96 -0
- package/templates/starter-kit/app/member/login/page.tsx +106 -0
- package/templates/starter-kit/app/member/signup/page.tsx +120 -0
- package/templates/starter-kit/app/page.tsx +82 -0
- package/templates/starter-kit/app/sale/_components/cta-footer.tsx +66 -0
- package/templates/starter-kit/app/sale/_components/faq.tsx +107 -0
- package/templates/starter-kit/app/sale/_components/features.tsx +95 -0
- package/templates/starter-kit/app/sale/_components/hero.tsx +106 -0
- package/templates/starter-kit/app/sale/_components/pricing.tsx +133 -0
- package/templates/starter-kit/app/sale/_components/problem.tsx +59 -0
- package/templates/starter-kit/app/sale/_components/testimonials.tsx +100 -0
- package/templates/starter-kit/app/sale/page.tsx +21 -0
- package/templates/starter-kit/components/ui/avatar.tsx +50 -0
- package/templates/starter-kit/components/ui/badge.tsx +36 -0
- package/templates/starter-kit/components/ui/button.tsx +56 -0
- package/templates/starter-kit/components/ui/card.tsx +78 -0
- package/templates/starter-kit/components/ui/input.tsx +24 -0
- package/templates/starter-kit/components/ui/table.tsx +88 -0
- package/templates/starter-kit/components/ui/tabs.tsx +55 -0
- package/templates/starter-kit/lib/mock-data.ts +118 -0
- package/templates/starter-kit/lib/utils.ts +6 -0
- package/templates/starter-kit/next.config.mjs +6 -0
- package/templates/starter-kit/package.json +36 -0
- package/templates/starter-kit/postcss.config.mjs +9 -0
- package/templates/starter-kit/tailwind.config.ts +83 -0
- package/templates/starter-kit/tsconfig.json +41 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# CRM Template
|
|
2
|
+
|
|
3
|
+
A CRM lives or dies on one thing: does it make the next action obvious? Unlike most SaaS, the core unit isn't a "user session" — it's a **relationship over time** (a contact, a deal, a thread of activity). Plan around the pipeline, not the screen. Build the activity log before you build the dashboard — without a reliable history, every other feature (reminders, reporting, automation) has nothing to read from. Launch with one pipeline that matches how your first customer actually sells, not a generic "Lead → Qualified → Closed" template nobody asked for.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Contact records (people) with custom fields
|
|
8
|
+
- [ ] Company/account records, linked to multiple contacts
|
|
9
|
+
- [ ] Deal / opportunity records with stage + value
|
|
10
|
+
- [ ] Pipeline view (kanban by stage) — at least one, configurable later
|
|
11
|
+
- [ ] Activity log (calls, emails, notes, meetings) attached to contact/deal
|
|
12
|
+
- [ ] Tasks & reminders (due date, assignee, overdue flagging)
|
|
13
|
+
- [ ] Email integration or logging (manual log at minimum for MVP)
|
|
14
|
+
- [ ] Search across contacts/companies/deals
|
|
15
|
+
- [ ] Filters & saved views (e.g., "my open deals," "stale > 14 days")
|
|
16
|
+
- [ ] Reporting: pipeline value by stage, win rate, activity volume
|
|
17
|
+
- [ ] Import (CSV) and export
|
|
18
|
+
- [ ] User roles (admin, rep, read-only) if multi-user from day one
|
|
19
|
+
- [ ] Notifications (in-app and/or email) for assigned tasks and deal changes
|
|
20
|
+
- [ ] Duplicate detection/merge for contacts (becomes painful fast without it)
|
|
21
|
+
|
|
22
|
+
## Data Model Starter
|
|
23
|
+
|
|
24
|
+
| Entity | Key Fields | Relationships |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Contact | name, email, phone, title, source, owner_id | belongs to Company; has many Activities, Deals |
|
|
27
|
+
| Company | name, domain, industry, size, owner_id | has many Contacts, Deals |
|
|
28
|
+
| Deal | name, value, stage, probability, close_date, owner_id | belongs to Contact/Company; has many Activities |
|
|
29
|
+
| Pipeline / Stage | name, order, pipeline_id | belongs to Pipeline; has many Deals |
|
|
30
|
+
| Activity | type (call/email/note/meeting), body, timestamp, user_id | belongs to Contact and/or Deal |
|
|
31
|
+
| Task | title, due_date, status, assignee_id | belongs to Contact/Deal (optional) |
|
|
32
|
+
| User | name, email, role | has many Deals (as owner), Activities, Tasks |
|
|
33
|
+
|
|
34
|
+
## Core User Flows
|
|
35
|
+
|
|
36
|
+
1. Add contact → enrich with company → log first activity
|
|
37
|
+
2. Create deal → assign stage → move through pipeline via drag/dropdown
|
|
38
|
+
3. Log activity (call/email/note) → auto-timestamp → visible on contact timeline
|
|
39
|
+
4. Create task with due date → get reminded → mark complete
|
|
40
|
+
5. Filter pipeline view → spot stale/at-risk deals → take action
|
|
41
|
+
6. Run report → export pipeline summary for a sales meeting
|
|
42
|
+
7. Import contact list (CSV) → dedupe → assign owner
|
|
43
|
+
|
|
44
|
+
## Monetization Pattern
|
|
45
|
+
|
|
46
|
+
Per-seat subscription (price per user/month) is the dominant model — value scales with team size, and usage (deals, contacts) is rarely the metering unit at small scale. Common tiering: limit seats, pipelines, or automation/integrations by plan rather than contact count, since artificially capping contacts feels punitive and erodes trust. Add-on revenue from integrations (email sync, calling, enrichment) is common at scale but skip for MVP.
|
|
47
|
+
|
|
48
|
+
## Build Order (MVP fastest path)
|
|
49
|
+
|
|
50
|
+
1. Contact + Company CRUD (the system of record)
|
|
51
|
+
2. Deal model + single pipeline kanban view
|
|
52
|
+
3. Activity log attached to contact/deal (manual entry first)
|
|
53
|
+
4. Task/reminder with due date and "my tasks" view
|
|
54
|
+
5. Basic search + filter
|
|
55
|
+
6. Minimal reporting (pipeline value by stage)
|
|
56
|
+
7. Defer: email sync, automation rules, multiple pipelines, advanced permissions
|
|
57
|
+
|
|
58
|
+
## Example AI Build Prompts
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Build a CRM contact and deal data model in [Postgres/Supabase], with tables for
|
|
62
|
+
contacts, companies, deals, pipeline_stages, activities, and tasks as described
|
|
63
|
+
in the data model below. Include foreign keys, indexes on owner_id and stage,
|
|
64
|
+
and a soft-delete column. [paste Data Model Starter table]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Build a kanban-style pipeline view in [React/Next.js] that shows deals grouped
|
|
69
|
+
by stage as draggable cards. Dragging a card to a new column updates the deal's
|
|
70
|
+
stage via API call. Each card shows deal name, value, and days since last activity.
|
|
71
|
+
Highlight cards with no activity in 14+ days in a warning color.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Build an activity timeline component that shows all activities (calls, emails,
|
|
76
|
+
notes, meetings) for a given contact or deal, newest first, with the ability to
|
|
77
|
+
quickly log a new activity via an inline form (type, body, optional follow-up task).
|
|
78
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Dashboard / Internal Analytics Tool Template
|
|
2
|
+
|
|
3
|
+
A dashboard succeeds or fails on trust in the numbers, not visual polish — if a chart is wrong once, the whole tool gets ignored forever after. Plan the data pipeline (where does truth live, how fresh is it, what happens when a source is late or down) before designing a single widget. Permissions matter more here than in most product types, because dashboards often expose sensitive company data across teams — decide row-level and column-level access rules in the plan, not as an afterthought. Build the data layer and one reliable chart before adding the tenth widget nobody asked for.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Data source connections (database, API, CSV upload, or warehouse)
|
|
8
|
+
- [ ] Scheduled or real-time data refresh/sync
|
|
9
|
+
- [ ] Widget library (line, bar, pie/donut, table, KPI number, funnel)
|
|
10
|
+
- [ ] Dashboard builder/layout (arrange widgets, resize, save layout)
|
|
11
|
+
- [ ] Filters (date range, segment, dimension) that apply across widgets
|
|
12
|
+
- [ ] Drill-down (click a chart segment to see underlying rows)
|
|
13
|
+
- [ ] Role-based access (who sees which dashboards/data)
|
|
14
|
+
- [ ] Export (CSV, PDF, image of chart/dashboard)
|
|
15
|
+
- [ ] Scheduled reports (emailed snapshot on a cadence)
|
|
16
|
+
- [ ] Alerting (notify when a metric crosses a threshold)
|
|
17
|
+
- [ ] Caching/performance handling for large datasets
|
|
18
|
+
- [ ] Audit log of who viewed/changed dashboard configs (for sensitive data)
|
|
19
|
+
- [ ] Multi-dashboard navigation (saved views per team/use case)
|
|
20
|
+
|
|
21
|
+
## Data Model Starter
|
|
22
|
+
|
|
23
|
+
| Entity | Key Fields | Relationships |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Data Source | type, connection_config, last_synced_at | has many Metrics/Datasets |
|
|
26
|
+
| Dataset / Metric | name, source_id, query_or_field, refresh_interval | belongs to Data Source; used by many Widgets |
|
|
27
|
+
| Dashboard | name, owner_id, layout_config (JSON) | has many Widgets; belongs to User (owner) |
|
|
28
|
+
| Widget | type (chart/table/kpi), dataset_id, config (JSON), position | belongs to Dashboard; belongs to Dataset |
|
|
29
|
+
| User | name, email, role | has many Dashboards; restricted by Permission |
|
|
30
|
+
| Permission | user_id or role, resource_id, access_level | belongs to User/Role; applies to Dashboard or Dataset |
|
|
31
|
+
| Alert Rule | metric_id, condition, threshold, notify_channel | belongs to Dataset |
|
|
32
|
+
|
|
33
|
+
## Core User Flows
|
|
34
|
+
|
|
35
|
+
1. Admin connects a data source → defines datasets/metrics to track
|
|
36
|
+
2. Admin/user builds a dashboard → adds widgets → arranges layout → saves
|
|
37
|
+
3. User opens dashboard → applies date/segment filter → all widgets update
|
|
38
|
+
4. User clicks into a chart segment → sees underlying detail rows (drill-down)
|
|
39
|
+
5. User exports current view (CSV/PDF) for a meeting or report
|
|
40
|
+
6. Admin sets an alert rule → gets notified when a metric crosses threshold
|
|
41
|
+
7. Admin manages permissions → restricts a sensitive dashboard to specific roles
|
|
42
|
+
|
|
43
|
+
## Monetization Pattern
|
|
44
|
+
|
|
45
|
+
If internal-only: no direct revenue — value is measured in decision speed and reduced manual reporting labor (the build is justified by hours saved, not a price point). If sold as a product (analytics SaaS), monetization is typically per-seat or usage-tiered by data volume/number of dashboards/refresh frequency, with higher tiers unlocking more data sources, longer history retention, and advanced alerting/export.
|
|
46
|
+
|
|
47
|
+
## Build Order (MVP fastest path)
|
|
48
|
+
|
|
49
|
+
1. One reliable data source connection + one dataset (resist connecting everything at once)
|
|
50
|
+
2. 3-5 hardcoded but real KPI/chart widgets on a single fixed-layout page
|
|
51
|
+
3. Basic date-range filter applied across all widgets
|
|
52
|
+
4. Simple role check (admin vs. viewer) — skip granular permissions initially
|
|
53
|
+
5. CSV export of underlying data
|
|
54
|
+
6. Defer: drag-and-drop dashboard builder, alerting, scheduled email reports, drill-down
|
|
55
|
+
|
|
56
|
+
## Example AI Build Prompts
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Build a data pipeline that pulls data from [Postgres/API source] on a scheduled
|
|
60
|
+
job (every 15 minutes), aggregates it into a metrics table with columns for
|
|
61
|
+
metric_name, value, dimension, and timestamp, and exposes a REST endpoint that
|
|
62
|
+
returns time-series data filtered by metric_name and date range.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Build a dashboard page in [React/Next.js] with a global date-range filter at
|
|
67
|
+
the top and 4 widgets below it: a KPI number card, a line chart (trend over
|
|
68
|
+
time), a bar chart (breakdown by category), and a data table. All widgets
|
|
69
|
+
should re-fetch and update when the date filter changes, without a full page reload.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Add role-based access control to the dashboard app: viewers can see dashboards
|
|
74
|
+
shared with their role but cannot edit layout or data source connections;
|
|
75
|
+
admins can create/edit dashboards and manage which roles can access which
|
|
76
|
+
dashboard. Include a permissions table and middleware that checks access on
|
|
77
|
+
every dashboard load.
|
|
78
|
+
```
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Directory Website Template
|
|
2
|
+
|
|
3
|
+
A directory's entire value proposition is "comprehensive + easy to find what you need" — which means the plan must obsess over taxonomy (categories, tags, filters) before a single listing is entered. The chicken-and-egg problem is real: nobody searches an empty directory, and nobody submits to a directory nobody searches. Solve this in the plan, not in code — usually by seeding listings yourself (scrape/curate the first 50-200) before opening public submissions. Build search/filter and the listing detail page first; claim/submit flows and monetization come after you've proven people search.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Listing records with structured fields (name, category, location, description, contact)
|
|
8
|
+
- [ ] Category/taxonomy structure (categories, subcategories, tags)
|
|
9
|
+
- [ ] Search (by keyword) and filter (by category, location, attributes)
|
|
10
|
+
- [ ] Listing detail page (SEO-friendly URL, structured data for search engines)
|
|
11
|
+
- [ ] Submit-a-listing form (public or gated)
|
|
12
|
+
- [ ] Claim-a-listing flow (verify ownership of an existing unclaimed listing)
|
|
13
|
+
- [ ] Admin moderation queue (approve/reject new and claimed listings)
|
|
14
|
+
- [ ] Featured/sponsored listing placement (paid boost)
|
|
15
|
+
- [ ] Reviews or ratings on listings (optional but common)
|
|
16
|
+
- [ ] Map view (if location-relevant)
|
|
17
|
+
- [ ] Listing owner dashboard (edit own listing, view basic stats)
|
|
18
|
+
- [ ] SEO essentials: sitemap, meta tags per listing, canonical URLs
|
|
19
|
+
- [ ] Reporting for admin: listing count by category, top searched terms
|
|
20
|
+
|
|
21
|
+
## Data Model Starter
|
|
22
|
+
|
|
23
|
+
| Entity | Key Fields | Relationships |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Listing | name, slug, description, status (pending/approved/rejected), location, claimed_by | belongs to Category; has many Reviews; optionally belongs to Owner (User) |
|
|
26
|
+
| Category | name, slug, parent_category_id | has many Listings; self-referencing for subcategories |
|
|
27
|
+
| Owner (User) | name, email, role | has many Listings (claimed) |
|
|
28
|
+
| Review | rating, body, author_name, listing_id | belongs to Listing |
|
|
29
|
+
| Featured Placement | listing_id, start_date, end_date, price_paid | belongs to Listing |
|
|
30
|
+
| Submission | raw submitted fields, status, submitted_at | converts into Listing upon approval |
|
|
31
|
+
|
|
32
|
+
## Core User Flows
|
|
33
|
+
|
|
34
|
+
1. Visitor searches/filters directory → views listing detail → contacts business or clicks through
|
|
35
|
+
2. Business owner submits new listing → admin reviews → listing goes live
|
|
36
|
+
3. Business owner claims existing unclaimed listing → verifies ownership → gains edit access
|
|
37
|
+
4. Business owner pays to feature their listing → appears in top/sponsored slots
|
|
38
|
+
5. Visitor leaves a review on a listing → review appears (moderated or instant)
|
|
39
|
+
6. Admin browses moderation queue → approves/rejects pending listings and reviews
|
|
40
|
+
|
|
41
|
+
## Monetization Pattern
|
|
42
|
+
|
|
43
|
+
Primary: featured/sponsored listing fees (flat fee or recurring subscription for premium placement, badges, or extra photos/fields). Secondary: lead-gen fees (charge businesses per inquiry/click generated). Some directories charge a one-time or annual listing fee instead of free submissions, especially in B2B niches. Display ads are a weak fallback — avoid as primary model unless traffic is already very high.
|
|
44
|
+
|
|
45
|
+
## Build Order (MVP fastest path)
|
|
46
|
+
|
|
47
|
+
1. Listing + Category data model, seeded manually or via import script
|
|
48
|
+
2. Listing detail page + category browse page (the SEO-indexable core)
|
|
49
|
+
3. Search and filter UI
|
|
50
|
+
4. Submit-a-listing form → goes into a pending/admin-approval state
|
|
51
|
+
5. Basic admin moderation queue (approve/reject)
|
|
52
|
+
6. Defer: claim flow, reviews, featured placement, map view, owner dashboard
|
|
53
|
+
|
|
54
|
+
## Example AI Build Prompts
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Build a directory listing data model in [Postgres/Supabase] with listings,
|
|
58
|
+
categories (supporting nested subcategories via parent_category_id), and a
|
|
59
|
+
status field (pending/approved/rejected) for moderation. Include a slug field
|
|
60
|
+
generated from the listing name for SEO-friendly URLs.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Build a directory browse page in [Next.js] with server-side rendering for SEO,
|
|
65
|
+
showing listings filtered by category and a text search box, paginated 20 per
|
|
66
|
+
page. Each listing card links to a detail page at /listings/[slug] with full
|
|
67
|
+
structured data (schema.org LocalBusiness) embedded for search engines.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Build a "submit your listing" public form that collects name, category,
|
|
72
|
+
description, location, and contact info, saves it with status=pending, and
|
|
73
|
+
sends an email notification to the admin. Build a simple admin moderation
|
|
74
|
+
page listing all pending submissions with approve/reject buttons.
|
|
75
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Internal Tool Template
|
|
2
|
+
|
|
3
|
+
Internal tools have a captive, forgiving-on-design but unforgiving-on-correctness user base — your coworkers will tolerate ugly UI but will not tolerate a tool that loses data, skips an approval step, or can't explain who did what. Plan around the existing company process you're replacing or augmenting (the paper form, the spreadsheet, the Slack thread) — the fastest path to adoption is matching that mental model, not redesigning the process from scratch. Build the audit log and permission model early; internal tools routinely get audited later for "who approved this" and you do not want that to be undiscoverable.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Internal auth (SSO/company login preferred over public signup)
|
|
8
|
+
- [ ] Role-based permissions matching org structure (requester/approver/admin)
|
|
9
|
+
- [ ] Core workflow/form (the specific process being digitized)
|
|
10
|
+
- [ ] Approval flow with explicit states (submitted → approved/rejected → done)
|
|
11
|
+
- [ ] Audit log: every state change recorded with actor, timestamp, before/after
|
|
12
|
+
- [ ] Notifications to relevant people at each workflow step
|
|
13
|
+
- [ ] Search/filter over historical records
|
|
14
|
+
- [ ] Integration with existing systems (HR system, accounting, Slack, email)
|
|
15
|
+
- [ ] Admin override/escalation path for stuck items
|
|
16
|
+
- [ ] Reporting/export for compliance or management review
|
|
17
|
+
- [ ] Bulk actions (approve multiple, reassign multiple) for power users
|
|
18
|
+
- [ ] Comments/notes thread on each record for context
|
|
19
|
+
- [ ] Configurable approval rules (e.g., amount-based routing) if process varies
|
|
20
|
+
|
|
21
|
+
## Data Model Starter
|
|
22
|
+
|
|
23
|
+
| Entity | Key Fields | Relationships |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| User | name, email, role, department, manager_id | has many Requests (as requester or approver) |
|
|
26
|
+
| Request / Record | type, status, submitted_by, current_step, payload (JSON) | belongs to User (requester); has many Approvals, Comments |
|
|
27
|
+
| Approval Step | request_id, approver_id, status, decided_at, comment | belongs to Request and User (approver) |
|
|
28
|
+
| Audit Log Entry | actor_id, action, target_type, target_id, before, after, timestamp | belongs to User; references any entity |
|
|
29
|
+
| Integration Sync Log | system_name, request_id, status, synced_at | belongs to Request |
|
|
30
|
+
| Comment | body, author_id, request_id, created_at | belongs to Request and User |
|
|
31
|
+
|
|
32
|
+
## Core User Flows
|
|
33
|
+
|
|
34
|
+
1. Employee submits a request via form → enters approval queue
|
|
35
|
+
2. Approver gets notified → reviews → approves or rejects with comment
|
|
36
|
+
3. (If multi-step) request routes to next approver based on rules (e.g., amount threshold)
|
|
37
|
+
4. Requester gets notified of final decision → record marked done/closed
|
|
38
|
+
5. Admin searches historical requests → filters by status/date/department for review
|
|
39
|
+
6. Admin exports records for compliance/audit purposes
|
|
40
|
+
7. Stuck request escalated to admin → manually reassigned or force-resolved
|
|
41
|
+
|
|
42
|
+
## Monetization Pattern
|
|
43
|
+
|
|
44
|
+
No direct monetization — value is internal: hours saved vs. manual process (spreadsheet/email/paper), error reduction, and audit/compliance readiness. Justify build cost by estimating time currently spent per cycle of the manual process × frequency × number of people involved, and track that as the tool's "ROI metric" post-launch instead of revenue.
|
|
45
|
+
|
|
46
|
+
## Build Order (MVP fastest path)
|
|
47
|
+
|
|
48
|
+
1. Core request form + record model matching the existing process exactly
|
|
49
|
+
2. Single-step approval (submit → approve/reject) before building multi-step routing
|
|
50
|
+
3. Notifications for submission and decision (email is enough for MVP)
|
|
51
|
+
4. Audit log capturing every status change
|
|
52
|
+
5. Basic search/filter over records for admins
|
|
53
|
+
6. Defer: multi-step routing rules, integrations with other internal systems, bulk actions
|
|
54
|
+
|
|
55
|
+
## Example AI Build Prompts
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Build a request/approval workflow data model in [Postgres/Supabase] with
|
|
59
|
+
requests, approval_steps, and audit_log tables as described below, where every
|
|
60
|
+
status change on a request automatically writes an audit_log entry with actor,
|
|
61
|
+
before-state, after-state, and timestamp via a database trigger or application
|
|
62
|
+
hook. [paste Data Model Starter table]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Build an approval queue page in [React/Next.js] that shows the logged-in
|
|
67
|
+
user's pending approvals (requests where they are the current approver),
|
|
68
|
+
with approve/reject buttons that require a comment on reject, and update the
|
|
69
|
+
request status and notify the requester immediately on decision.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Build an audit log viewer page for admins showing every action taken on
|
|
74
|
+
requests (submitted, approved, rejected, escalated) in a searchable, filterable
|
|
75
|
+
table with columns for actor, action, target request, timestamp, and an
|
|
76
|
+
expandable before/after diff for status or field changes.
|
|
77
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Lead Generation Website Template
|
|
2
|
+
|
|
3
|
+
A lead-gen site isn't a product you log into — it's a conversion machine where the "user" converts once (becomes a lead) and then exits to a sales or nurture process. Plan the *funnel*, not the app: traffic source → landing page → form → lead scoring → handoff/follow-up. The build is judged on conversion rate and lead quality, not feature richness. Build the form-to-CRM handoff before you polish design — a beautiful landing page that drops leads into a void is worse than a plain one that reliably notifies sales.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Landing page(s) with clear single CTA (one offer per page, no nav distractions)
|
|
8
|
+
- [ ] Lead capture form (name, email, phone, qualifying questions)
|
|
9
|
+
- [ ] Form validation + spam/bot protection (honeypot or captcha)
|
|
10
|
+
- [ ] Thank-you page / confirmation step (with next-step instruction)
|
|
11
|
+
- [ ] Lead storage (database or direct CRM push)
|
|
12
|
+
- [ ] Lead scoring rules (basic: based on answers, source, or company size)
|
|
13
|
+
- [ ] Email confirmation / autoresponder on submission
|
|
14
|
+
- [ ] Follow-up sequence (drip emails, typically 3-7 touches)
|
|
15
|
+
- [ ] CRM handoff/integration (webhook, Zapier, or native API push)
|
|
16
|
+
- [ ] UTM/source tracking on every lead (know which campaign drove it)
|
|
17
|
+
- [ ] A/B testing capability for headline/CTA/form length
|
|
18
|
+
- [ ] Analytics: conversion rate by page/source, form abandonment tracking
|
|
19
|
+
- [ ] Calendar booking integration (if next step is a sales call)
|
|
20
|
+
- [ ] Admin view: list of leads with status (new/contacted/qualified/converted)
|
|
21
|
+
|
|
22
|
+
## Data Model Starter
|
|
23
|
+
|
|
24
|
+
| Entity | Key Fields | Relationships |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Lead | name, email, phone, source, utm_campaign, status, score | belongs to Campaign; has many FollowUp events |
|
|
27
|
+
| Campaign / Landing Page | slug, headline, offer, traffic_source | has many Leads |
|
|
28
|
+
| Form Submission | raw form fields (JSON), submitted_at, ip_address | converts into Lead |
|
|
29
|
+
| FollowUp Event | type (email/call/sms), sent_at, sequence_step | belongs to Lead |
|
|
30
|
+
| Scoring Rule | field, condition, points | applied to Lead at submission time |
|
|
31
|
+
| Integration Log | destination (CRM/webhook), payload, status, sent_at | belongs to Lead |
|
|
32
|
+
|
|
33
|
+
## Core User Flows
|
|
34
|
+
|
|
35
|
+
1. Visitor arrives from ad/search/social → lands on offer-specific page
|
|
36
|
+
2. Visitor reads offer → fills lead capture form → submits
|
|
37
|
+
3. System scores lead, tags source, pushes to CRM/webhook
|
|
38
|
+
4. Visitor sees thank-you page → receives confirmation email immediately
|
|
39
|
+
5. Lead enters follow-up sequence (automated emails over days/weeks)
|
|
40
|
+
6. Sales/admin reviews lead list → marks contacted/qualified/converted
|
|
41
|
+
7. (Optional) Lead books a call directly via embedded calendar on thank-you page
|
|
42
|
+
|
|
43
|
+
## Monetization Pattern
|
|
44
|
+
|
|
45
|
+
The site itself rarely charges money directly — it generates leads that get monetized downstream: (a) internal sales team closes them into a paid product/service, (b) leads are sold/transferred to a third party (lead-gen-as-a-business, common in insurance/legal/home-services niches), or (c) leads feed a SaaS/membership funnel where the real monetization happens after signup. Plan and report on cost-per-lead and lead-to-customer rate as the core economics, not direct site revenue.
|
|
46
|
+
|
|
47
|
+
## Build Order (MVP fastest path)
|
|
48
|
+
|
|
49
|
+
1. Single landing page with one offer and one form (no CMS, hardcode content)
|
|
50
|
+
2. Form submission → store lead in database + send confirmation email
|
|
51
|
+
3. UTM/source capture on form submission
|
|
52
|
+
4. Simple admin list view of leads with status field
|
|
53
|
+
5. One CRM/webhook integration (even a basic Zapier-style webhook push)
|
|
54
|
+
6. Defer: lead scoring rules, multi-step follow-up sequences, A/B testing, calendar booking
|
|
55
|
+
|
|
56
|
+
## Example AI Build Prompts
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Build a lead capture landing page in [Next.js/HTML+Tailwind] with a single
|
|
60
|
+
headline, 3 benefit bullets, a lead form (name, email, phone, one qualifying
|
|
61
|
+
dropdown question), and a thank-you state shown inline after submit without
|
|
62
|
+
a page reload. Include UTM parameter capture from the URL into hidden form fields.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Build a lead intake API endpoint that accepts form submissions, validates
|
|
67
|
+
input, calculates a lead score based on the qualifying answer (e.g.,
|
|
68
|
+
budget > $5k = +30 points), stores the lead in the database with status=new,
|
|
69
|
+
sends a confirmation email via [Resend/SendGrid], and pushes the lead payload
|
|
70
|
+
to a configurable webhook URL for CRM handoff.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Build an admin leads dashboard showing all captured leads in a table with
|
|
75
|
+
columns for name, email, source/UTM campaign, score, status, and submitted
|
|
76
|
+
date, sortable by score and date, with a status dropdown per row (new/contacted/
|
|
77
|
+
qualified/converted) that updates inline without a page reload.
|
|
78
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Two-Sided Marketplace Template
|
|
2
|
+
|
|
3
|
+
A marketplace is the only product type where you must plan and build for two distinct users (supply and demand) who need each other to show up before either gets value — the classic cold-start problem. Plan liquidity strategy explicitly: which side do you seed manually first, and how do you fake density until real density exists (concierge onboarding, manually matched first transactions, seeded supply). Trust & safety (reviews, verification, dispute handling) is not a "nice to have later" feature here — it is the mechanism that lets strangers transact with each other, which is the entire point of the product. Build matching/discovery and a manual-first transaction flow before automating payments and escrow.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Supply-side profile/listing creation (the thing being offered: service, product, space)
|
|
8
|
+
- [ ] Demand-side browse/search/discovery with filters
|
|
9
|
+
- [ ] Matching logic (search ranking, recommendation, or request-based matching)
|
|
10
|
+
- [ ] Messaging between supply and demand sides
|
|
11
|
+
- [ ] Booking/transaction flow (request → accept/decline → confirm)
|
|
12
|
+
- [ ] Payment processing with escrow or delayed payout to supply side
|
|
13
|
+
- [ ] Take-rate fee calculation applied automatically on each transaction
|
|
14
|
+
- [ ] Reviews/ratings (typically both directions — buyer rates seller and vice versa)
|
|
15
|
+
- [ ] Identity/listing verification (badges, ID checks, or manual approval)
|
|
16
|
+
- [ ] Dispute/resolution flow (cancellation, refund request, support escalation)
|
|
17
|
+
- [ ] Availability/calendar management (if service or space-based)
|
|
18
|
+
- [ ] Notifications for both sides at every transaction stage
|
|
19
|
+
- [ ] Admin moderation tools (suspend users/listings, review disputes)
|
|
20
|
+
- [ ] Supply-side payout dashboard (earnings, pending payouts, history)
|
|
21
|
+
|
|
22
|
+
## Data Model Starter
|
|
23
|
+
|
|
24
|
+
| Entity | Key Fields | Relationships |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Supplier (User) | name, verification_status, payout_account | has many Listings; has many Transactions (as seller) |
|
|
27
|
+
| Buyer (User) | name, payment_method | has many Transactions (as buyer); has many Reviews (written) |
|
|
28
|
+
| Listing | title, price, category, availability, status | belongs to Supplier; has many Transactions, Reviews |
|
|
29
|
+
| Transaction / Booking | listing_id, buyer_id, supplier_id, status, amount, fee_amount | belongs to Listing, Buyer, Supplier |
|
|
30
|
+
| Review | rating, body, author_id, direction (buyer_to_seller/seller_to_buyer), transaction_id | belongs to Transaction |
|
|
31
|
+
| Message | thread_id, sender_id, body, timestamp | belongs to Transaction or a pre-transaction inquiry thread |
|
|
32
|
+
| Payout | supplier_id, amount, status, period | belongs to Supplier; aggregates multiple Transactions |
|
|
33
|
+
|
|
34
|
+
## Core User Flows
|
|
35
|
+
|
|
36
|
+
1. Supplier creates a listing → goes live after verification/moderation
|
|
37
|
+
2. Buyer browses/searches → filters → views listing detail
|
|
38
|
+
3. Buyer messages supplier or directly books/requests → supplier accepts/declines
|
|
39
|
+
4. Buyer pays → funds held (escrow) → service/product delivered
|
|
40
|
+
5. Funds released to supplier (minus take-rate fee) after completion/confirmation
|
|
41
|
+
6. Both sides leave reviews → reviews appear on respective profiles
|
|
42
|
+
7. Dispute raised (no-show, quality issue) → resolution flow → refund or payout decision
|
|
43
|
+
|
|
44
|
+
## Monetization Pattern
|
|
45
|
+
|
|
46
|
+
Take-rate (percentage or flat fee) on every transaction is the dominant model — typically 10-20% depending on category and whether the marketplace adds significant value (payment handling, trust, marketing) versus just listing. Variants: charge the take-rate to supply side, demand side, or split between both. Secondary revenue: featured/boosted listing placement (similar to directory monetization) and supplier subscription tiers for lower take-rate or extra visibility at volume.
|
|
47
|
+
|
|
48
|
+
## Build Order (MVP fastest path)
|
|
49
|
+
|
|
50
|
+
1. Listing model + supplier-side creation form (seed initial supply manually if needed)
|
|
51
|
+
2. Buyer-side browse/search page (no fancy matching algorithm yet — simple filters)
|
|
52
|
+
3. Manual or simple request-accept booking flow (skip real-time availability calendars at first)
|
|
53
|
+
4. Payment processing with a basic hold/release mechanism (escrow-lite via manual admin release if true escrow is too complex for MVP)
|
|
54
|
+
5. Take-rate fee calculation on each transaction
|
|
55
|
+
6. Reviews (single direction is fine for MVP, add bidirectional later)
|
|
56
|
+
7. Defer: messaging system, dispute automation, payout dashboards, identity verification, advanced matching
|
|
57
|
+
|
|
58
|
+
## Example AI Build Prompts
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Build a marketplace data model in [Postgres/Supabase] with suppliers, listings,
|
|
62
|
+
buyers, and transactions, where every transaction stores both the gross amount
|
|
63
|
+
and a calculated platform_fee (e.g., 15% of amount), and a net_payout field for
|
|
64
|
+
what the supplier receives. Include a transaction status enum: requested,
|
|
65
|
+
accepted, paid, completed, disputed, refunded.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Build a booking request flow in [Next.js] where a buyer submits a request on
|
|
70
|
+
a listing, the supplier receives a notification and can accept or decline
|
|
71
|
+
within the app, and accepting transitions the transaction to a payment step
|
|
72
|
+
using [Stripe Connect] with funds held until the buyer confirms completion.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Build a bidirectional review system where after a transaction is marked
|
|
77
|
+
completed, both the buyer and supplier are prompted to rate each other
|
|
78
|
+
(1-5 stars + optional text), reviews are only published once both sides have
|
|
79
|
+
submitted (or after a 14-day window), and each user's profile shows their
|
|
80
|
+
average rating and review count.
|
|
81
|
+
```
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Membership / Subscription Content Site Template
|
|
2
|
+
|
|
3
|
+
The thing that makes membership sites different from regular SaaS: the product *is* access and belonging, not a tool. Retention depends as much on perceived ongoing value (new content, community activity) as on features. Plan content cadence and tier structure before writing code — a membership site with great gating logic but no content pipeline behind it will churn in month two. Build billing and access-control first; content can be added continuously after launch, but a broken paywall kills trust immediately.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] User signup/login with email verification
|
|
8
|
+
- [ ] Subscription billing (recurring, via Stripe or similar)
|
|
9
|
+
- [ ] Multiple membership tiers with different access levels
|
|
10
|
+
- [ ] Content gating by tier (lock icon / paywall on restricted content)
|
|
11
|
+
- [ ] Content library (courses, posts, videos, downloads) with categories
|
|
12
|
+
- [ ] Progress tracking (for course-style content — completed/in-progress)
|
|
13
|
+
- [ ] Member profile / account settings (update card, change plan, cancel)
|
|
14
|
+
- [ ] Community space (comments, forum, or chat) — even basic threaded comments
|
|
15
|
+
- [ ] Trial period or free tier for top-of-funnel conversion
|
|
16
|
+
- [ ] Dunning/failed-payment handling (retry, grace period, downgrade)
|
|
17
|
+
- [ ] Email notifications (new content drop, billing receipt, payment failed)
|
|
18
|
+
- [ ] Admin panel: publish content, manage tiers, view member list
|
|
19
|
+
- [ ] Cancellation flow (self-serve, with retention offer optional)
|
|
20
|
+
- [ ] Search within gated content
|
|
21
|
+
|
|
22
|
+
## Data Model Starter
|
|
23
|
+
|
|
24
|
+
| Entity | Key Fields | Relationships |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Member (User) | name, email, status (active/cancelled/past_due) | has one Subscription; has many Progress records, Comments |
|
|
27
|
+
| Subscription | tier_id, status, current_period_end, stripe_customer_id | belongs to Member; belongs to Tier |
|
|
28
|
+
| Tier | name, price, billing_interval, access_level | has many Subscriptions; gates Content |
|
|
29
|
+
| Content | title, type (post/video/course/download), tier_required, published_at | belongs to Category; has many Progress records, Comments |
|
|
30
|
+
| Category | name, order | has many Content |
|
|
31
|
+
| Progress | content_id, member_id, status, completed_at | belongs to Member and Content |
|
|
32
|
+
| Comment | body, member_id, content_id, created_at | belongs to Member and Content |
|
|
33
|
+
|
|
34
|
+
## Core User Flows
|
|
35
|
+
|
|
36
|
+
1. Visitor browses free/teaser content → hits paywall → signs up
|
|
37
|
+
2. Choose tier → enter payment → instant access to gated content
|
|
38
|
+
3. Member browses content library by category → consumes content → progress saved
|
|
39
|
+
4. Member engages community (comment/discuss) on a piece of content
|
|
40
|
+
5. Member upgrades/downgrades tier → access adjusts immediately
|
|
41
|
+
6. Payment fails → grace period → member updates card or gets downgraded
|
|
42
|
+
7. Member cancels → access continues until period end → then reverts to free/no access
|
|
43
|
+
|
|
44
|
+
## Monetization Pattern
|
|
45
|
+
|
|
46
|
+
Recurring subscription revenue, typically monthly and annual options (annual at a discount to improve cash flow and reduce churn). Tiering usually splits on content depth, community access, or live components (e.g., "Basic" content-only vs. "Pro" with community + live calls). A free or trial tier is the primary acquisition lever — most membership sites convert from free content, not cold ads, so plan a generous-but-bounded free layer.
|
|
47
|
+
|
|
48
|
+
## Build Order (MVP fastest path)
|
|
49
|
+
|
|
50
|
+
1. Auth (signup/login) + member account model
|
|
51
|
+
2. Stripe subscription integration with one paid tier (skip multi-tier at first)
|
|
52
|
+
3. Content model + manual admin publishing (no fancy CMS needed yet)
|
|
53
|
+
4. Tier-based gating logic (show/hide or blur content based on access)
|
|
54
|
+
5. Member dashboard showing accessible content
|
|
55
|
+
6. Basic email notifications (welcome, receipt, payment failed)
|
|
56
|
+
7. Defer: community/comments, progress tracking, multiple tiers, dunning automation
|
|
57
|
+
|
|
58
|
+
## Example AI Build Prompts
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Build a content-gating system in [Next.js/Supabase] where each Content row has
|
|
62
|
+
a tier_required field, and the UI shows full content if the logged-in member's
|
|
63
|
+
active subscription tier meets or exceeds tier_required, otherwise shows a
|
|
64
|
+
blurred preview with an "Upgrade to unlock" CTA linking to the billing page.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Set up Stripe subscription billing for a membership site with two tiers
|
|
69
|
+
(Basic $19/mo, Pro $49/mo, both with annual options at 20% off). Implement
|
|
70
|
+
webhook handlers for subscription.created, updated, and payment_failed that
|
|
71
|
+
sync subscription status into our database, including a grace period of 5 days
|
|
72
|
+
on failed payment before downgrading access.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Build a member dashboard page that lists all content the member's tier grants
|
|
77
|
+
access to, grouped by category, with a progress indicator (not started / in
|
|
78
|
+
progress / completed) per item, and a "continue where you left off" section
|
|
79
|
+
at the top showing the 3 most recently accessed items.
|
|
80
|
+
```
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# General SaaS Product Template
|
|
2
|
+
|
|
3
|
+
Generic SaaS is the hardest type to template precisely because the "core workflow" is unique to your product — but the scaffolding around it (auth, billing, settings, multi-tenancy) is almost identical across every SaaS ever built. Plan the boring scaffolding fast and cheaply (most of it is now solvable with off-the-shelf tools/templates) so you can spend your real design effort on the one workflow that makes your product different. Decide your multi-tenancy model (single-user accounts vs. team/org accounts with multiple seats) before writing a single migration — retrofitting org-level data isolation later is one of the most expensive mistakes in SaaS.
|
|
4
|
+
|
|
5
|
+
## Feature Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Signup/login (email+password and/or OAuth)
|
|
8
|
+
- [ ] Email verification and password reset
|
|
9
|
+
- [ ] Organization/workspace model (if multi-user) with invite flow
|
|
10
|
+
- [ ] Subscription billing (plans, trial, upgrade/downgrade, cancel)
|
|
11
|
+
- [ ] Usage metering (if usage-based pricing) — track and enforce limits
|
|
12
|
+
- [ ] The core workflow (the actual reason the product exists — define explicitly)
|
|
13
|
+
- [ ] Settings: account, billing, team members, API keys/integrations
|
|
14
|
+
- [ ] Role-based permissions within an organization (owner/admin/member)
|
|
15
|
+
- [ ] Notifications (in-app and/or email) for key events
|
|
16
|
+
- [ ] Onboarding flow (first-run experience guiding to first value)
|
|
17
|
+
- [ ] Empty states for every list/dashboard (new accounts have no data yet)
|
|
18
|
+
- [ ] Audit/activity log for account-level actions (helps support & trust)
|
|
19
|
+
- [ ] API (if applicable) with documentation and key management
|
|
20
|
+
- [ ] Data export / account deletion (for compliance and trust)
|
|
21
|
+
|
|
22
|
+
## Data Model Starter
|
|
23
|
+
|
|
24
|
+
| Entity | Key Fields | Relationships |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Organization (Tenant) | name, plan_id, status, created_at | has many Users, Subscriptions, core-workflow entities |
|
|
27
|
+
| User | name, email, role, organization_id | belongs to Organization; has many Sessions |
|
|
28
|
+
| Subscription | plan_id, status, current_period_end, stripe_customer_id | belongs to Organization |
|
|
29
|
+
| Plan | name, price, billing_interval, limits (JSON) | has many Subscriptions |
|
|
30
|
+
| Invite | email, role, organization_id, status, token | belongs to Organization |
|
|
31
|
+
| Core Workflow Entity | (product-specific — e.g., "Project," "Document," "Campaign") | belongs to Organization; owned/edited by Users |
|
|
32
|
+
| Audit Log | actor_id, action, target, timestamp | belongs to Organization |
|
|
33
|
+
|
|
34
|
+
## Core User Flows
|
|
35
|
+
|
|
36
|
+
1. Visitor signs up → verifies email → lands in onboarding
|
|
37
|
+
2. New user completes onboarding → reaches "aha moment" of core workflow
|
|
38
|
+
3. User invites teammate → teammate joins organization with assigned role
|
|
39
|
+
4. User starts free trial → uses core workflow → hits paywall or trial expiry
|
|
40
|
+
5. User upgrades plan → billing processed → limits/features unlock
|
|
41
|
+
6. Admin manages team (roles, removal) and billing in settings
|
|
42
|
+
7. User integrates via API or third-party app (if applicable)
|
|
43
|
+
|
|
44
|
+
## Monetization Pattern
|
|
45
|
+
|
|
46
|
+
Recurring subscription, usually tiered by usage (seats, volume, feature access) or a hybrid of seat-based + usage overage. Freemium or free-trial is the dominant acquisition motion for self-serve SaaS; sales-assisted SaaS instead gates pricing behind a "Contact Us" for higher tiers. Annual billing at a discount improves cash flow and reduces churn — offer it from day one even with just one tier.
|
|
47
|
+
|
|
48
|
+
## Build Order (MVP fastest path)
|
|
49
|
+
|
|
50
|
+
1. Auth + single-tenant account model (add org/multi-user later if needed for MVP)
|
|
51
|
+
2. The one core workflow that is the entire reason to use the product — nothing else
|
|
52
|
+
3. Minimal settings (account info, password change)
|
|
53
|
+
4. Stripe integration with one paid plan + trial (skip tiering complexity at first)
|
|
54
|
+
5. Basic onboarding (a 2-3 step guided first action)
|
|
55
|
+
6. Defer: team/org multi-user, roles/permissions, API, audit log, usage metering
|
|
56
|
+
|
|
57
|
+
## Example AI Build Prompts
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Build a multi-tenant SaaS data model in [Postgres/Supabase] with organizations,
|
|
61
|
+
users (belonging to one organization with a role: owner/admin/member),
|
|
62
|
+
subscriptions, and plans. Add row-level security so users can only ever query
|
|
63
|
+
data scoped to their own organization_id.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Build a self-serve onboarding flow in [Next.js] for a new signup: after email
|
|
68
|
+
verification, walk the user through 3 steps (create first [core entity],
|
|
69
|
+
invite a teammate (optional/skippable), see their first piece of real data)
|
|
70
|
+
ending on the main app dashboard, with a progress indicator across all 3 steps.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Integrate Stripe Billing with a 14-day free trial, one monthly/annual plan,
|
|
75
|
+
and a customer portal link for self-serve plan management. Implement webhook
|
|
76
|
+
handlers for checkout.session.completed, customer.subscription.updated, and
|
|
77
|
+
customer.subscription.deleted that keep our organizations table's
|
|
78
|
+
subscription_status field in sync.
|
|
79
|
+
```
|