@@ -26,65 +26,103 @@ For each project (production and preview):
2626cd apps/demo
2727
2828# Link to project
29- supabase link --project-ref < PROJECT_REF>
29+ pnpm supabase link --project-ref < PROJECT_REF>
3030
3131# Reset database (applies migrations + seed data)
32- supabase db reset --linked
32+ pnpm supabase db reset
33+ ```
34+
35+ ### 3. Setting Up Vault Secrets
3336
34- # Deploy Edge Functions
35- supabase functions deploy --project-ref < PROJECT_REF>
37+ After database migrations, set up vault secrets for worker management:
38+
39+ ``` bash
40+ # From apps/demo, source the appropriate env file
41+ set -a; source .env.production # or .env.preview
42+ set +a
43+
44+ # Set up vault secrets and register worker
45+ psql " $SUPABASE_DB_URL " \
46+ -v service_role_key=" $SUPABASE_SERVICE_ROLE_KEY " \
47+ -v project_ref=" $SUPABASE_PROJECT_REF " << 'EOSQL '
48+ DELETE FROM vault.secrets WHERE name IN ('supabase_service_role_key', 'supabase_project_id');
49+ SELECT vault.create_secret(:'service_role_key', 'supabase_service_role_key');
50+ SELECT vault.create_secret(:'project_ref', 'supabase_project_id');
51+ SELECT pgflow.track_worker_function('article_flow_worker');
52+ EOSQL
3653```
3754
38- ### 3 . Edge Function Secrets
55+ ### 4 . Edge Function Secrets
3956
4057Set environment variables for Edge Functions:
4158
4259``` bash
4360# Set LLM API key (choose Groq or OpenAI)
44- supabase secrets set GROQ_API_KEY=your_groq_key_here
61+ pnpm supabase secrets set GROQ_API_KEY=your_groq_key_here
4562# OR
46- supabase secrets set OPENAI_API_KEY=your_openai_key_here
63+ pnpm supabase secrets set OPENAI_API_KEY=your_openai_key_here
4764
4865# Verify secrets are set
49- supabase secrets list
66+ pnpm supabase secrets list
5067```
5168
5269Repeat for both production and preview projects.
5370
54- ### 4. Cloudflare Setup
71+ ### 5. Deploy Edge Functions
72+
73+ ``` bash
74+ cd apps/demo
75+
76+ # For production
77+ set -a; source .env.production; set +a
78+ SUPABASE_ACCESS_TOKEN=" $SUPABASE_ACCESS_TOKEN " pnpm supabase functions deploy article_flow_worker --project-ref " $SUPABASE_PROJECT_REF "
79+
80+ # For preview
81+ pnpm nx run demo:deploy:preview:functions
82+ ```
83+
84+ ### 6. Cloudflare Setup
5585
5686``` bash
5787# Authenticate with Cloudflare
5888pnpm wrangler login
5989
60- # Deploy production (from repo root)
61- pnpm nx deploy demo
90+ # Deploy production webapp (from repo root)
91+ cd apps/demo
92+ pnpm wrangler deploy
6293
6394# Deploy preview
64- pnpm nx deploy:preview demo
95+ pnpm nx run demo: deploy:preview:webapp
6596```
6697
67- ### 5 . GitHub Secrets
98+ ### 7 . GitHub Secrets
6899
69100Add these secrets to your GitHub repository (Settings → Secrets):
70101
71102** Supabase (Production):**
72103
73- - ` SUPABASE_ACCESS_TOKEN ` - Personal access token from https://supabase.com/dashboard/account/tokens
74- - ` PRODUCTION_PROJECT_ID ` - Production project ref
75- - ` PRODUCTION_DB_PASSWORD ` - Production database password
104+ - ` DEMO_PRODUCTION_SUPABASE_URL ` - Production project URL
105+ - ` DEMO_PRODUCTION_SUPABASE_ANON_KEY ` - Production anon key
106+ - ` DEMO_PRODUCTION_SUPABASE_PROJECT_REF ` - Production project ref
107+ - ` DEMO_PRODUCTION_SUPABASE_SERVICE_ROLE_KEY ` - Production service role key
108+ - ` DEMO_PRODUCTION_SUPABASE_DB_URL ` - Production database connection string
109+ - ` DEMO_PRODUCTION_SUPABASE_ACCESS_TOKEN ` - Supabase personal access token
76110
77111** Supabase (Preview):**
78112
79- - ` PREVIEW_PROJECT_ID ` - Preview project ref
80- - ` PREVIEW_DB_PASSWORD ` - Preview database password
113+ - ` DEMO_PREVIEW_SUPABASE_URL ` - Preview project URL
114+ - ` DEMO_PREVIEW_SUPABASE_ANON_KEY ` - Preview anon key
115+ - ` DEMO_PREVIEW_SUPABASE_PROJECT_REF ` - Preview project ref
116+ - ` DEMO_PREVIEW_SUPABASE_SERVICE_ROLE_KEY ` - Preview service role key
117+ - ` DEMO_PREVIEW_SUPABASE_DB_URL ` - Preview database connection string
118+ - ` DEMO_PREVIEW_SUPABASE_ACCESS_TOKEN ` - Supabase personal access token
81119
82120** Cloudflare:**
83121
84122- ` CLOUDFLARE_API_TOKEN ` - API token from Cloudflare dashboard
85123- ` CLOUDFLARE_ACCOUNT_ID ` - Account ID from Cloudflare dashboard
86124
87- ### 6 . Enable Supabase Branching (Optional)
125+ ### 8 . Enable Supabase Branching (Optional)
88126
89127For automatic per-PR preview databases:
90128
@@ -95,53 +133,102 @@ For automatic per-PR preview databases:
95133## Deployment URLs
96134
97135- ** Production** : https://demo.pgflow.dev
98- - ** Preview** : https://pr-{number}. pgflow-demo.workers.dev
136+ - ** Preview** : https://pr-{number}- pgflow-demo.jumski .workers.dev
99137
100138## Manual Deployments
101139
102140### Production
103141
104142``` bash
105- pnpm nx deploy demo
143+ # Full production deployment
144+ pnpm nx run demo:deploy
145+
146+ # Or step-by-step from apps/demo:
147+ cd apps/demo
148+ pnpm wrangler deploy
106149```
107150
108151### Preview
109152
110153``` bash
154+ # Full preview deployment (db + functions + webapp)
155+ pnpm nx run demo:deploy:preview
156+
111157# With custom name (using script directly)
112158cd apps/demo
113- ./scripts/deploy-preview.sh my-feature
114-
115- # With custom name (using nx)
116- PREVIEW_NAME=my-feature pnpm nx deploy:preview demo
159+ PREVIEW_NAME=my-feature ./scripts/deploy-preview.sh
117160
118161# With PR number (CI)
119- PR_NUMBER=123 pnpm nx deploy:preview demo
162+ PR_NUMBER=123 pnpm nx run demo: deploy:preview
120163
121164# Default local preview
122- pnpm nx deploy:preview demo
165+ pnpm nx run demo: deploy:preview
123166```
124167
125168### Reset Database
126169
127170``` bash
128171cd apps/demo
129- supabase link --project-ref < PROJECT_REF>
130- supabase db reset --linked
172+ pnpm supabase link --project-ref < PROJECT_REF>
173+ pnpm supabase db reset
174+ ```
175+
176+ ## Updating Production Deployments
177+
178+ When updating production with new pgflow migrations, apply them selectively in order:
179+
180+ ``` bash
181+ cd apps/demo
182+
183+ # Link to production
184+ set -a; source .env.production; set +a
185+ SUPABASE_ACCESS_TOKEN=" $SUPABASE_ACCESS_TOKEN " pnpm supabase link --project-ref " $SUPABASE_PROJECT_REF "
186+
187+ # Apply pgflow migrations in order
188+ pnpm supabase migration up --file 20251226231000_20251104080523_pgflow_upgrade_pgmq_1_5_1.sql
189+ pnpm supabase migration up --file 20251226232000_20251130000000_pgflow_auto_compilation.sql
190+ pnpm supabase migration up --file 20251226233000_20251209074533_pgflow_worker_management.sql
191+
192+ # Set up vault secrets (worker_management adds track_worker_function)
193+ psql " $SUPABASE_DB_URL " \
194+ -v service_role_key=" $SUPABASE_SERVICE_ROLE_KEY " \
195+ -v project_ref=" $SUPABASE_PROJECT_REF " << 'EOSQL '
196+ DELETE FROM vault.secrets WHERE name IN ('supabase_service_role_key', 'supabase_project_id');
197+ SELECT vault.create_secret(:'service_role_key', 'supabase_service_role_key');
198+ SELECT vault.create_secret(:'project_ref', 'supabase_project_id');
199+ SELECT pgflow.track_worker_function('article_flow_worker');
200+ EOSQL
201+
202+ # Deploy edge functions
203+ SUPABASE_ACCESS_TOKEN=" $SUPABASE_ACCESS_TOKEN " pnpm supabase functions deploy article_flow_worker --project-ref " $SUPABASE_PROJECT_REF "
204+
205+ # Apply remaining migrations
206+ pnpm supabase migration up --file 20251230202447_20251225163110_pgflow_add_flow_input_column.sql
207+
208+ # Deploy webapp
209+ pnpm wrangler deploy
131210```
132211
133212## Troubleshooting
134213
135214** Edge Functions failing:**
136215
137- - Check secrets are set: ` supabase secrets list `
216+ - Check secrets are set: ` pnpm supabase secrets list`
138217- Verify you're linked to correct project: ` cat supabase/.branches/_current_branch `
218+ - Ensure GROQ_API_KEY or OPENAI_API_KEY is set
139219
140220** Database out of sync:**
141221
142- - Run ` supabase db reset --linked ` to reapply all migrations
222+ - Run ` pnpm supabase db reset ` to reapply all migrations
223+ - For production, use selective migration process above
224+
225+ ** Worker not auto-restarting:**
226+
227+ - Verify vault secrets are set: ` SELECT * FROM vault.secrets; `
228+ - Check worker is tracked: ` SELECT * FROM pgflow.worker_functions; `
143229
144230** Cloudflare deployment fails:**
145231
146232- Ensure you're authenticated: ` pnpm wrangler whoami `
147233- Check wrangler.toml routes match your domain
234+ - For production, use ` pnpm wrangler deploy ` (no --env flag)
0 commit comments