Prepare for launch
This commit is contained in:
53
.cursor/skills/prepare-for-launch/SKILL.md
Normal file
53
.cursor/skills/prepare-for-launch/SKILL.md
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
name: prepare-for-launch
|
||||
description: Prepares the app for production launch by moving from sandbox to production (GoLive) database and related steps. Use when the user asks to prepare for launch, move to production, switch to GoLive, or launch the app.
|
||||
---
|
||||
|
||||
# Prepare for Launch
|
||||
|
||||
Use this skill when preparing to launch the app: moving all data sources from sandbox to the production (xTuple_GoLive) database and performing launch checklist steps.
|
||||
|
||||
## Launch checklist (run in order)
|
||||
|
||||
1. **Switch all queries to xTuple_GoLive** (see below).
|
||||
2. Add or run any other launch steps you need (e.g. env/config, final checks).
|
||||
|
||||
---
|
||||
|
||||
## Step 1: Move every query to xTuple_GoLive
|
||||
|
||||
Ensure every DB query in the app uses the production datasource `xTuple_GoLive` instead of `xTuple_Sandbox`.
|
||||
|
||||
### How to do it
|
||||
|
||||
1. **Find all query metadata files**
|
||||
Under `pages/`, each query has a `metadata.json` in `pages/<PageName>/queries/<query_name>/metadata.json`.
|
||||
|
||||
2. **In each `metadata.json`**, locate the datasource block inside `unpublishedAction`:
|
||||
```json
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"pluginId": "postgres-plugin"
|
||||
}
|
||||
```
|
||||
|
||||
3. **Replace** both `"id"` and `"name"` from `xTuple_Sandbox` to `xTuple_GoLive`:
|
||||
```json
|
||||
"datasource": {
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
}
|
||||
```
|
||||
|
||||
4. **Verify**
|
||||
- No query under `pages/**/queries/**/metadata.json` should reference `xTuple_Sandbox`.
|
||||
- Search the repo for `xTuple_Sandbox`; the only remaining references should be the datasource definition (e.g. `datasources/xTuple_Sandbox.json`) and any docs/skills that describe sandbox as the default (e.g. add-query skill).
|
||||
|
||||
### Scope
|
||||
|
||||
- Update **every** query that currently uses `xTuple_Sandbox`. Queries already using `xTuple_GoLive` can be left unchanged.
|
||||
- Do not change the add-query (or other) skills that say to use Sandbox by default; those are for day-to-day development. This skill is only for the one-time (or repeated) launch prep.
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"confirmBeforeExecute": false,
|
||||
"datasource": {
|
||||
"id": "xTuple_Sandbox",
|
||||
"id": "xTuple_GoLive",
|
||||
"isAutoGenerated": false,
|
||||
"name": "xTuple_Sandbox",
|
||||
"name": "xTuple_GoLive",
|
||||
"pluginId": "postgres-plugin"
|
||||
},
|
||||
"dynamicBindingPathList": [],
|
||||
|
||||
Reference in New Issue
Block a user