all work

// product platform [Live products]

Consumer Product Platform

Web, mobile, billing, and support for SouthForge apps

Commercial product engineering

SouthForge products solve different problems, but they share the same bar: real accounts, real billing where applicable, real support expectations, and fast iteration without breaking trust. This work is the product layer that makes each app shippable — not just the features on the marketing page.

  • React
  • TypeScript
  • Next.js 15
  • Expo
  • React Native
  • Stripe
  • RevenueCat
  • Neon
  • Supabase
  • Vercel
  • Auth.js
  • Drizzle
OAuth sign-in ──► app surfaces (web / mobile) ──► Postgres + RLS ──► Stripe billing ──► Vercel deploy
~ Next.js 15 App Router

Rundown, Folloback, and Burnwatch dashboard run on App Router with server actions for mutations, route handlers for OAuth callbacks, and Vercel cron for scheduled jobs. Server Components keep auth-gated pages off the client bundle.

~ Auth.js v5 + OAuth per product

Each product picks the identity provider its users expect: LeadConnector OAuth for Rundown, X OAuth 2.0 for Folloback, Steam OpenID where it fits, email/Google for ReadyGig. Auth.js persists sessions; Drizzle adapter writes to isolated Postgres schemas.

~ Drizzle ORM + schema isolation

Folloback tables live in a dedicated `folloback` Postgres schema on Neon — same pattern as lifting a product out later with `pg_dump --schema=`. ReadyGig and Rundown use Supabase Postgres with RLS for multi-tenant row security.

~ Stripe + RevenueCat billing

Tiered plans use Stripe Checkout for web upgrades and the Customer Portal for self-serve changes. Mobile subscriptions run through RevenueCat against the App Store and Google Play, with Stripe web subscribers cross-entitled on mobile. Webhooks sync state; pricing pages link store compliance URLs before apps go live.

~ Expo / React Native

ReadyGig and RigCast ship native iOS and Android clients on Expo. ReadyGig reuses the web app's auth and API contracts for scan-first uploads, mileage logging, and vault storage; RigCast adds MapLibre route maps, voice route entry, and a truck-physics risk engine tuned for in-cab use.

~ Vercel AI Gateway

Rundown report generation routes through Vercel AI Gateway so structured JSON output can compare providers on cost and quality without hard-coding one model. Prompts pull verified CRM metrics first; AI writes the narrative second.

~ Static + serverless split

LimitWatch and the SouthForge marketing site deploy as static assets. Products that need auth and Postgres stay on Vercel Functions — no single deployment shape forced on every app.

$
Web and mobile delivery

ReadyGig on web with native iOS and Android apps in store review; RigCast in testing on both stores; Rundown on Next.js with LeadConnector OAuth; Folloback on Next.js with X OAuth.

$
Subscription-ready billing

Tiered plans, upgrade paths, and the store/compliance URLs products need before they can charge.

$
Trust by default

Privacy, terms, support, and account deletion flows treated as product requirements, not launch afterthoughts.

$
Scoped AI in the product

AI assists where users benefit — scan drafts, library triage, plain-English client reports — with confirmation and clear product boundaries.

$
Production habits

Validation and release discipline from ProjectForge-style workflows applied to consumer and pilot releases.

$
Built to iterate

Structured enough to stay reliable, flexible enough to ship improvements week to week.

Account and auth layer

Sign-in, sessions, and account lifecycle across consumer products and pilot apps — OAuth provider chosen per audience, not one-size-fits-all.

Billing and plans

Free tiers, paid upgrades, Stripe webhooks, and the business plumbing around subscriptions where products charge.

Product surfaces

Web apps, mobile clients, and static data sites tuned for the workflows each product promises.