49b8e27219
- Delete supabase/ directory (config.toml, push-migrations.js, ADMIN_CREATE_STOP_FIX.sql, 137 archived migration files) - Remove @supabase/ssr and @supabase/supabase-js from package.json - Strip *.supabase.co from next.config.ts image hostnames - Strip https://*.supabase.co from vercel.json CSP connect-src - Remove 'supabase/**' ignore from eslint.config.mjs - Clean supabase references from src/lib/db.ts, vitest.config.ts, db/seeds/2026-tuxedo-tour-stops.sql, src/actions/storefront.ts, scripts/import-tuxedo-stops.ts comments - Rewrite env-var docs in README, ENVIRONMENT, PRODUCTION_SETUP, PRODUCTION_DEPLOYMENT_CHECKLIST, LAUNCH_CHECKLIST, CLAUDE, MEMORY, REPORT to drop NEXT_PUBLIC_SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY / supabase link / supabase CLI references The canonical migration runner is now scripts/migrate.js (uses pg directly via DATABASE_URL). Migrations live in db/migrations/. The Supabase CLI is no longer in the codebase. The only remaining '@supabase/*' in the dep tree is @supabase/auth-js as a transitive of @neondatabase/auth (Neon Auth / Better Auth). Final source scan: grep -rln '@supabase\|rest/v1\|supabase\.co' src/ tests/ db/ scripts/ next.config.ts vercel.json eslint.config.mjs package.json returns zero. Verification: npm install clean (11 added, 21 removed, 12 changed), tsc shows same 17 pre-existing errors (Stripe dahlia API version + fetch preconnect mocks), vitest 172/175 (3 pre-existing failures in getAdminUser.test.ts), lint shows same 14 pre-existing errors. Live-tested: dev server boots in 248ms, public storefronts (/) (/login) (/pricing) (/tuxedo) (/indian-river-direct) all return 200; /admin/v2?demo=1 reaches 200 after dev_session redirect; storefront renders real brand content.
2.5 KiB
2.5 KiB
Route Commerce - Production Setup Guide
Quick Start
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Start development server
npm run dev
Configuration
1. Neon Auth (Better Auth)
- Set up Neon Auth on your Neon project (
neonctl neon-auth init) - Copy keys to
.env.local:NEON_AUTH_BASE_URL=https://xxx.neonauth.io NEON_AUTH_COOKIE_SECRET=<openssl rand -base64 32> NEXT_PUBLIC_SITE_URL=https://yourdomain.com - Configure middleware in
src/middleware.ts
2. Stripe Payments
- Create Stripe account
- Create products and prices in Stripe Dashboard
- Update
.env.localwith:STRIPE_SECRET_KEY=sk_test_xxx NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx STRIPE_WEBHOOK_SECRET=whsec_xxx
3. Database (Postgres / Neon)
The app talks to Postgres directly via pg (no Supabase, no REST gateway). Point DATABASE_URL at any reachable Postgres — Neon, Supabase (the underlying Postgres), RDS, etc. The Supabase JS client and PostgREST are not used.
- Provision a Postgres database (Neon recommended — it also hosts Neon Auth)
- Run migrations:
npm run migrate - Update
.env.localwith:DATABASE_URL=postgresql://user:pass@host:5432/dbname?sslmode=require
4. Optional Services
Sentry (Error Monitoring)
SENTRY_DSN=https://xxx@sentry.io/xxx
PostHog (Analytics)
NEXT_PUBLIC_POSTHOG_API_KEY=phc_xxx
Deployment
Vercel
- Connect repository to Vercel
- Add all environment variables
- Deploy
Other Platforms
Ensure environment variables are set before deployment.
Key Files
src/middleware.ts- Neon Auth (Better Auth) middlewaresrc/lib/stripe-billing.ts- Stripe integrationsrc/lib/analytics.ts- PostHog analyticssrc/lib/sentry.ts- Sentry error trackingsrc/components/admin/AnalyticsDashboard.tsx- Admin dashboardsrc/components/onboarding/OnboardingFlow.tsx- User onboardingsrc/components/referral/ReferralSystem.tsx- Referral trackingsrc/components/changelog/ChangelogFeed.tsx- Product updatesdb/migrations/- Database schema (applied viascripts/migrate.js)
Scripts
npm run dev # Start development server
npm run build # Production build
npm run lint # Run ESLint
npm run migrate # Run database migrations
Documentation
- Full documentation: CLAUDE.md
- Launch checklist: LAUNCH_CHECKLIST.md