open-operator.io → Landing page (separate repo)
app.open-operator.io → This repo (authenticated app)
- Purchase
open-operator.iodomain - Add domain to Vercel project
- Configure DNS records for subdomain
- Site URL:
https://app.open-operator.io - Redirect URLs:
https://app.open-operator.io/auth/callback https://app.open-operator.io/** http://localhost:3000/** (for development)
- GitHub: Callback URL =
https://your-project-ref.supabase.co/auth/v1/callback - Google: Authorized redirect URI =
https://app.open-operator.io/auth/callback
Set these in Vercel dashboard for production:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# URLs
NEXT_PUBLIC_SITE_URL=https://app.open-operator.io
NEXT_PUBLIC_LANDING_URL=https://open-operator.io
NEXT_PUBLIC_APP_URL=https://app.open-operator.io# Connect this repo to Vercel
vercel --prod
# Or deploy via Vercel dashboard- Go to Vercel dashboard → Project Settings → Domains
- Add
app.open-operator.io - Configure DNS as instructed
- Go to Vercel dashboard → Project Settings → Environment Variables
- Add all variables from checklist above
- Redeploy to apply changes
- Visit
https://app.open-operator.io/login - Test email/password signup
- Test social login (GitHub, Google)
- Test password reset flow
The landing page should include:
<!-- Call-to-action buttons -->
<a href="https://app.open-operator.io/signup">Get Started</a>
<a href="https://app.open-operator.io/login">Sign In</a>Landing (open-operator.io)
→ Click "Get Started"
→ Signup (app.open-operator.io/signup)
→ Email confirmation
→ Login → Dashboard (app.open-operator.io/chat)
- ✅ Automatic HTTPS via Vercel
- ✅ Security headers configured in
vercel.json - ✅ CORS properly configured for cross-domain auth
- ✅ Row Level Security enabled on all tables
- ✅ Users can only access their own data
- ✅ Team-based access properly configured
Auth redirects to localhost:
- Check
NEXT_PUBLIC_SITE_URLis set to production URL - Update Supabase dashboard redirect URLs
OAuth providers not working:
- Verify callback URLs in provider settings
- Check Supabase OAuth provider configuration
CORS errors:
- Ensure domains are added to Supabase allowed origins
- Check
vercel.jsonheaders configuration
- Authentication errors
- Database connection issues
- API rate limits
- User signup/login metrics
- Enable Vercel Analytics for performance monitoring
- Set up custom events for user actions
- Main branch → Production (
app.open-operator.io) - Feature branches → Preview deployments
- Pull requests → Preview with comments
- Production: Use production Supabase project
- Preview: Can use same project or separate staging project