@shaferllc/keel 0.83.5 → 0.83.7
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/AGENTS.md +16 -4
- package/README.md +33 -18
- package/dist/mcp/server.js +6 -5
- package/docs/ai-manifest.json +15 -1
- package/docs/ai.md +15 -6
- package/docs/changelog.md +20 -0
- package/docs/from-install-to-deploy.md +157 -0
- package/docs/getting-started.md +19 -27
- package/docs/keel-cloud.md +180 -0
- package/docs/starter-kits.md +2 -1
- package/llms-full.txt +495 -142
- package/llms.txt +2 -0
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -5,10 +5,12 @@ house framework for Node.js — or an app built on it. Humans: this is also a fa
|
|
|
5
5
|
orientation. For prose guides see [`docs/`](./docs); for a machine-readable
|
|
6
6
|
surface, run the [MCP server](#mcp-server-recommended).
|
|
7
7
|
|
|
8
|
-
> **The fastest path:**
|
|
9
|
-
> `
|
|
10
|
-
>
|
|
11
|
-
>
|
|
8
|
+
> **The fastest path:** follow
|
|
9
|
+
> [`docs/from-install-to-deploy.md`](./docs/from-install-to-deploy.md)
|
|
10
|
+
> (create-keeljs → local → Cloudflare or optional Keel Cloud). To deploy on
|
|
11
|
+
> `*.keeljs.cloud` from MCP, see [`docs/keel-cloud.md`](./docs/keel-cloud.md).
|
|
12
|
+
> For deep lookups, connect the MCP server and call `keel_overview`, then
|
|
13
|
+
> `keel_search_docs` / `keel_search_api`.
|
|
12
14
|
|
|
13
15
|
---
|
|
14
16
|
|
|
@@ -167,3 +169,13 @@ Tools: `keel_overview`, `keel_search_docs`, `keel_read_doc`, `keel_search_api`,
|
|
|
167
169
|
- [`docs/architecture.md`](./docs/architecture.md) — a request from socket to response
|
|
168
170
|
- [`docs/container.md`](./docs/container.md) — the DI core everything rests on
|
|
169
171
|
- [`llms-full.txt`](./llms-full.txt) — every guide in one file, for a fresh context
|
|
172
|
+
|
|
173
|
+
## Learned User Preferences
|
|
174
|
+
|
|
175
|
+
- Do not reference peer frameworks (Fastify, Laravel, Koa, etc.) in docs, comments, changelogs, or marketing; keep Hono as the only named HTTP foundation.
|
|
176
|
+
|
|
177
|
+
## Learned Workspace Facts
|
|
178
|
+
|
|
179
|
+
- Keel Cloud (control plane) lives in the sibling `keel-cloud` repo, not inside this framework repo; this package supplies `@shaferllc/keel/gates`, `@shaferllc/keel/hosting`, and MCP `keel_cloud_*` tools that call Cloud’s API.
|
|
180
|
+
- `create-keeljs` plus self-managed Cloudflare and optional Keel Cloud hosting are alternative paths — do not mix both for the same app; see [`docs/from-install-to-deploy.md`](./docs/from-install-to-deploy.md).
|
|
181
|
+
- Cloud MCP tools register when `KEEL_CLOUD_TOKEN` is set (optional `KEEL_CLOUD_URL`, production default `https://app.keeljs.cloud`).
|
package/README.md
CHANGED
|
@@ -61,19 +61,32 @@ export class HomeController {
|
|
|
61
61
|
- **Thin and legible.** The whole framework is a few hundred lines in
|
|
62
62
|
`src/core/`. No magic you can't read.
|
|
63
63
|
|
|
64
|
-
## Two
|
|
64
|
+
## Two pieces: the framework and your app
|
|
65
65
|
|
|
66
|
-
Keel is
|
|
67
|
-
|
|
66
|
+
Keel is a **library** you install. New apps come from the generator (templates
|
|
67
|
+
ship inside the package so they cannot lag the framework):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm create keeljs@latest my-app
|
|
71
|
+
cd my-app && npm install && npm run dev
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
End-to-end (local → Cloudflare or optional Keel Cloud):
|
|
75
|
+
[From install to deploy](./docs/from-install-to-deploy.md).
|
|
76
|
+
|
|
77
|
+
**Deploy on `*.keeljs.cloud` from your IDE** (same `keel-mcp` + a Cloud token):
|
|
78
|
+
[Keel Cloud — deploy from MCP](./docs/keel-cloud.md).
|
|
68
79
|
|
|
69
80
|
| Repo | Role |
|
|
70
81
|
|------|------|
|
|
71
82
|
| [`shaferllc/keel`](https://github.com/shaferllc/keel) (this repo) | The framework. Published as `@shaferllc/keel`. |
|
|
72
|
-
|
|
|
83
|
+
| Your app (via `create-keeljs`) | Routes, models, views — depends on `@shaferllc/keel`. |
|
|
73
84
|
|
|
74
85
|
## Install in your app
|
|
75
86
|
|
|
76
87
|
```bash
|
|
88
|
+
npm create keeljs@latest my-app
|
|
89
|
+
# or, into an existing project:
|
|
77
90
|
npm install @shaferllc/keel
|
|
78
91
|
```
|
|
79
92
|
|
|
@@ -81,24 +94,20 @@ npm install @shaferllc/keel
|
|
|
81
94
|
import { Application, Router, config } from "@shaferllc/keel/core";
|
|
82
95
|
```
|
|
83
96
|
|
|
84
|
-
Or clone the [starter app](https://github.com/shaferllc/keel-app) and start
|
|
85
|
-
from a working skeleton.
|
|
86
|
-
|
|
87
97
|
## Hack on the framework itself
|
|
88
98
|
|
|
89
99
|
```bash
|
|
90
100
|
git clone https://github.com/shaferllc/keel.git
|
|
91
101
|
cd keel
|
|
92
102
|
npm install
|
|
93
|
-
npm test
|
|
94
|
-
npm run typecheck
|
|
95
|
-
npm run build
|
|
96
|
-
npm run verify:release
|
|
103
|
+
npm test
|
|
104
|
+
npm run typecheck
|
|
105
|
+
npm run build
|
|
106
|
+
npm run verify:release
|
|
97
107
|
```
|
|
98
108
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
at your checkout (`"@shaferllc/keel": "file:../keel"`).
|
|
109
|
+
Point a generated kit at your checkout with
|
|
110
|
+
`"@shaferllc/keel": "file:../keel"` while developing.
|
|
102
111
|
|
|
103
112
|
## The console
|
|
104
113
|
|
|
@@ -124,13 +133,16 @@ ships a machine-readable surface that stays generated-in-sync, never stale:
|
|
|
124
133
|
|
|
125
134
|
- **An MCP server.** `keel-mcp` exposes Keel's docs, its full public API (380+
|
|
126
135
|
exports), the generators, and its conventions to any [MCP](https://modelcontextprotocol.io)
|
|
127
|
-
client
|
|
136
|
+
client — and with `KEEL_CLOUD_TOKEN`, **deploys sites to `*.keeljs.cloud`**
|
|
137
|
+
(`create_site` → preview → publish). See [Keel Cloud](./docs/keel-cloud.md).
|
|
138
|
+
Connect it in Claude Code:
|
|
128
139
|
```bash
|
|
129
140
|
claude mcp add keel -- npx -y keel-mcp
|
|
141
|
+
# Cloud: add -e KEEL_CLOUD_TOKEN=… -e KEEL_CLOUD_URL=https://app.keeljs.cloud
|
|
130
142
|
```
|
|
131
143
|
Tools: `keel_overview`, `keel_search_docs`, `keel_read_doc`, `keel_search_api`,
|
|
132
|
-
`keel_list_generators`, `keel_scaffold
|
|
133
|
-
`keel://llms-full`, `keel://docs/<slug>`.
|
|
144
|
+
`keel_list_generators`, `keel_scaffold`, plus `keel_cloud_*` when a token is set.
|
|
145
|
+
Resources: `keel://overview`, `keel://llms-full`, `keel://docs/<slug>`.
|
|
134
146
|
- **[`AGENTS.md`](./AGENTS.md).** The agent playbook — the one import rule, the
|
|
135
147
|
folder map, the container/provider model, a "how to add X" table, and the
|
|
136
148
|
guardrails. `CLAUDE.md` points to it.
|
|
@@ -192,7 +204,10 @@ See [docs/architecture.md](./docs/architecture.md) for the full picture.
|
|
|
192
204
|
|
|
193
205
|
| Guide | What it covers |
|
|
194
206
|
|-------|----------------|
|
|
195
|
-
| [Getting Started](./docs/getting-started.md) |
|
|
207
|
+
| [Getting Started](./docs/getting-started.md) | First route, controller, view, config |
|
|
208
|
+
| [From install to deploy](./docs/from-install-to-deploy.md) | create-keeljs → local → Cloudflare or Keel Cloud |
|
|
209
|
+
| [Keel Cloud](./docs/keel-cloud.md) | Deploy `*.keeljs.cloud` from `keel-mcp` (create → preview → publish) |
|
|
210
|
+
| [Starter kits](./docs/starter-kits.md) | Presets (`minimal` / `api` / `app` / `saas`) |
|
|
196
211
|
| [The Service Container](./docs/container.md) | Binding and resolving services, DI |
|
|
197
212
|
| [Service Providers](./docs/providers.md) | Plugin system: register/boot lifecycle, options |
|
|
198
213
|
| [Configuration](./docs/configuration.md) | `config/*.ts`, dot-notation, `env()` |
|
package/dist/mcp/server.js
CHANGED
|
@@ -190,14 +190,15 @@ export async function createServer() {
|
|
|
190
190
|
? [
|
|
191
191
|
"",
|
|
192
192
|
"## Keel Cloud (token detected)",
|
|
193
|
-
"Cloud tools are enabled
|
|
193
|
+
"Cloud tools are enabled — deploy to *.keeljs.cloud from this MCP server.",
|
|
194
|
+
"Guide: keel_read_doc { slug: \"keel-cloud\" }",
|
|
194
195
|
"Typical loop:",
|
|
195
196
|
"1. keel_cloud_create_site { name, preset }",
|
|
196
197
|
"2. Edit files at the returned storage_path (real Keel app)",
|
|
197
|
-
"3. keel_cloud_preview { site_id }",
|
|
198
|
-
"4. keel_cloud_publish { site_id, confirm: true }
|
|
199
|
-
"Also:
|
|
200
|
-
"
|
|
198
|
+
"3. keel_cloud_preview { site_id } → preview-{slug}.keeljs.cloud",
|
|
199
|
+
"4. keel_cloud_publish { site_id, confirm: true } → {slug}.keeljs.cloud",
|
|
200
|
+
"Also: secrets, custom domains (Pro), billing, export(+sql), delete/restore.",
|
|
201
|
+
"Token binds to the user's first team.",
|
|
201
202
|
]
|
|
202
203
|
: []),
|
|
203
204
|
].join("\n");
|
package/docs/ai-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shaferllc/keel",
|
|
3
|
-
"version": "0.83.
|
|
3
|
+
"version": "0.83.7",
|
|
4
4
|
"description": "The house framework for Node.js — a service container, providers, routing, JSX views, and a code-generating console.",
|
|
5
5
|
"repo": "https://github.com/shaferllc/keel",
|
|
6
6
|
"generated": "run `npm run build:ai` to regenerate",
|
|
@@ -159,6 +159,13 @@
|
|
|
159
159
|
"path": "docs/factories.md",
|
|
160
160
|
"example": "docs/examples/factories.ts"
|
|
161
161
|
},
|
|
162
|
+
{
|
|
163
|
+
"slug": "from-install-to-deploy",
|
|
164
|
+
"title": "From install to deploy",
|
|
165
|
+
"summary": "One path from zero to a live Keel app — locally, on Cloudflare yourself, or on Keel Cloud with an AI agent.",
|
|
166
|
+
"path": "docs/from-install-to-deploy.md",
|
|
167
|
+
"example": null
|
|
168
|
+
},
|
|
162
169
|
{
|
|
163
170
|
"slug": "gates",
|
|
164
171
|
"title": "Gates",
|
|
@@ -229,6 +236,13 @@
|
|
|
229
236
|
"path": "docs/inertia.md",
|
|
230
237
|
"example": "docs/examples/inertia.ts"
|
|
231
238
|
},
|
|
239
|
+
{
|
|
240
|
+
"slug": "keel-cloud",
|
|
241
|
+
"title": "Keel Cloud (deploy from MCP)",
|
|
242
|
+
"summary": "Keel Cloud hosts your Keel apps on .keeljs.cloud — preview and production Workers, D1, secrets vault, and full export (git + SQL).",
|
|
243
|
+
"path": "docs/keel-cloud.md",
|
|
244
|
+
"example": null
|
|
245
|
+
},
|
|
232
246
|
{
|
|
233
247
|
"slug": "locks",
|
|
234
248
|
"title": "Locks",
|
package/docs/ai.md
CHANGED
|
@@ -5,8 +5,11 @@ AI-facing surface: an MCP server, machine-readable docs (`llms.txt` /
|
|
|
5
5
|
`llms-full.txt`), an agent playbook (`AGENTS.md`), and code generators an agent
|
|
6
6
|
can drive directly.
|
|
7
7
|
|
|
8
|
-
If you only read one thing:
|
|
9
|
-
|
|
8
|
+
If you only read one thing: follow
|
|
9
|
+
[From install to deploy](./from-install-to-deploy.md). To **deploy on
|
|
10
|
+
`*.keeljs.cloud` from your IDE**, see [Keel Cloud (deploy from MCP)](./keel-cloud.md).
|
|
11
|
+
Then point your agent at the [MCP server](#the-mcp-server) and call
|
|
12
|
+
`keel_overview` first.
|
|
10
13
|
|
|
11
14
|
## Why this exists
|
|
12
15
|
|
|
@@ -62,8 +65,12 @@ package, so it always matches your installed version.
|
|
|
62
65
|
| `keel_scaffold` | Generate a controller/provider/middleware/factory/seeder/job/notification/transformer stub. Returns code + target path — it does **not** write to disk. |
|
|
63
66
|
|
|
64
67
|
When `KEEL_CLOUD_TOKEN` (and optional `KEEL_CLOUD_URL`) is set, Cloud tools are
|
|
65
|
-
also registered
|
|
66
|
-
|
|
68
|
+
also registered — **create, preview, and publish sites on `*.keeljs.cloud`** from
|
|
69
|
+
the same MCP server. Step-by-step:
|
|
70
|
+
**[Keel Cloud (deploy from MCP)](./keel-cloud.md)**.
|
|
71
|
+
|
|
72
|
+
Create a token at `/tokens` on [app.keeljs.cloud](https://app.keeljs.cloud) — the
|
|
73
|
+
plaintext looks like `keel_<selector>.<verifier>`.
|
|
67
74
|
|
|
68
75
|
| Tool | What it does |
|
|
69
76
|
|------|--------------|
|
|
@@ -113,11 +120,13 @@ minting a token if you need a different team context.
|
|
|
113
120
|
|
|
114
121
|
### A typical Keel Cloud loop
|
|
115
122
|
|
|
123
|
+
Full walkthrough: [Keel Cloud (deploy from MCP)](./keel-cloud.md).
|
|
124
|
+
|
|
116
125
|
1. `keel_cloud_create_site { name: "Acme", preset: "app" }`
|
|
117
126
|
2. Edit the returned `storage_path` (real Keel app + git)
|
|
118
127
|
3. `keel_cloud_set_secret` for env the Worker needs
|
|
119
|
-
4. `keel_cloud_preview { site_id }`
|
|
120
|
-
5. `keel_cloud_publish { site_id, confirm: true }`
|
|
128
|
+
4. `keel_cloud_preview { site_id }` → `preview-{slug}.keeljs.cloud`
|
|
129
|
+
5. `keel_cloud_publish { site_id, confirm: true }` → `{slug}.keeljs.cloud`
|
|
121
130
|
6. Optional Pro: `keel_cloud_set_custom_domain { hostname, attach: true }`
|
|
122
131
|
7. Escape hatch anytime: `keel_cloud_export` + `keel_cloud_export_sql`
|
|
123
132
|
|
package/docs/changelog.md
CHANGED
|
@@ -4,6 +4,26 @@ All notable changes to Keel are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project aims to
|
|
5
5
|
adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.83.7] — 2026-07-13
|
|
8
|
+
|
|
9
|
+
### Documentation
|
|
10
|
+
|
|
11
|
+
- **[Keel Cloud (deploy from MCP)](./docs/keel-cloud.md)** — advertise and walk
|
|
12
|
+
through creating / previewing / publishing sites on `*.keeljs.cloud` from
|
|
13
|
+
`keel-mcp`. Linked from the install guide, AI guide, README, and MCP overview.
|
|
14
|
+
|
|
15
|
+
[0.83.7]: https://github.com/shaferllc/keel/releases/tag/v0.83.7
|
|
16
|
+
|
|
17
|
+
## [0.83.6] — 2026-07-13
|
|
18
|
+
|
|
19
|
+
### Documentation
|
|
20
|
+
|
|
21
|
+
- **[From install to deploy](./docs/from-install-to-deploy.md)** — end-to-end
|
|
22
|
+
guide: `create-keeljs` → local dev → Cloudflare self-deploy → optional Keel
|
|
23
|
+
Cloud + MCP. Getting Started and the README now lead with the generator.
|
|
24
|
+
|
|
25
|
+
[0.83.6]: https://github.com/shaferllc/keel/releases/tag/v0.83.6
|
|
26
|
+
|
|
7
27
|
## [0.83.5] — 2026-07-13
|
|
8
28
|
|
|
9
29
|
### Added
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# From install to deploy
|
|
2
|
+
|
|
3
|
+
One path from zero to a live Keel app — locally, on Cloudflare yourself, or on
|
|
4
|
+
**Keel Cloud** with an AI agent. Pick the track that matches how you want to
|
|
5
|
+
ship; everything else is optional.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
create-keeljs → npm run dev → (optional MCP) → deploy
|
|
9
|
+
↘
|
|
10
|
+
Keel Cloud (optional)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Requirements
|
|
14
|
+
|
|
15
|
+
- Node.js **≥ 22**
|
|
16
|
+
- npm
|
|
17
|
+
- For self-hosted edge deploys: a [Cloudflare](https://dash.cloudflare.com) account
|
|
18
|
+
and [Wrangler](https://developers.cloudflare.com/workers/wrangler/) (ships with
|
|
19
|
+
the kits as a devDependency)
|
|
20
|
+
- For Keel Cloud: an invite / allowlisted email at [app.keeljs.cloud](https://app.keeljs.cloud)
|
|
21
|
+
during private alpha
|
|
22
|
+
|
|
23
|
+
## 1. Create an app
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm create keeljs@latest my-app # full-stack "app" preset (default)
|
|
27
|
+
# npm create keeljs@latest my-api -- --preset api
|
|
28
|
+
# npm create keeljs@latest my-saas -- --preset saas
|
|
29
|
+
# npm create keeljs@latest bare -- --preset minimal
|
|
30
|
+
cd my-app
|
|
31
|
+
npm install
|
|
32
|
+
cp .env.example .env # if the kit didn't already
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| Preset | Use when |
|
|
36
|
+
|--------|----------|
|
|
37
|
+
| `minimal` | Hello-world / learning — routes, a view, Tailwind. No database. |
|
|
38
|
+
| `api` | JSON API — models, migrations, token auth, OpenAPI, tests. |
|
|
39
|
+
| `app` *(default)* | Product with views, sessions, register/login, password reset, 2FA. |
|
|
40
|
+
| `saas` | Multi-tenant product — teams, roles, invitations, billing. |
|
|
41
|
+
|
|
42
|
+
Templates live **inside** `@shaferllc/keel`, so the kit version matches the
|
|
43
|
+
framework version you just installed. Details: [Starter kits](./starter-kits.md).
|
|
44
|
+
|
|
45
|
+
## 2. Run it locally
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm run migrate # if the preset has a database (api / app / saas)
|
|
49
|
+
npm run dev # http://localhost:3000 — Node + local SQLite
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Useful next commands:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm run keel -- routes # what is mounted
|
|
56
|
+
npm run keel -- make:controller Post # scaffold, then wire a route
|
|
57
|
+
npm test
|
|
58
|
+
npm run typecheck
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Local tip: `DB_CONNECTION` defaults to a SQLite file. Switching drivers later is
|
|
62
|
+
config only — see [Database](./database.md) and [Starter kits](./starter-kits.md).
|
|
63
|
+
|
|
64
|
+
For a guided first hour inside the codebase (routes, controllers, views, config),
|
|
65
|
+
read [Getting Started](./getting-started.md).
|
|
66
|
+
|
|
67
|
+
## 3. Optional — AI agents (local)
|
|
68
|
+
|
|
69
|
+
Keel is designed to be written with an agent. Point Cursor / Claude Code at the
|
|
70
|
+
MCP server that ships with the package:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"keel": {
|
|
76
|
+
"command": "npx",
|
|
77
|
+
"args": ["-y", "keel-mcp"]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Then have the agent call `keel_overview` first. It can search docs, look up the
|
|
84
|
+
public API, and scaffold controllers/jobs/… without inventing imports.
|
|
85
|
+
|
|
86
|
+
Full map: [Building with AI](./ai.md).
|
|
87
|
+
|
|
88
|
+
## 4. Deploy yourself (Cloudflare Workers)
|
|
89
|
+
|
|
90
|
+
Every kit includes `wrangler.jsonc`, a `worker.ts` entry, and `npm run deploy`.
|
|
91
|
+
You own the Cloudflare account and the hostname.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# one-time
|
|
95
|
+
npx wrangler login
|
|
96
|
+
npx wrangler d1 create my-app # paste database_id into wrangler.jsonc
|
|
97
|
+
|
|
98
|
+
# ship
|
|
99
|
+
npm run deploy # css:build + wrangler deploy
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Migrations against remote D1 use the HTTP driver from your laptop / CI — the
|
|
103
|
+
binding only exists inside the Worker. Set Cloudflare API credentials as
|
|
104
|
+
documented in [Database](./database.md) (D1 HTTP) and your kit’s README.
|
|
105
|
+
|
|
106
|
+
Edge preview without deploying:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm run dev:edge # wrangler + local D1
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Hosting helpers (hostname utils, SQL dump, secrets encryption) live in
|
|
113
|
+
[`@shaferllc/keel/hosting`](./hosting.md) if you build your own control plane.
|
|
114
|
+
|
|
115
|
+
## 5. Optional — Keel Cloud (`*.keeljs.cloud`)
|
|
116
|
+
|
|
117
|
+
Ship without owning a Cloudflare account: **Keel Cloud** creates the site,
|
|
118
|
+
runs preview/production Workers on `*.keeljs.cloud`, vaults secrets, and lets
|
|
119
|
+
you export git + SQL anytime — driven from the **same `keel-mcp`** you already
|
|
120
|
+
use for docs.
|
|
121
|
+
|
|
122
|
+
**Dedicated guide:** [Keel Cloud (deploy from MCP)](./keel-cloud.md).
|
|
123
|
+
|
|
124
|
+
Quick path:
|
|
125
|
+
|
|
126
|
+
1. Sign up at [app.keeljs.cloud](https://app.keeljs.cloud) → mint a token at `/tokens`
|
|
127
|
+
2. Add `KEEL_CLOUD_TOKEN` (+ `KEEL_CLOUD_URL`) to your MCP config
|
|
128
|
+
3. Agent: `keel_cloud_create_site` → edit `storage_path` → `keel_cloud_preview` →
|
|
129
|
+
`keel_cloud_publish { confirm: true }`
|
|
130
|
+
|
|
131
|
+
Use Cloud when you want the platform to own deploys and hostnames. Skip it when
|
|
132
|
+
you already have Cloudflare / your own pipeline (§4). Don’t mix Cloud and
|
|
133
|
+
self-host for the same app.
|
|
134
|
+
|
|
135
|
+
## Which path should I pick?
|
|
136
|
+
|
|
137
|
+
| Goal | Path |
|
|
138
|
+
|------|------|
|
|
139
|
+
| Learn Keel / ship a side project on your CF account | §§1–4 |
|
|
140
|
+
| Build with an agent in your IDE, deploy yourself | §§1–4 + §3 |
|
|
141
|
+
| Let the platform host preview/prod on `*.keeljs.cloud` via MCP | [Keel Cloud](./keel-cloud.md) |
|
|
142
|
+
| Multi-tenant SaaS with billing | Preset `saas`, then §4 or §5 |
|
|
143
|
+
|
|
144
|
+
Cloud **create_site** scaffolds a kit the same way `create-keeljs` does — you do
|
|
145
|
+
not need both for the same app. Use `create-keeljs` for apps you own end-to-end;
|
|
146
|
+
use Cloud when you want hosted preview/publish under `*.keeljs.cloud`.
|
|
147
|
+
|
|
148
|
+
## Where next
|
|
149
|
+
|
|
150
|
+
- [Keel Cloud (deploy from MCP)](./keel-cloud.md) — create / preview / publish
|
|
151
|
+
on `*.keeljs.cloud` from `keel-mcp`
|
|
152
|
+
- [Getting Started](./getting-started.md) — first route, controller, view
|
|
153
|
+
- [Starter kits](./starter-kits.md) — presets and the Node/edge seam
|
|
154
|
+
- [Building with AI](./ai.md) — MCP tools (local + Cloud)
|
|
155
|
+
- [Hosting](./hosting.md) — Cloudflare / dump / secrets primitives
|
|
156
|
+
- [Accounts](./accounts.md) · [Teams](./teams.md) · [Billing](./billing.md) — what
|
|
157
|
+
`app` / `saas` already mount
|
package/docs/getting-started.md
CHANGED
|
@@ -15,32 +15,20 @@ Keel targets modern Node and web-standard APIs, so a current runtime matters —
|
|
|
15
15
|
|
|
16
16
|
## Install
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
that already exists. See [Architecture](./architecture.md#two-repos-library-and-starter)
|
|
22
|
-
for why it's split this way.
|
|
23
|
-
|
|
24
|
-
### From the starter (recommended)
|
|
25
|
-
|
|
26
|
-
The fastest route to a running app is the starter — a working skeleton with the
|
|
27
|
-
folders, config, and scripts already wired:
|
|
18
|
+
The fastest path to a running app is the generator — it copies a curated kit
|
|
19
|
+
from the same `@shaferllc/keel` version you install, so the template cannot lag
|
|
20
|
+
the framework:
|
|
28
21
|
|
|
29
22
|
```bash
|
|
30
|
-
|
|
23
|
+
npm create keeljs@latest my-app
|
|
31
24
|
cd my-app
|
|
32
25
|
npm install
|
|
26
|
+
npm run dev # http://localhost:3000
|
|
33
27
|
```
|
|
34
28
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
A fresh checkout ships with a working `.env`. To start from the template
|
|
39
|
-
instead:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
cp .env.example .env
|
|
43
|
-
```
|
|
29
|
+
For the full journey (presets, Cloudflare deploy, optional Keel Cloud + MCP),
|
|
30
|
+
see **[From install to deploy](./from-install-to-deploy.md)**. Kit details:
|
|
31
|
+
[Starter kits](./starter-kits.md).
|
|
44
32
|
|
|
45
33
|
### Into an existing app
|
|
46
34
|
|
|
@@ -57,22 +45,24 @@ import { Application, Router, config } from "@shaferllc/keel/core";
|
|
|
57
45
|
```
|
|
58
46
|
|
|
59
47
|
You supply the four convention folders yourself — `app/`, `config/`, `routes/`,
|
|
60
|
-
`bootstrap/` — plus an entry that calls `createApplication()`.
|
|
48
|
+
`bootstrap/` — plus an entry that calls `createApplication()`. A generated kit’s
|
|
61
49
|
`bootstrap/app.ts` is the reference; copy it and trim to taste.
|
|
62
50
|
|
|
63
51
|
### Hacking on the framework itself
|
|
64
52
|
|
|
65
|
-
To work on Keel proper, clone the framework repo
|
|
66
|
-
can run directly:
|
|
53
|
+
To work on Keel proper, clone the framework repo:
|
|
67
54
|
|
|
68
55
|
```bash
|
|
69
56
|
git clone https://github.com/shaferllc/keel.git
|
|
70
57
|
cd keel
|
|
71
58
|
npm install
|
|
72
|
-
npm
|
|
73
|
-
npm run
|
|
59
|
+
npm test
|
|
60
|
+
npm run typecheck
|
|
74
61
|
```
|
|
75
62
|
|
|
63
|
+
Generate a disposable app against your checkout with
|
|
64
|
+
`npm create keeljs@latest …` and point its dependency at `file:../keel`.
|
|
65
|
+
|
|
76
66
|
## Run the server
|
|
77
67
|
|
|
78
68
|
```bash
|
|
@@ -267,9 +257,10 @@ unsure what's mounted. [The Console](./console.md) lists every command.
|
|
|
267
257
|
## Where to go next
|
|
268
258
|
|
|
269
259
|
You now have the shape of a Keel app: routes point at controllers, controllers
|
|
270
|
-
render views and read config, and the console scaffolds the pieces.
|
|
271
|
-
guides pick up from here:
|
|
260
|
+
render views and read config, and the console scaffolds the pieces.
|
|
272
261
|
|
|
262
|
+
- **[From install to deploy](./from-install-to-deploy.md)** — presets, Cloudflare,
|
|
263
|
+
optional Keel Cloud + MCP
|
|
273
264
|
- [Architecture](./architecture.md) — how boot, the container, and the request
|
|
274
265
|
lifecycle fit together
|
|
275
266
|
- [The Service Container](./container.md) — how dependency injection works
|
|
@@ -284,6 +275,7 @@ guides pick up from here:
|
|
|
284
275
|
the active-record layer on top of it
|
|
285
276
|
- [Configuration](./configuration.md) and [The Console](./console.md) — settings
|
|
286
277
|
and commands
|
|
278
|
+
- [Building with AI](./ai.md) — MCP docs + Cloud tools
|
|
287
279
|
|
|
288
280
|
When something isn't documented, open the source — the whole framework is a few
|
|
289
281
|
hundred readable lines in `src/core/`, and [Built on Hono](./hono.md) explains
|