mirror of
https://github.com/kamask-dev/pchelpmaster.git
synced 2026-11-11 05:49:38 +00:00
feat(pocketbase): add pocketbase dev setup and superuser script
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XJAY6Rgre8viuBjhA6djfW
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
a0ae3f1254
commit
f61ba84228
@@ -0,0 +1,4 @@
|
|||||||
|
# Copy to .env and fill in. .env is not committed.
|
||||||
|
PB_DIR=pocketbase/pb_data
|
||||||
|
PB_SUPERUSER_EMAIL=
|
||||||
|
PB_SUPERUSER_PASSWORD=
|
||||||
@@ -19,6 +19,7 @@ yarn-error.log
|
|||||||
*.launch
|
*.launch
|
||||||
.settings/
|
.settings/
|
||||||
*.sublime-workspace
|
*.sublime-workspace
|
||||||
|
.claude/
|
||||||
|
|
||||||
# Visual Studio Code
|
# Visual Studio Code
|
||||||
.vscode/*
|
.vscode/*
|
||||||
@@ -39,6 +40,10 @@ testem.log
|
|||||||
/typings
|
/typings
|
||||||
__screenshots__/
|
__screenshots__/
|
||||||
|
|
||||||
|
# PocketBase
|
||||||
|
/pocketbase/pb_data
|
||||||
|
.env
|
||||||
|
|
||||||
# System files
|
# System files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|||||||
@@ -54,6 +54,32 @@ ng e2e
|
|||||||
|
|
||||||
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
|
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
|
||||||
|
|
||||||
|
## PocketBase
|
||||||
|
|
||||||
|
The backend is [PocketBase](https://pocketbase.io/) (v0.40.x). The `pocketbase` binary must be in `PATH`.
|
||||||
|
|
||||||
|
- `pocketbase/pb_migrations/` — collection schema as JS migrations (committed).
|
||||||
|
- `pocketbase/pb_data/` — local dev database (not committed).
|
||||||
|
|
||||||
|
Local development:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env # then set PB_SUPERUSER_EMAIL / PB_SUPERUSER_PASSWORD
|
||||||
|
pnpm pb:superuser # create the superuser or reset its password (safe to re-run)
|
||||||
|
pnpm pb:serve # http://127.0.0.1:8090, admin UI at /_/
|
||||||
|
```
|
||||||
|
|
||||||
|
Migrations are applied on `pb:serve` start (or explicitly with `pnpm pb:migrate`). Schema changes made in the dev admin UI are written to `pocketbase/pb_migrations/` automatically — commit them.
|
||||||
|
|
||||||
|
Production uses the same binary version and the same `pb_migrations/`, with its own data dir:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pocketbase serve --dir /path/to/pb_data --migrationsDir pocketbase/pb_migrations --automigrate=false --http 127.0.0.1:8090
|
||||||
|
PB_DIR=/path/to/pb_data node --env-file=.env scripts/pb-superuser.mjs
|
||||||
|
```
|
||||||
|
|
||||||
|
Back up by copying the `pb_data` directory.
|
||||||
|
|
||||||
## Additional Resources
|
## Additional Resources
|
||||||
|
|
||||||
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
||||||
|
|||||||
+5
-1
@@ -7,7 +7,10 @@
|
|||||||
"build": "ng build",
|
"build": "ng build",
|
||||||
"watch": "ng build --watch --configuration development",
|
"watch": "ng build --watch --configuration development",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"serve:ssr:pchelpcrm": "node dist/pchelpcrm/server/server.mjs"
|
"serve:ssr:pchelpcrm": "node dist/pchelpcrm/server/server.mjs",
|
||||||
|
"pb:serve": "pocketbase serve --dir pocketbase/pb_data --migrationsDir pocketbase/pb_migrations --dev",
|
||||||
|
"pb:superuser": "node --env-file=.env scripts/pb-superuser.mjs",
|
||||||
|
"pb:migrate": "pocketbase migrate up --dir pocketbase/pb_data --migrationsDir pocketbase/pb_migrations"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -20,6 +23,7 @@
|
|||||||
"@angular/router": "^22.2.0",
|
"@angular/router": "^22.2.0",
|
||||||
"@angular/ssr": "^22.2.3",
|
"@angular/ssr": "^22.2.3",
|
||||||
"express": "^5.1.0",
|
"express": "^5.1.0",
|
||||||
|
"pocketbase": "^0.28.1",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"tslib": "^2.3.0"
|
"tslib": "^2.3.0"
|
||||||
},
|
},
|
||||||
|
|||||||
Generated
+8
@@ -35,6 +35,9 @@ importers:
|
|||||||
express:
|
express:
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.3.0(supports-color@8.1.1)
|
version: 5.3.0(supports-color@8.1.1)
|
||||||
|
pocketbase:
|
||||||
|
specifier: ^0.28.1
|
||||||
|
version: 0.28.1
|
||||||
rxjs:
|
rxjs:
|
||||||
specifier: ~7.8.0
|
specifier: ~7.8.0
|
||||||
version: 7.8.2
|
version: 7.8.2
|
||||||
@@ -1986,6 +1989,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-vv7l/mM7B9WgrhDaudIqv1x6v4LOBRYYmpWGdWushhpbCmVHp11sUB2v4hj1CAeTGXVxuZFz6xOU1RalAiPKfQ==}
|
resolution: {integrity: sha512-vv7l/mM7B9WgrhDaudIqv1x6v4LOBRYYmpWGdWushhpbCmVHp11sUB2v4hj1CAeTGXVxuZFz6xOU1RalAiPKfQ==}
|
||||||
engines: {node: '>=20.x'}
|
engines: {node: '>=20.x'}
|
||||||
|
|
||||||
|
pocketbase@0.28.1:
|
||||||
|
resolution: {integrity: sha512-/3ihkq+rvfcs0MQgrK4sEElOg6gfenHW9S/O+3BSO+V1yT+4B10+9aT22uTQUPqze9ItwNtwWyY5ZmdgVCTdVA==}
|
||||||
|
|
||||||
postcss-media-query-parser@0.2.3:
|
postcss-media-query-parser@0.2.3:
|
||||||
resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
|
resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
|
||||||
|
|
||||||
@@ -4194,6 +4200,8 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@napi-rs/nice': 1.1.1
|
'@napi-rs/nice': 1.1.1
|
||||||
|
|
||||||
|
pocketbase@0.28.1: {}
|
||||||
|
|
||||||
postcss-media-query-parser@0.2.3: {}
|
postcss-media-query-parser@0.2.3: {}
|
||||||
|
|
||||||
postcss-safe-parser@7.1.0(postcss@8.5.31):
|
postcss-safe-parser@7.1.0(postcss@8.5.31):
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// Creates the PocketBase superuser or resets its password (idempotent).
|
||||||
|
import { execFileSync } from 'node:child_process';
|
||||||
|
|
||||||
|
const { PB_SUPERUSER_EMAIL: email, PB_SUPERUSER_PASSWORD: password } = process.env;
|
||||||
|
const dir = process.env.PB_DIR || 'pocketbase/pb_data';
|
||||||
|
|
||||||
|
if (!email || !password) {
|
||||||
|
console.error('PB_SUPERUSER_EMAIL and PB_SUPERUSER_PASSWORD must be set (see .env.example)');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
execFileSync('pocketbase', ['superuser', 'upsert', email, password, '--dir', dir], { stdio: 'inherit' });
|
||||||
Reference in New Issue
Block a user