@cloudgrid-io/mcp 0.20.4 → 0.20.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/src/corpus/capability-map.md +8 -8
- package/src/corpus/cloudgrid-yaml.md +5 -5
- package/src/corpus/cookbook.md +1 -1
- package/src/corpus/skill-claim.md +1 -1
- package/src/corpus/skill-plug.md +1 -1
- package/src/corpus/skills-readme.md +1 -1
- package/src/corpus/templates/ai-knowledge-base/AGENTS.md +1 -1
- package/src/corpus/templates/ai-knowledge-base/index.md +1 -1
- package/src/corpus/templates/api-docs/README.md +2 -2
- package/src/corpus/templates/api-docs/index.md +3 -3
- package/src/corpus/templates/appointment-booking/AGENTS.md +7 -7
- package/src/corpus/templates/appointment-booking/index.md +5 -5
- package/src/corpus/templates/approval-workflow/AGENTS.md +2 -2
- package/src/corpus/templates/approval-workflow/index.md +2 -2
- package/src/corpus/templates/billing-dashboard/index.md +1 -1
- package/src/corpus/templates/calendar-scheduler/AGENTS.md +1 -1
- package/src/corpus/templates/calendar-scheduler/index.md +1 -1
- package/src/corpus/templates/changelog/README.md +2 -2
- package/src/corpus/templates/changelog/index.md +3 -3
- package/src/corpus/templates/company-website/README.md +3 -3
- package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
- package/src/corpus/templates/company-website/index.md +3 -3
- package/src/corpus/templates/course-platform/index.md +1 -1
- package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/dashboard/index.md +3 -3
- package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
- package/src/corpus/templates/deck/index.md +3 -3
- package/src/corpus/templates/docs-site/README.md +2 -2
- package/src/corpus/templates/docs-site/index.md +3 -3
- package/src/corpus/templates/forum/AGENTS.md +4 -4
- package/src/corpus/templates/forum/index.md +1 -1
- package/src/corpus/templates/hr-portal/index.md +1 -1
- package/src/corpus/templates/internal-tools-portal/index.md +1 -1
- package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
- package/src/corpus/templates/landing-page/index.md +3 -3
- package/src/corpus/templates/lms/index.md +1 -1
- package/src/corpus/templates/marketplace/AGENTS.md +1 -1
- package/src/corpus/templates/marketplace/index.md +1 -1
- package/src/corpus/templates/membership-site/AGENTS.md +7 -7
- package/src/corpus/templates/membership-site/index.md +5 -5
- package/src/corpus/templates/online-store/index.md +1 -1
- package/src/corpus/templates/portfolio/README.md +2 -2
- package/src/corpus/templates/portfolio/index.md +3 -3
- package/src/corpus/templates/product-launch/README.md +3 -3
- package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
- package/src/corpus/templates/product-launch/index.md +3 -3
- package/src/corpus/templates/report/cloudgrid.yaml +1 -1
- package/src/corpus/templates/report/index.md +3 -3
- package/src/corpus/templates/restaurant-reservations/AGENTS.md +7 -7
- package/src/corpus/templates/restaurant-reservations/index.md +2 -2
- package/src/corpus/templates/saas-marketing/README.md +2 -2
- package/src/corpus/templates/saas-marketing/index.md +3 -3
- package/src/corpus/templates/status-page/README.md +2 -2
- package/src/corpus/templates/status-page/index.md +3 -3
- package/src/corpus/templates/subscription-management/AGENTS.md +7 -7
- package/src/corpus/templates/subscription-management/index.md +5 -5
- package/src/corpus/templates/waitlist/README.md +2 -2
- package/src/corpus/templates/waitlist/index.md +3 -3
- package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
- package/src/corpus/templates/web-app/index.md +3 -3
- package/src/corpus/usage.md +1 -1
- package/src/corpus/workflows/admin-dashboard.md +4 -4
- package/src/corpus/workflows/ai-app.md +6 -6
- package/src/corpus/workflows/ai-knowledge-base.md +4 -4
- package/src/corpus/workflows/analytics-dashboard.md +4 -4
- package/src/corpus/workflows/api-dashboard.md +4 -4
- package/src/corpus/workflows/api-docs.md +2 -2
- package/src/corpus/workflows/api-service.md +6 -6
- package/src/corpus/workflows/app-with-data.md +6 -6
- package/src/corpus/workflows/appointment-booking.md +6 -6
- package/src/corpus/workflows/approval-workflow.md +4 -4
- package/src/corpus/workflows/billing-dashboard.md +6 -6
- package/src/corpus/workflows/blog-cms.md +4 -4
- package/src/corpus/workflows/booking-system.md +5 -5
- package/src/corpus/workflows/calendar-scheduler.md +4 -4
- package/src/corpus/workflows/changelog.md +2 -2
- package/src/corpus/workflows/company-website.md +3 -3
- package/src/corpus/workflows/course-platform.md +5 -5
- package/src/corpus/workflows/crm.md +5 -5
- package/src/corpus/workflows/dashboard.md +3 -3
- package/src/corpus/workflows/directory.md +4 -4
- package/src/corpus/workflows/docs-app.md +6 -6
- package/src/corpus/workflows/docs-site.md +2 -2
- package/src/corpus/workflows/erp.md +5 -5
- package/src/corpus/workflows/event-board.md +4 -4
- package/src/corpus/workflows/expense-tracker.md +4 -4
- package/src/corpus/workflows/feature-request-board.md +4 -4
- package/src/corpus/workflows/financial-dashboard.md +4 -4
- package/src/corpus/workflows/forum.md +5 -5
- package/src/corpus/workflows/hr-portal.md +5 -5
- package/src/corpus/workflows/internal-tools-portal.md +5 -5
- package/src/corpus/workflows/inventory.md +4 -4
- package/src/corpus/workflows/invoice.md +4 -4
- package/src/corpus/workflows/job-board.md +4 -4
- package/src/corpus/workflows/kanban.md +5 -5
- package/src/corpus/workflows/landing-page.md +3 -3
- package/src/corpus/workflows/lms.md +5 -5
- package/src/corpus/workflows/marketplace.md +4 -4
- package/src/corpus/workflows/membership-site.md +6 -6
- package/src/corpus/workflows/monitoring-dashboard.md +4 -4
- package/src/corpus/workflows/online-store.md +6 -6
- package/src/corpus/workflows/portfolio.md +2 -2
- package/src/corpus/workflows/presentation.md +3 -3
- package/src/corpus/workflows/product-catalog.md +4 -4
- package/src/corpus/workflows/product-launch.md +3 -3
- package/src/corpus/workflows/project-management.md +4 -4
- package/src/corpus/workflows/property-listings.md +4 -4
- package/src/corpus/workflows/quiz-platform.md +4 -4
- package/src/corpus/workflows/report.md +3 -3
- package/src/corpus/workflows/restaurant-reservations.md +5 -5
- package/src/corpus/workflows/revenue-dashboard.md +4 -4
- package/src/corpus/workflows/saas-marketing.md +2 -2
- package/src/corpus/workflows/semantic-search.md +5 -5
- package/src/corpus/workflows/status-page.md +2 -2
- package/src/corpus/workflows/subscription-management.md +6 -6
- package/src/corpus/workflows/task-manager.md +4 -4
- package/src/corpus/workflows/ticket-system.md +4 -4
- package/src/corpus/workflows/time-tracking.md +4 -4
- package/src/corpus/workflows/travel-booking.md +5 -5
- package/src/corpus/workflows/waitlist.md +2 -2
- package/src/corpus/workflows/web-app.md +3 -3
- package/src/session-logger.js +12 -5
- package/src/tools.js +154 -91
- package/src/web.js +4 -2
- package/src/widgets/org-picker.html +1 -1
|
@@ -4,7 +4,7 @@ when: single-page docs, a quick guide/manual/README-as-a-page, small knowledge b
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure, content baked into the page. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure, content baked into the page. Publishes as an inspiration (instant, works on hosted) via grid_deploy.
|
|
8
8
|
summary: Fetch the docs-site template, fill it with the user's documentation, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ Detect the intent ("build me a docs site / documentation for X") and follow this
|
|
|
14
14
|
recipe. For a REST API endpoint reference specifically, use `api-docs`. Do not
|
|
15
15
|
ask setup questions first; use sensible defaults and build.
|
|
16
16
|
|
|
17
|
-
1. **Fetch the template.** Call `
|
|
17
|
+
1. **Fetch the template.** Call `grid_get_template("template", "docs-site")` to load
|
|
18
18
|
the self-contained HTML docs layout (sidebar nav, content column, code blocks,
|
|
19
19
|
client-side search box).
|
|
20
20
|
2. **Fill the template.** Replace the placeholders with the user's content:
|
|
@@ -45,7 +45,7 @@ requires the **local edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
45
45
|
|
|
46
46
|
## 3. Fetch the blueprint + read AGENTS.md
|
|
47
47
|
|
|
48
|
-
`
|
|
48
|
+
`grid_get_template("template", "erp")`. It returns `cloudgrid.yaml`, `AGENTS.md` (the
|
|
49
49
|
structure guide), and the README — **no app code**. Read `AGENTS.md` end to end
|
|
50
50
|
before writing anything: it defines the `services/web/` file tree, the Mongo
|
|
51
51
|
collections + fields per module, how CloudGrid injects the DB and the
|
|
@@ -56,7 +56,7 @@ all four at once.
|
|
|
56
56
|
|
|
57
57
|
## 4. Scaffold
|
|
58
58
|
|
|
59
|
-
`
|
|
59
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
60
60
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
61
61
|
directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
|
|
62
62
|
following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
@@ -97,8 +97,8 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
|
97
97
|
## 6. Config
|
|
98
98
|
|
|
99
99
|
- Create the vault items the `vault:` block references (the auth provider's
|
|
100
|
-
backend key and the Stripe secret key) — `
|
|
101
|
-
commit them. Publishable/front-end auth keys → `
|
|
100
|
+
backend key and the Stripe secret key) — `grid_set_secret` / vault UI. Never
|
|
101
|
+
commit them. Publishable/front-end auth keys → `grid_set_env`.
|
|
102
102
|
- Register the deployed `/api/finance/webhook` URL as the Stripe webhook endpoint
|
|
103
103
|
once the app is live.
|
|
104
104
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
@@ -111,7 +111,7 @@ vault env vars before deploying. Don't require it.
|
|
|
111
111
|
|
|
112
112
|
## 8. Deploy (async)
|
|
113
113
|
|
|
114
|
-
Deploy the folder with `
|
|
114
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
115
115
|
response is `status: "building"`, NOT a live URL yet.
|
|
116
116
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
117
117
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -38,7 +38,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
38
38
|
|
|
39
39
|
## 3. Scaffold
|
|
40
40
|
|
|
41
|
-
`
|
|
41
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
42
42
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
43
43
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
44
44
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
63
63
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
64
64
|
validator rejects it).
|
|
65
65
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
66
|
-
`
|
|
66
|
+
`grid_get_template("template", "event-board")`. It is a minimal, real Next.js +
|
|
67
67
|
`mongodb`-driver event board under `services/web/`: a lazy client in
|
|
68
68
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `events`
|
|
69
69
|
collection, a server-component page that reads events sorted by date, and a
|
|
@@ -83,13 +83,13 @@ before deploying. Don't require it.
|
|
|
83
83
|
|
|
84
84
|
## 6. Config
|
|
85
85
|
|
|
86
|
-
- API keys / secrets → `
|
|
86
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
87
87
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
88
88
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
89
89
|
|
|
90
90
|
## 7. Deploy (async)
|
|
91
91
|
|
|
92
|
-
Deploy the folder with `
|
|
92
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
93
93
|
response is `status: "building"`, NOT a live URL yet.
|
|
94
94
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
95
95
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -38,7 +38,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
38
38
|
|
|
39
39
|
## 3. Scaffold
|
|
40
40
|
|
|
41
|
-
`
|
|
41
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
42
42
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
43
43
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
44
44
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
63
63
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
64
64
|
validator rejects it).
|
|
65
65
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
66
|
-
`
|
|
66
|
+
`grid_get_template("template", "expense-tracker")`. It is a minimal, real Next.js +
|
|
67
67
|
`mongodb`-driver expense tracker under `services/web/`: a lazy client in
|
|
68
68
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `expenses`
|
|
69
69
|
collection, a server-component page, and a client form with a table + totals
|
|
@@ -83,13 +83,13 @@ before deploying. Don't require it.
|
|
|
83
83
|
|
|
84
84
|
## 6. Config
|
|
85
85
|
|
|
86
|
-
- API keys / secrets → `
|
|
86
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
87
87
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
88
88
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
89
89
|
|
|
90
90
|
## 7. Deploy (async)
|
|
91
91
|
|
|
92
|
-
Deploy the folder with `
|
|
92
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
93
93
|
response is `status: "building"`, NOT a live URL yet.
|
|
94
94
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
95
95
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -39,7 +39,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
39
39
|
|
|
40
40
|
## 3. Scaffold
|
|
41
41
|
|
|
42
|
-
`
|
|
42
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
43
43
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
44
44
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
45
45
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
64
64
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
65
65
|
validator rejects it).
|
|
66
66
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
67
|
-
`
|
|
67
|
+
`grid_get_template("template", "feature-request-board")`. It is a minimal, real
|
|
68
68
|
Next.js + `mongodb`-driver board under `services/web/`: a lazy client in
|
|
69
69
|
`services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on a
|
|
70
70
|
`requests` collection (PATCH does an atomic `$inc` upvote), a server-component
|
|
@@ -86,13 +86,13 @@ before deploying. Don't require it.
|
|
|
86
86
|
|
|
87
87
|
## 6. Config
|
|
88
88
|
|
|
89
|
-
- API keys / secrets → `
|
|
89
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
90
90
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
91
91
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
92
92
|
|
|
93
93
|
## 7. Deploy (async)
|
|
94
94
|
|
|
95
|
-
Deploy the folder with `
|
|
95
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
96
96
|
response is `status: "building"`, NOT a live URL yet.
|
|
97
97
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
98
98
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -39,7 +39,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
39
39
|
|
|
40
40
|
## 3. Scaffold
|
|
41
41
|
|
|
42
|
-
`
|
|
42
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
43
43
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
44
44
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
45
45
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
64
64
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
65
65
|
validator rejects it).
|
|
66
66
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
67
|
-
`
|
|
67
|
+
`grid_get_template("template", "financial-dashboard")`. It is a minimal, real
|
|
68
68
|
Next.js + `mongodb`-driver dashboard under `services/web/`: a lazy client in
|
|
69
69
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `entries`
|
|
70
70
|
collection, a server-component page that computes income/expense/net totals,
|
|
@@ -84,13 +84,13 @@ before deploying. Don't require it.
|
|
|
84
84
|
|
|
85
85
|
## 6. Config
|
|
86
86
|
|
|
87
|
-
- API keys / secrets → `
|
|
87
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
88
88
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
89
89
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
90
90
|
|
|
91
91
|
## 7. Deploy (async)
|
|
92
92
|
|
|
93
|
-
Deploy the folder with `
|
|
93
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
94
94
|
response is `status: "building"`, NOT a live URL yet.
|
|
95
95
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
96
96
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -58,11 +58,11 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
58
58
|
|
|
59
59
|
## 3. Read the blueprint, then scaffold
|
|
60
60
|
|
|
61
|
-
1. **Fetch the blueprint: `
|
|
61
|
+
1. **Fetch the blueprint: `grid_get_template("template", "forum")`** and read
|
|
62
62
|
`AGENTS.md` — it defines the file tree, the `threads` / `posts` / `users`
|
|
63
63
|
collections + fields, the nesting model, and the CloudGrid wiring. This is the
|
|
64
64
|
spec you build to.
|
|
65
|
-
2. `
|
|
65
|
+
2. `grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
66
66
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a
|
|
67
67
|
linked directory, so run `init` FIRST. Then write the app under
|
|
68
68
|
**`services/web/`** and fill `cloudgrid.yaml` to the shape below.
|
|
@@ -108,14 +108,14 @@ Mention that the user can `grid dev` to run locally against the injected Mongo
|
|
|
108
108
|
|
|
109
109
|
## 6. Config
|
|
110
110
|
|
|
111
|
-
- Auth-provider keys / secrets → the `vault:` block + `
|
|
112
|
-
config → `
|
|
111
|
+
- Auth-provider keys / secrets → the `vault:` block + `grid_set_secret`. Non-secret
|
|
112
|
+
config → `grid_set_env`.
|
|
113
113
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
114
114
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
115
115
|
|
|
116
116
|
## 7. Deploy (async)
|
|
117
117
|
|
|
118
|
-
Deploy the folder with `
|
|
118
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
119
119
|
response is `status: "building"`, NOT a live URL yet.
|
|
120
120
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
121
121
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -43,7 +43,7 @@ A persistent, auth-gated app is a built + deployed container. It requires the
|
|
|
43
43
|
|
|
44
44
|
## 3. Fetch the blueprint + read AGENTS.md
|
|
45
45
|
|
|
46
|
-
`
|
|
46
|
+
`grid_get_template("template", "hr-portal")`. It returns `cloudgrid.yaml`, `AGENTS.md`
|
|
47
47
|
(the structure guide), and the README — **no app code**. Read `AGENTS.md` end to
|
|
48
48
|
end before writing anything: it defines the `services/web/` file tree, the Mongo
|
|
49
49
|
collections + fields, how CloudGrid injects the DB and vault-backed auth keys, how
|
|
@@ -51,7 +51,7 @@ to wire employee/admin auth, and the deploy steps.
|
|
|
51
51
|
|
|
52
52
|
## 4. Scaffold
|
|
53
53
|
|
|
54
|
-
`
|
|
54
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
55
55
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
56
56
|
directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
|
|
57
57
|
following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
@@ -90,8 +90,8 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
|
90
90
|
## 6. Config
|
|
91
91
|
|
|
92
92
|
- Create the vault items the `vault:` block references (the auth provider's
|
|
93
|
-
secret + publishable keys) — `
|
|
94
|
-
- Non-secret config → `
|
|
93
|
+
secret + publishable keys) — `grid_set_secret` / vault UI. Never commit them.
|
|
94
|
+
- Non-secret config → `grid_set_env`.
|
|
95
95
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
96
96
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
97
97
|
|
|
@@ -102,7 +102,7 @@ vault env vars before deploying. Don't require it.
|
|
|
102
102
|
|
|
103
103
|
## 8. Deploy (async)
|
|
104
104
|
|
|
105
|
-
Deploy the folder with `
|
|
105
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
106
106
|
response is `status: "building"`, NOT a live URL yet.
|
|
107
107
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
108
108
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -45,7 +45,7 @@ A persistent, auth-gated app is a built + deployed container. It requires the
|
|
|
45
45
|
|
|
46
46
|
## 3. Fetch the blueprint + read AGENTS.md
|
|
47
47
|
|
|
48
|
-
`
|
|
48
|
+
`grid_get_template("template", "internal-tools-portal")`. It returns `cloudgrid.yaml`,
|
|
49
49
|
`AGENTS.md` (the structure guide), and the README — **no app code**. Read
|
|
50
50
|
`AGENTS.md` end to end before writing anything: it defines the `services/web/`
|
|
51
51
|
file tree, the Mongo collections + fields, the tool registry, how CloudGrid injects
|
|
@@ -54,7 +54,7 @@ deploy steps.
|
|
|
54
54
|
|
|
55
55
|
## 4. Scaffold
|
|
56
56
|
|
|
57
|
-
`
|
|
57
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
58
58
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
59
59
|
directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
|
|
60
60
|
following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
@@ -99,9 +99,9 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
|
99
99
|
## 6. Config
|
|
100
100
|
|
|
101
101
|
- Create the vault items the `vault:` block references (the auth provider's
|
|
102
|
-
secret + publishable keys, plus any per-tool API secrets) — `
|
|
102
|
+
secret + publishable keys, plus any per-tool API secrets) — `grid_set_secret` /
|
|
103
103
|
vault UI. Never commit them.
|
|
104
|
-
- Non-secret config → `
|
|
104
|
+
- Non-secret config → `grid_set_env`.
|
|
105
105
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
106
106
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
107
107
|
|
|
@@ -112,7 +112,7 @@ vault env vars before deploying. Don't require it.
|
|
|
112
112
|
|
|
113
113
|
## 8. Deploy (async)
|
|
114
114
|
|
|
115
|
-
Deploy the folder with `
|
|
115
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
116
116
|
response is `status: "building"`, NOT a live URL yet.
|
|
117
117
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
118
118
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -37,7 +37,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
37
37
|
|
|
38
38
|
## 3. Scaffold
|
|
39
39
|
|
|
40
|
-
`
|
|
40
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
41
41
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
42
42
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
43
43
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
65
65
|
`services.web`, and `needs.database` uncommented — so it deploys to exactly
|
|
66
66
|
those active fields.
|
|
67
67
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
68
|
-
`
|
|
68
|
+
`grid_get_template("template", "inventory")`. It is a minimal, real Next.js +
|
|
69
69
|
`mongodb`-driver app under `services/web/`: a lazy client in
|
|
70
70
|
`services/web/lib/db.js`, an App-Router GET/POST/PATCH (adjust qty)/DELETE route on an `items` collection, a
|
|
71
71
|
server-component page, and a client component.
|
|
@@ -82,13 +82,13 @@ before deploying. Don't require it.
|
|
|
82
82
|
|
|
83
83
|
## 6. Config
|
|
84
84
|
|
|
85
|
-
- API keys / secrets → `
|
|
85
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
86
86
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
87
87
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
88
88
|
|
|
89
89
|
## 7. Deploy (async)
|
|
90
90
|
|
|
91
|
-
Deploy the folder with `
|
|
91
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
92
92
|
response is `status: "building"`, NOT a live URL yet.
|
|
93
93
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
94
94
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -37,7 +37,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
37
37
|
|
|
38
38
|
## 3. Scaffold
|
|
39
39
|
|
|
40
|
-
`
|
|
40
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
41
41
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
42
42
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
43
43
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
65
65
|
`services.web`, and `needs.database` uncommented — so it deploys to exactly
|
|
66
66
|
those active fields.
|
|
67
67
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
68
|
-
`
|
|
68
|
+
`grid_get_template("template", "invoice")`. It is a minimal, real Next.js +
|
|
69
69
|
`mongodb`-driver app under `services/web/`: a lazy client in
|
|
70
70
|
`services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on an `invoices` collection, a
|
|
71
71
|
server-component page, and a client component.
|
|
@@ -82,13 +82,13 @@ before deploying. Don't require it.
|
|
|
82
82
|
|
|
83
83
|
## 6. Config
|
|
84
84
|
|
|
85
|
-
- API keys / secrets → `
|
|
85
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
86
86
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
87
87
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
88
88
|
|
|
89
89
|
## 7. Deploy (async)
|
|
90
90
|
|
|
91
|
-
Deploy the folder with `
|
|
91
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
92
92
|
response is `status: "building"`, NOT a live URL yet.
|
|
93
93
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
94
94
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -37,7 +37,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
37
37
|
|
|
38
38
|
## 3. Scaffold
|
|
39
39
|
|
|
40
|
-
`
|
|
40
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
41
41
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
42
42
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
43
43
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
65
65
|
`services.web`, and `needs.database` uncommented — so it deploys to exactly
|
|
66
66
|
those active fields.
|
|
67
67
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
68
|
-
`
|
|
68
|
+
`grid_get_template("template", "job-board")`. It is a minimal, real Next.js +
|
|
69
69
|
`mongodb`-driver app under `services/web/`: a lazy client in
|
|
70
70
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `jobs` collection, a
|
|
71
71
|
server-component page, and a client component.
|
|
@@ -82,13 +82,13 @@ before deploying. Don't require it.
|
|
|
82
82
|
|
|
83
83
|
## 6. Config
|
|
84
84
|
|
|
85
|
-
- API keys / secrets → `
|
|
85
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
86
86
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
87
87
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
88
88
|
|
|
89
89
|
## 7. Deploy (async)
|
|
90
90
|
|
|
91
|
-
Deploy the folder with `
|
|
91
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
92
92
|
response is `status: "building"`, NOT a live URL yet.
|
|
93
93
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
94
94
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -37,7 +37,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
37
37
|
|
|
38
38
|
## 3. Scaffold
|
|
39
39
|
|
|
40
|
-
`
|
|
40
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
41
41
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
42
42
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
43
43
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -62,7 +62,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
62
62
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
63
63
|
validator rejects it).
|
|
64
64
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
65
|
-
`
|
|
65
|
+
`grid_get_template("template", "kanban")`. It is a minimal, real Next.js +
|
|
66
66
|
`mongodb`-driver board under `services/web/`: a lazy client in
|
|
67
67
|
`services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on a
|
|
68
68
|
`cards` collection (PATCH moves a card between columns), a server-component
|
|
@@ -73,7 +73,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
73
73
|
runtime.
|
|
74
74
|
- **Put the DB connection behind a lazy getter — never read the connection
|
|
75
75
|
string at module top level, or `next build` fails.**
|
|
76
|
-
- (Optional) fetch `
|
|
76
|
+
- (Optional) fetch `grid_get_template("example", "kanban")` for a richer filled
|
|
77
77
|
reference to imitate.
|
|
78
78
|
|
|
79
79
|
## 5. (Optional) Run locally
|
|
@@ -83,13 +83,13 @@ before deploying. Don't require it.
|
|
|
83
83
|
|
|
84
84
|
## 6. Config
|
|
85
85
|
|
|
86
|
-
- API keys / secrets → `
|
|
86
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
87
87
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
88
88
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
89
89
|
|
|
90
90
|
## 7. Deploy (async)
|
|
91
91
|
|
|
92
|
-
Deploy the folder with `
|
|
92
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
93
93
|
response is `status: "building"`, NOT a live URL yet.
|
|
94
94
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
95
95
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -4,7 +4,7 @@ when: landing page, marketing page, product page, hero page, coming-soon, waitli
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_deploy.
|
|
8
8
|
summary: Fetch the landing-page template, fill it with the user's content, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ summary: Fetch the landing-page template, fill it with the user's content, deplo
|
|
|
13
13
|
Detect the intent ("build me a landing page / marketing page for X") and follow
|
|
14
14
|
this recipe. Do not ask setup questions first; use sensible defaults and build.
|
|
15
15
|
|
|
16
|
-
1. **Fetch the template.** Call `
|
|
16
|
+
1. **Fetch the template.** Call `grid_get_template("template", "landing-page")` to
|
|
17
17
|
load the self-contained HTML landing-page template.
|
|
18
|
-
2. **(Optional) Fetch the example.** Call `
|
|
18
|
+
2. **(Optional) Fetch the example.** Call `grid_get_template("example", "landing-page")`
|
|
19
19
|
to see a filled landing page as a reference for tone and structure.
|
|
20
20
|
3. **Fill the template.** Replace the placeholders with the user's content:
|
|
21
21
|
- The product name, hero headline, and subheadline.
|
|
@@ -44,7 +44,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
44
44
|
## 3. Read the blueprint
|
|
45
45
|
|
|
46
46
|
Fetch the structure guide and read it before writing anything:
|
|
47
|
-
`
|
|
47
|
+
`grid_get_template("template", "lms")`. `AGENTS.md` is the CloudGrid-specific spec for
|
|
48
48
|
this app — the file tree under `services/web/`, the Mongo collections
|
|
49
49
|
(users/courses/modules/lessons/assignments/enrollments/progress/submissions/grades),
|
|
50
50
|
how the grid injects Mongo + the vault auth secret, the instructor/student role
|
|
@@ -53,7 +53,7 @@ you build it from the guide.
|
|
|
53
53
|
|
|
54
54
|
## 4. Scaffold
|
|
55
55
|
|
|
56
|
-
`
|
|
56
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
57
57
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
58
58
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**
|
|
59
59
|
per the AGENTS.md tree, and (b) fill `cloudgrid.yaml` to the shape below.
|
|
@@ -91,15 +91,15 @@ needs:
|
|
|
91
91
|
|
|
92
92
|
## 6. Config
|
|
93
93
|
|
|
94
|
-
- Secrets → `
|
|
94
|
+
- Secrets → `grid_set_secret` (e.g. `grid secrets set auth-provider-key`;
|
|
95
95
|
`stripe-live-key`/`stripe-webhook-secret` only for paid courses). Non-secret
|
|
96
|
-
config → `
|
|
96
|
+
config → `grid_set_env` (e.g. the auth publishable key).
|
|
97
97
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
98
98
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
99
99
|
|
|
100
100
|
## 7. Deploy (async)
|
|
101
101
|
|
|
102
|
-
Deploy the folder with `
|
|
102
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
103
103
|
response is `status: "building"`, NOT a live URL yet.
|
|
104
104
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
105
105
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -40,7 +40,7 @@ requires the **local edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
40
40
|
|
|
41
41
|
## 3. Fetch the blueprint and READ AGENTS.md
|
|
42
42
|
|
|
43
|
-
`
|
|
43
|
+
`grid_get_template("template", "marketplace")`. The deliverable is the **`AGENTS.md`
|
|
44
44
|
structure guide** — read it before writing anything. It defines:
|
|
45
45
|
- the `services/web/` file tree (pages, API routes, `lib/`),
|
|
46
46
|
- the Mongo collections (`vendors`, `listings`, `orders`) + fields,
|
|
@@ -54,7 +54,7 @@ There is no app code to copy — you generate it from the guide.
|
|
|
54
54
|
|
|
55
55
|
## 4. Scaffold + fill cloudgrid.yaml
|
|
56
56
|
|
|
57
|
-
`
|
|
57
|
+
`grid_create_project` an app `<name>` FIRST (creates the entity + `.cloudgrid/link.json`
|
|
58
58
|
and a starter `cloudgrid.yaml` with empty `services:{}`; `plug` needs a linked
|
|
59
59
|
directory). Then put the app under **`services/web/`** and set `cloudgrid.yaml` to
|
|
60
60
|
the blueprint's active fields:
|
|
@@ -97,7 +97,7 @@ Generate the files under `services/web/` per the guide:
|
|
|
97
97
|
- Map secrets in the `vault:` block (done above), then **store the values**:
|
|
98
98
|
`grid secrets set stripe-live-key sk_live_…`,
|
|
99
99
|
`grid secrets set stripe-webhook-secret whsec_…`,
|
|
100
|
-
`grid secrets set auth-provider-key …`. Non-secret public config → `
|
|
100
|
+
`grid secrets set auth-provider-key …`. Non-secret public config → `grid_set_env`.
|
|
101
101
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
|
|
102
102
|
`MONGODB_URL`) — the grid injects them.
|
|
103
103
|
|
|
@@ -108,7 +108,7 @@ secrets before deploying. Don't require it.
|
|
|
108
108
|
|
|
109
109
|
## 8. Deploy (async)
|
|
110
110
|
|
|
111
|
-
Deploy the folder with `
|
|
111
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
112
112
|
response is `status: "building"`, NOT a live URL yet.
|
|
113
113
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
114
114
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -43,17 +43,17 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
43
43
|
Fetch the template and read its structure guide — this is the core of the
|
|
44
44
|
workflow:
|
|
45
45
|
|
|
46
|
-
- `
|
|
46
|
+
- `grid_get_template("template", "membership-site")` — the `cloudgrid.yaml` +
|
|
47
47
|
**`AGENTS.md`**. AGENTS.md has the file tree, the Mongo collections
|
|
48
48
|
(`users`, `memberships`), the CloudGrid injection table, and the auth + Stripe
|
|
49
49
|
wiring. **Read it fully before building.**
|
|
50
|
-
- `
|
|
50
|
+
- `grid_get_template("template", "app-with-data")` — the proven Next.js + Mongo
|
|
51
51
|
shape this blueprint extends (lazy db client in `lib/db.js`, App-Router
|
|
52
52
|
GET/POST route). Imitate its wiring.
|
|
53
53
|
|
|
54
54
|
## 4. Scaffold
|
|
55
55
|
|
|
56
|
-
`
|
|
56
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
57
57
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
58
58
|
directory, so run `init` FIRST. Then write the app under **`services/web/`** and
|
|
59
59
|
set `cloudgrid.yaml` to the active shape below.
|
|
@@ -98,11 +98,11 @@ never set `needs:` and `requires:` together (the validator rejects it).
|
|
|
98
98
|
|
|
99
99
|
## 6. Config / secrets
|
|
100
100
|
|
|
101
|
-
- Stripe + auth secrets → `
|
|
101
|
+
- Stripe + auth secrets → `grid_set_secret` (set the vault items `stripe-live-key`,
|
|
102
102
|
`stripe-webhook-secret`, `auth-provider-key` that the `vault:` block maps from).
|
|
103
103
|
The deployer injects each as its env var at runtime and under `grid dev`.
|
|
104
104
|
- Non-secret config (auth publishable key `NEXT_PUBLIC_...`, Stripe price id) →
|
|
105
|
-
`
|
|
105
|
+
`grid_set_env` / `services.web.env`.
|
|
106
106
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
|
|
107
107
|
`MONGODB_URL`) — the grid injects them.
|
|
108
108
|
|
|
@@ -113,7 +113,7 @@ and vault secrets before deploying. Don't require it.
|
|
|
113
113
|
|
|
114
114
|
## 8. Deploy (async)
|
|
115
115
|
|
|
116
|
-
Deploy the folder with `
|
|
116
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
117
117
|
response is `status: "building"`, NOT a live URL yet.
|
|
118
118
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
119
119
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
@@ -39,7 +39,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
39
39
|
|
|
40
40
|
## 3. Scaffold
|
|
41
41
|
|
|
42
|
-
`
|
|
42
|
+
`grid_create_project` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
43
43
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
44
44
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
45
45
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
64
64
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
65
65
|
validator rejects it).
|
|
66
66
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
67
|
-
`
|
|
67
|
+
`grid_get_template("template", "monitoring-dashboard")`. It is a minimal, real
|
|
68
68
|
Next.js + `mongodb`-driver health board under `services/web/`: a lazy client
|
|
69
69
|
in `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `checks`
|
|
70
70
|
collection, a server-component page that derives the status grid, and a client
|
|
@@ -85,13 +85,13 @@ before deploying. Don't require it.
|
|
|
85
85
|
|
|
86
86
|
## 6. Config
|
|
87
87
|
|
|
88
|
-
- API keys / secrets → `
|
|
88
|
+
- API keys / secrets → `grid_set_secret`. Non-secret config → `grid_set_env`.
|
|
89
89
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
90
90
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
91
91
|
|
|
92
92
|
## 7. Deploy (async)
|
|
93
93
|
|
|
94
|
-
Deploy the folder with `
|
|
94
|
+
Deploy the folder with `grid_deploy`. A **runtime deploy is ASYNC**: the first
|
|
95
95
|
response is `status: "building"`, NOT a live URL yet.
|
|
96
96
|
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
97
97
|
- Surface a liveness signal while it builds — never a bare silent wait.
|