I Built a $10K/Month App from My Mom’s Basement

PostBridge (Web App) — Cursor prompts (copy/paste in order)

Prompt 1 — Project blueprint + tech choices

You are my senior full-stack engineer. Build “PostBridge”: a web app that lets users create social posts, attach media, and schedule/publish to multiple platforms from one place. Start with X (Twitter) first, then design the code so more platforms can be added.
Tech: Next.js (App Router) + TypeScript + Tailwind, Supabase (Auth + Postgres + Storage), Stripe subscriptions, Vercel deployment, PostHog analytics.
Deliver:

  1. A clear architecture plan (routes, components, services, DB schema).

  2. A phased build plan (MVP -> v1 -> v2).

  3. A folder structure proposal.

Important constraints:

  • Subscription required (no free plan). 7-day trial. Store trial status in DB.

  • Multi-tenant: each user has their own posts/schedules.

  • Scheduling must be reliable (background job pattern).

  • Platform integration must be pluggable (adapter pattern).
    Return the plan and the exact tasks for Prompt 2.

Prompt 2 — Initialize repo + tooling

Create the Next.js app with TypeScript and Tailwind. Add ESLint/Prettier. Set up env vars structure for Supabase, Stripe, PostHog, and platform APIs.
Implement:

  • Landing page route: / (simple marketing page + CTA to sign up)

  • Auth routes: /login, /signup (Supabase auth)

  • App shell under /app with protected routing: /app

  • A minimal UI kit: buttons, inputs, cards, toast
    Give me the exact commands, file changes, and code.

Prompt 3 — Supabase schema (tables + RLS)

Design the Supabase Postgres schema and RLS policies for:

  • profiles (user metadata)

  • organizations (optional, but design for teams later)

  • memberships (user -> org role)

  • social_accounts (stores connected platform tokens per org/user)

  • posts (content + metadata)

  • post_media (media references)

  • schedules (when to publish + status)

  • publish_attempts (logs)

  • subscriptions (stripe customer/subscription ids, trial_end, status)
    Include:

  • SQL migrations

  • RLS policies that prevent cross-tenant access

  • Indexes needed for scheduler queries
    Output the SQL scripts.

Prompt 4 — Supabase client + auth guard

Implement Supabase client helpers for server + client components. Add a protected layout for /app that redirects to /login if unauthenticated.
Add:

  • profile auto-create on first login

  • “App Home” at /app showing upcoming scheduled posts (empty state)
    Provide code changes.

Prompt 5 — Stripe subscriptions + 7-day trial gating

Implement Stripe checkout + customer portal.
Requirements:

  • No free plan. Users must start a trial with card.

  • Add pricing tiers scaffold (Starter $9/mo + placeholders for higher tiers).

  • After trial expires, block scheduling/publishing and show upgrade CTA.
    Implementation details:

  • Stripe webhook route to sync subscription status into Supabase.

  • Middleware/guard: check subscription status server-side for /app features.
    Return: routes, webhook handling, and DB updates.

Prompt 6 — Post creation UI (editor)

Build /app/new:

  • Post editor with content textarea, character count, platform selector (start with X only but UI supports multiple)

  • Media uploader (images/video) -> Supabase Storage

  • “Save draft” and “Schedule” buttons
    Store post drafts in DB.
    Define a clean Post type and validation (zod).
    Return code.

Prompt 7 — Scheduling flow + statuses

Build scheduling UI:

  • Date/time picker with timezone handling

  • Schedule record in DB with states: queued, publishing, published, failed, canceled

  • A “Scheduled” list at /app/scheduled, with filters (status, date range)

  • Ability to edit scheduled time, cancel schedule
    Return code + DB updates if needed.

Prompt 8 — Publishing system design (reliable jobs)

Design and implement the scheduler backend. We are on Vercel:

  • Use Vercel Cron hitting an API route every minute (or 5 min) to find due schedules.

  • Use a DB “lock” pattern to avoid double publishing (e.g., update ... where status='queued' and scheduled_at<=now() returning *)

  • For each schedule, call a publisher service and write to publish_attempts.
    Return:

  • /api/cron/publish implementation

  • DB locking approach

  • Retry policy (e.g., max 3 retries with exponential backoff)

  • Observability logs

Prompt 9 — Platform adapter: X (Twitter) posting

Implement platform adapter pattern:

  • interface PlatformPublisher { publish(post, media): Result }

  • XPublisher implementation
    Token storage:

  • store OAuth tokens in social_accounts (encrypted if possible; if not, at least not exposed client-side)
    Posting requirements:

  • Text + optional media

  • Handle errors (rate limits, auth errors)
    Return code for:

  • connect X account flow (OAuth)

  • storing tokens

  • publishing via X API
    Note: paid X API is expected; code should allow plugging keys in env vars.

Prompt 10 — Media pipeline for X

Implement media upload for X:

  • On post publish: fetch media from Supabase Storage (signed URL) and upload to X, attach media IDs to tweet.

  • Support up to 4 images for now.
    Return code and any limits/validation.

Prompt 11 — Template Builder MVP (2x2 image meme template)

Add a “Template Builder” feature (because user makes short viral templates):

  • /app/templates/new

  • Let user upload 4 images, arrange in 2x2 grid, add optional caption text overlay

  • Export resulting image (PNG) and save to Supabase Storage

  • Allow attaching exported template image to a post
    Implementation: use HTML canvas on client; keep it simple but reliable.
    Return code.

Prompt 12 — Analytics with PostHog (key events)

Instrument PostHog:
Track events: signup, start_trial, create_post, schedule_post, publish_success, publish_fail, template_export.
Also add basic funnel-friendly properties: plan, platform, has_media.
Return code and where events fire.

Prompt 13 — Settings: connected accounts + billing + org

Build /app/settings:

  • Connected accounts: list + connect/disconnect (X)

  • Billing: manage subscription (Stripe portal)

  • Profile/org basics (name, timezone)
    Return code.

Prompt 14 — Security + hardening pass

Audit and fix:

  • RLS correctness

  • Server-only token access (never expose tokens to browser)

  • Validate inputs on server actions

  • Rate limit sensitive routes (connect, publish cron)

  • Ensure cron route is protected (secret header)
    Return a checklist + code patches.

Prompt 15 — Nice UX pass (polish)

Improve UX:

  • Empty states, loading skeletons

  • Toasts for success/failure

  • Inline validation messages

  • “Duplicate post” button
    Return code changes only (no long essay).

Prompt 16 — Add second platform “stub” (LinkedIn or Instagram)

Add a second platform integration skeleton:

  • UI supports selecting multiple platforms

  • Adapter exists but can be “coming soon” if API work is heavy
    Focus: architecture so new platforms are easy.
    Return code.

Prompt 17 — Admin logs + support tools

Add /app/logs:

  • Show publish_attempts with filters (date/status/platform)

  • Show error messages safely

  • “Re-run publish” button (if allowed)
    Return code.

Prompt 18 — Deployment checklist + env + cron config

Give me:

  • Vercel env var list

  • Supabase config steps

  • Stripe webhook setup steps

  • Vercel cron configuration

  • Smoke test plan for production
    Keep it concrete and step-by-step.

Curiosity Quench (Mobile App) — shorter Cursor prompt set (Expo)

Prompt A1 — Expo app blueprint

You are my senior mobile engineer. Build “Curiosity Quench”: an app that helps users scroll less by giving them hobby “action plans”.
Stack: React Native + Expo + TypeScript. Backend: Supabase (optional) or local-only MVP.
Monetization: $30/year subscription with 7-day free trial, paywall after onboarding.
Return: screens list, navigation, data model, and MVP build steps.

Prompt A2 — Initialize Expo + navigation + UI

Create Expo app with TypeScript. Add React Navigation.
Implement screens:

  • Onboarding (3 screens: problem, solution, personalize)

  • Hobby list (categories)

  • Hobby detail (action plan steps)

  • Profile/settings
    Add a clean UI kit and state management.

Prompt A3 — Content model + seeded hobby plans

Implement a local JSON content pack of 30 hobbies with:

  • title, difficulty, time estimate

  • 5–10 step action plan

  • “start now” CTA
    Add search + favorites.

Prompt A4 — Paywall + trial + subscription

Implement RevenueCat (or StoreKit/Play Billing via a library) paywall:

  • Show paywall after onboarding

  • 7-day free trial flow

  • Lock premium hobbies behind paywall
    Add restore purchases + subscription status UI.

Prompt A5 — “Scroll less” mechanics (lightweight)

Add:

  • Daily goal: “Do 1 hobby session”

  • Streaks + reminders (Expo notifications)

  • Simple progress tracking per hobby
    Return code.