@codaijs/keel 0.2.3 → 0.2.4
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/dist/__tests__/sail-installer.test.js +25 -25
- package/dist/sail-installer.js +174 -174
- package/dist/scaffold.js +68 -68
- package/package.json +58 -58
- package/sails/_template/addon.json +20 -20
- package/sails/_template/install.ts +402 -402
- package/sails/admin-dashboard/README.md +117 -117
- package/sails/admin-dashboard/addon.json +28 -28
- package/sails/admin-dashboard/files/backend/middleware/admin.ts +34 -34
- package/sails/admin-dashboard/files/backend/routes/admin.ts +243 -243
- package/sails/admin-dashboard/files/frontend/components/admin/StatsCard.tsx +40 -40
- package/sails/admin-dashboard/files/frontend/components/admin/UsersTable.tsx +240 -240
- package/sails/admin-dashboard/files/frontend/hooks/useAdmin.ts +149 -149
- package/sails/admin-dashboard/files/frontend/pages/admin/Dashboard.tsx +173 -173
- package/sails/admin-dashboard/files/frontend/pages/admin/UserDetail.tsx +203 -203
- package/sails/admin-dashboard/install.ts +305 -305
- package/sails/analytics/README.md +178 -178
- package/sails/analytics/addon.json +27 -27
- package/sails/analytics/files/frontend/components/AnalyticsProvider.tsx +58 -58
- package/sails/analytics/files/frontend/hooks/useAnalytics.ts +64 -64
- package/sails/analytics/files/frontend/lib/analytics.ts +103 -103
- package/sails/analytics/install.ts +297 -297
- package/sails/file-uploads/addon.json +30 -30
- package/sails/file-uploads/files/backend/routes/files.ts +198 -198
- package/sails/file-uploads/files/backend/schema/files.ts +36 -36
- package/sails/file-uploads/files/backend/services/file-storage.ts +128 -128
- package/sails/file-uploads/files/frontend/components/FileList.tsx +248 -248
- package/sails/file-uploads/files/frontend/components/FileUploadButton.tsx +147 -147
- package/sails/file-uploads/files/frontend/hooks/useFileUpload.ts +106 -106
- package/sails/file-uploads/files/frontend/hooks/useFiles.ts +118 -118
- package/sails/file-uploads/files/frontend/pages/Files.tsx +37 -37
- package/sails/file-uploads/install.ts +466 -466
- package/sails/gdpr/README.md +174 -174
- package/sails/gdpr/addon.json +27 -27
- package/sails/gdpr/files/backend/routes/gdpr.ts +140 -140
- package/sails/gdpr/files/backend/services/gdpr.ts +293 -293
- package/sails/gdpr/files/frontend/components/auth/ConsentCheckboxes.tsx +97 -97
- package/sails/gdpr/files/frontend/components/gdpr/AccountDeletionRequest.tsx +192 -192
- package/sails/gdpr/files/frontend/components/gdpr/DataExportButton.tsx +75 -75
- package/sails/gdpr/files/frontend/pages/PrivacyPolicy.tsx +186 -186
- package/sails/gdpr/install.ts +756 -756
- package/sails/google-oauth/README.md +121 -121
- package/sails/google-oauth/addon.json +22 -22
- package/sails/google-oauth/files/GoogleButton.tsx +50 -50
- package/sails/google-oauth/install.ts +252 -252
- package/sails/i18n/README.md +193 -193
- package/sails/i18n/addon.json +30 -30
- package/sails/i18n/files/frontend/components/LanguageSwitcher.tsx +108 -108
- package/sails/i18n/files/frontend/hooks/useLanguage.ts +31 -31
- package/sails/i18n/files/frontend/lib/i18n.ts +32 -32
- package/sails/i18n/files/frontend/locales/de/common.json +44 -44
- package/sails/i18n/files/frontend/locales/en/common.json +44 -44
- package/sails/i18n/install.ts +407 -407
- package/sails/push-notifications/README.md +163 -163
- package/sails/push-notifications/addon.json +31 -31
- package/sails/push-notifications/files/backend/routes/notifications.ts +153 -153
- package/sails/push-notifications/files/backend/schema/notifications.ts +31 -31
- package/sails/push-notifications/files/backend/services/notifications.ts +117 -117
- package/sails/push-notifications/files/frontend/components/PushNotificationInit.tsx +12 -12
- package/sails/push-notifications/files/frontend/hooks/usePushNotifications.ts +154 -154
- package/sails/push-notifications/install.ts +384 -384
- package/sails/r2-storage/addon.json +29 -29
- package/sails/r2-storage/files/backend/services/storage.ts +71 -71
- package/sails/r2-storage/files/frontend/components/ProfilePictureUpload.tsx +167 -167
- package/sails/r2-storage/install.ts +412 -412
- package/sails/rate-limiting/addon.json +20 -20
- package/sails/rate-limiting/files/backend/middleware/rate-limit-store.ts +104 -104
- package/sails/rate-limiting/files/backend/middleware/rate-limit.ts +137 -137
- package/sails/rate-limiting/install.ts +300 -300
- package/sails/registry.json +107 -107
- package/sails/stripe/README.md +214 -214
- package/sails/stripe/addon.json +24 -24
- package/sails/stripe/files/backend/routes/stripe.ts +154 -154
- package/sails/stripe/files/backend/schema/stripe.ts +74 -74
- package/sails/stripe/files/backend/services/stripe.ts +224 -224
- package/sails/stripe/files/frontend/components/SubscriptionStatus.tsx +135 -135
- package/sails/stripe/files/frontend/hooks/useSubscription.ts +86 -86
- package/sails/stripe/files/frontend/pages/Checkout.tsx +116 -116
- package/sails/stripe/files/frontend/pages/Pricing.tsx +226 -226
- package/sails/stripe/install.ts +378 -378
package/dist/scaffold.js
CHANGED
|
@@ -114,60 +114,60 @@ export async function scaffold(config) {
|
|
|
114
114
|
}
|
|
115
115
|
// -- Write project README --------------------------------------------------
|
|
116
116
|
try {
|
|
117
|
-
const readmeContent = `# ${config.displayName}
|
|
118
|
-
|
|
119
|
-
${config.description}
|
|
120
|
-
|
|
121
|
-
Built with [keel](https://github.com/Chafficui/keel) — a codai project.
|
|
122
|
-
|
|
123
|
-
## Quick Start
|
|
124
|
-
|
|
125
|
-
\`\`\`bash
|
|
126
|
-
# Start everything (database + migrations + dev servers)
|
|
127
|
-
keel dev
|
|
128
|
-
\`\`\`
|
|
129
|
-
|
|
130
|
-
Or manually:
|
|
131
|
-
|
|
132
|
-
\`\`\`bash
|
|
133
|
-
docker compose up -d # Start PostgreSQL
|
|
134
|
-
npm run db:migrate # Run database migrations
|
|
135
|
-
npm run dev # Start frontend + backend
|
|
136
|
-
\`\`\`
|
|
137
|
-
|
|
138
|
-
## Project Structure
|
|
139
|
-
|
|
140
|
-
\`\`\`
|
|
141
|
-
packages/
|
|
142
|
-
shared/ — Shared types + validators
|
|
143
|
-
email/ — Email templates (React Email)
|
|
144
|
-
frontend/ — Vite + React + TypeScript SPA
|
|
145
|
-
backend/ — Express + TypeScript API server
|
|
146
|
-
sails/ — Installed sail extensions
|
|
147
|
-
\`\`\`
|
|
148
|
-
|
|
149
|
-
## Useful Commands
|
|
150
|
-
|
|
151
|
-
| Command | Description |
|
|
152
|
-
|---------|-------------|
|
|
153
|
-
| \`keel dev\` | Start database, run migrations, launch dev servers |
|
|
154
|
-
| \`keel doctor\` | Health check (Node, Docker, DB, .env) |
|
|
155
|
-
| \`keel env\` | Show environment variable status |
|
|
156
|
-
| \`keel generate route <name>\` | Scaffold an API route |
|
|
157
|
-
| \`keel generate page <name>\` | Scaffold a React page |
|
|
158
|
-
| \`keel generate email <name>\` | Scaffold an email template |
|
|
159
|
-
| \`keel sail add <name>\` | Install a sail extension |
|
|
160
|
-
| \`keel list\` | Show available sails |
|
|
161
|
-
| \`keel db:studio\` | Open Drizzle Studio |
|
|
162
|
-
| \`keel db:reset\` | Reset database (destructive!) |
|
|
163
|
-
|
|
164
|
-
## Environment
|
|
165
|
-
|
|
166
|
-
Copy \`.env.example\` to \`.env\` and fill in the values. See \`keel env\` to check what's missing.
|
|
167
|
-
|
|
168
|
-
## Learn More
|
|
169
|
-
|
|
170
|
-
- [keel documentation](https://github.com/Chafficui/keel)
|
|
117
|
+
const readmeContent = `# ${config.displayName}
|
|
118
|
+
|
|
119
|
+
${config.description}
|
|
120
|
+
|
|
121
|
+
Built with [keel](https://github.com/Chafficui/keel) — a codai project.
|
|
122
|
+
|
|
123
|
+
## Quick Start
|
|
124
|
+
|
|
125
|
+
\`\`\`bash
|
|
126
|
+
# Start everything (database + migrations + dev servers)
|
|
127
|
+
keel dev
|
|
128
|
+
\`\`\`
|
|
129
|
+
|
|
130
|
+
Or manually:
|
|
131
|
+
|
|
132
|
+
\`\`\`bash
|
|
133
|
+
docker compose up -d # Start PostgreSQL
|
|
134
|
+
npm run db:migrate # Run database migrations
|
|
135
|
+
npm run dev # Start frontend + backend
|
|
136
|
+
\`\`\`
|
|
137
|
+
|
|
138
|
+
## Project Structure
|
|
139
|
+
|
|
140
|
+
\`\`\`
|
|
141
|
+
packages/
|
|
142
|
+
shared/ — Shared types + validators
|
|
143
|
+
email/ — Email templates (React Email)
|
|
144
|
+
frontend/ — Vite + React + TypeScript SPA
|
|
145
|
+
backend/ — Express + TypeScript API server
|
|
146
|
+
sails/ — Installed sail extensions
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
## Useful Commands
|
|
150
|
+
|
|
151
|
+
| Command | Description |
|
|
152
|
+
|---------|-------------|
|
|
153
|
+
| \`keel dev\` | Start database, run migrations, launch dev servers |
|
|
154
|
+
| \`keel doctor\` | Health check (Node, Docker, DB, .env) |
|
|
155
|
+
| \`keel env\` | Show environment variable status |
|
|
156
|
+
| \`keel generate route <name>\` | Scaffold an API route |
|
|
157
|
+
| \`keel generate page <name>\` | Scaffold a React page |
|
|
158
|
+
| \`keel generate email <name>\` | Scaffold an email template |
|
|
159
|
+
| \`keel sail add <name>\` | Install a sail extension |
|
|
160
|
+
| \`keel list\` | Show available sails |
|
|
161
|
+
| \`keel db:studio\` | Open Drizzle Studio |
|
|
162
|
+
| \`keel db:reset\` | Reset database (destructive!) |
|
|
163
|
+
|
|
164
|
+
## Environment
|
|
165
|
+
|
|
166
|
+
Copy \`.env.example\` to \`.env\` and fill in the values. See \`keel env\` to check what's missing.
|
|
167
|
+
|
|
168
|
+
## Learn More
|
|
169
|
+
|
|
170
|
+
- [keel documentation](https://github.com/Chafficui/keel)
|
|
171
171
|
`;
|
|
172
172
|
writeFileSync(join(targetDir, "README.md"), readmeContent, "utf-8");
|
|
173
173
|
}
|
|
@@ -244,20 +244,20 @@ Copy \`.env.example\` to \`.env\` and fill in the values. See \`keel env\` to ch
|
|
|
244
244
|
if (config.databaseSetup === "docker") {
|
|
245
245
|
// Template already ships with docker-compose.yml — only write if missing
|
|
246
246
|
const dockerComposePath = join(targetDir, "docker-compose.yml");
|
|
247
|
-
const content = `services:
|
|
248
|
-
postgres:
|
|
249
|
-
image: postgres:16-alpine
|
|
250
|
-
environment:
|
|
251
|
-
POSTGRES_DB: ${config.projectName}
|
|
252
|
-
POSTGRES_USER: postgres
|
|
253
|
-
POSTGRES_PASSWORD: postgres
|
|
254
|
-
ports:
|
|
255
|
-
- "5432:5432"
|
|
256
|
-
volumes:
|
|
257
|
-
- postgres_data:/var/lib/postgresql/data
|
|
258
|
-
|
|
259
|
-
volumes:
|
|
260
|
-
postgres_data:
|
|
247
|
+
const content = `services:
|
|
248
|
+
postgres:
|
|
249
|
+
image: postgres:16-alpine
|
|
250
|
+
environment:
|
|
251
|
+
POSTGRES_DB: ${config.projectName}
|
|
252
|
+
POSTGRES_USER: postgres
|
|
253
|
+
POSTGRES_PASSWORD: postgres
|
|
254
|
+
ports:
|
|
255
|
+
- "5432:5432"
|
|
256
|
+
volumes:
|
|
257
|
+
- postgres_data:/var/lib/postgresql/data
|
|
258
|
+
|
|
259
|
+
volumes:
|
|
260
|
+
postgres_data:
|
|
261
261
|
`;
|
|
262
262
|
try {
|
|
263
263
|
writeFileSync(dockerComposePath, content, { encoding: "utf-8", flag: "wx" });
|
package/package.json
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@codaijs/keel",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"description": "CLI tool for keel (a codai project): create projects and manage sails",
|
|
6
|
-
"repository": {
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/Chafficui/keel.git"
|
|
9
|
-
},
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"keywords": [
|
|
12
|
-
"cli",
|
|
13
|
-
"template",
|
|
14
|
-
"framework",
|
|
15
|
-
"fullstack",
|
|
16
|
-
"ai",
|
|
17
|
-
"react",
|
|
18
|
-
"express",
|
|
19
|
-
"typescript",
|
|
20
|
-
"capacitor",
|
|
21
|
-
"mobile",
|
|
22
|
-
"boilerplate"
|
|
23
|
-
],
|
|
24
|
-
"bugs": {
|
|
25
|
-
"url": "https://github.com/Chafficui/keel/issues"
|
|
26
|
-
},
|
|
27
|
-
"homepage": "https://keel.codai.app",
|
|
28
|
-
"publishConfig": {
|
|
29
|
-
"access": "public"
|
|
30
|
-
},
|
|
31
|
-
"bin": {
|
|
32
|
-
"create-keel": "dist/create.js",
|
|
33
|
-
"keel": "dist/manage.js"
|
|
34
|
-
},
|
|
35
|
-
"files": [
|
|
36
|
-
"dist",
|
|
37
|
-
"sails",
|
|
38
|
-
"README.md"
|
|
39
|
-
],
|
|
40
|
-
"scripts": {
|
|
41
|
-
"build": "tsc --build",
|
|
42
|
-
"dev": "tsx src/create.ts",
|
|
43
|
-
"test": "vitest run",
|
|
44
|
-
"test:watch": "vitest"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@inquirer/prompts": "^
|
|
48
|
-
"chalk": "^5.4.0",
|
|
49
|
-
"degit": "^2.8.4",
|
|
50
|
-
"ora": "^
|
|
51
|
-
},
|
|
52
|
-
"devDependencies": {
|
|
53
|
-
"@types/node": "^
|
|
54
|
-
"tsx": "^4.19.0",
|
|
55
|
-
"typescript": "^
|
|
56
|
-
"vitest": "^4.1.1"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@codaijs/keel",
|
|
3
|
+
"version": "0.2.4",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "CLI tool for keel (a codai project): create projects and manage sails",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Chafficui/keel.git"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"cli",
|
|
13
|
+
"template",
|
|
14
|
+
"framework",
|
|
15
|
+
"fullstack",
|
|
16
|
+
"ai",
|
|
17
|
+
"react",
|
|
18
|
+
"express",
|
|
19
|
+
"typescript",
|
|
20
|
+
"capacitor",
|
|
21
|
+
"mobile",
|
|
22
|
+
"boilerplate"
|
|
23
|
+
],
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/Chafficui/keel/issues"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://keel.codai.app",
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"bin": {
|
|
32
|
+
"create-keel": "dist/create.js",
|
|
33
|
+
"keel": "dist/manage.js"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"sails",
|
|
38
|
+
"README.md"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc --build",
|
|
42
|
+
"dev": "tsx src/create.ts",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@inquirer/prompts": "^8.3.2",
|
|
48
|
+
"chalk": "^5.4.0",
|
|
49
|
+
"degit": "^2.8.4",
|
|
50
|
+
"ora": "^9.3.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^25.5.0",
|
|
54
|
+
"tsx": "^4.19.0",
|
|
55
|
+
"typescript": "^6.0.2",
|
|
56
|
+
"vitest": "^4.1.1"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sail-name",
|
|
3
|
-
"displayName": "Sail Display Name",
|
|
4
|
-
"description": "What this sail does",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"compatibility": ">=1.0.0",
|
|
7
|
-
"requiredEnvVars": [],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"backend": {},
|
|
10
|
-
"frontend": {}
|
|
11
|
-
},
|
|
12
|
-
"modifies": {
|
|
13
|
-
"backend": [],
|
|
14
|
-
"frontend": []
|
|
15
|
-
},
|
|
16
|
-
"adds": {
|
|
17
|
-
"backend": [],
|
|
18
|
-
"frontend": []
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "sail-name",
|
|
3
|
+
"displayName": "Sail Display Name",
|
|
4
|
+
"description": "What this sail does",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"compatibility": ">=1.0.0",
|
|
7
|
+
"requiredEnvVars": [],
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"backend": {},
|
|
10
|
+
"frontend": {}
|
|
11
|
+
},
|
|
12
|
+
"modifies": {
|
|
13
|
+
"backend": [],
|
|
14
|
+
"frontend": []
|
|
15
|
+
},
|
|
16
|
+
"adds": {
|
|
17
|
+
"backend": [],
|
|
18
|
+
"frontend": []
|
|
19
|
+
}
|
|
20
|
+
}
|