SPB Git
3.9 KB · 35 lines json
1{2  "app": "wp-spboucher-ai",3  "label": "Research Working Papers — Simon-Pierre Boucher Research Observatory (wp.spboucher.ai)",4  "domain": "wp.spboucher.ai",5  "port": 8560,6  "health_path": "/api/health",7  "dir": "~/apps/wp-spboucher-ai",8  "extra_paths": [],9  "sync_excludes": [".git/", ".DS_Store", "node_modules/", ".next/", ".env", ".env.*", "test-results/", "playwright-report/", "tsconfig.tsbuildinfo", "next-env.d.ts", "docs/_verification-*.json"],10  "requires": { "runtimes": ["node", "pnpm", "pm2", "postgresql@17"], "ram_gb": 3, "ports": [8560] },11  "ram_mb_observed": 700,12  "size_mb": 25,13  "placement": { "pin": "M3U96b", "prefer": "M3U96b", "avoid": ["M1M32"], "reason": "PostgreSQL 17.11 + pgvector 0.8.7 + poppler installed and initialised on M3U96b (DB wp_spboucher, roles wp_app / wp_reader); 395 GB free for versioned manuscripts; only 2 other apps (toveli, autoscholar); wg1 peer of BHS64" },14  "processes": [15    { "name": "wp-web", "manager": "pm2", "script": "/opt/homebrew/bin/node", "args": ["node_modules/next/dist/bin/next", "start", "-p", "8560", "-H", "0.0.0.0"], "interpreter": null, "cwd": "{{HOME}}/apps/wp-spboucher-ai", "env": { "NODE_ENV": "production", "PORT": "8560", "NEXT_TELEMETRY_DISABLED": "1", "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin" }, "cron_restart": null, "autorestart": true, "max_memory_restart": "1500M", "kill_timeout": 8000 },16    { "name": "wp-worker", "manager": "pm2", "script": "/opt/homebrew/bin/node", "args": ["node_modules/tsx/dist/cli.mjs", "src/worker/index.ts"], "interpreter": null, "cwd": "{{HOME}}/apps/wp-spboucher-ai", "env": { "NODE_ENV": "production", "NEXT_TELEMETRY_DISABLED": "1", "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin" }, "cron_restart": null, "autorestart": true, "max_memory_restart": "1G", "kill_timeout": 30000 }17  ],18  "ngrok": null,19  "launchd": [],20  "env_overrides": {},21  "hooks": {22    "post_sync": [23      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; test -f .env || { echo 'ERREUR: .env absent (secrets) — copier ~/Desktop/Cluster/secrets/wp-spboucher-ai/.env'; exit 1; }; chmod 600 .env",24      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent 2>&1 | grep -v '^\\s*at ' | tail -2; test -d node_modules/next && echo '  deps ok'",25      "set -o pipefail; export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; node_modules/.bin/tsx scripts/migrate.ts && node_modules/.bin/tsx scripts/db-roles.ts && node_modules/.bin/tsx scripts/bootstrap-owner.ts && echo '  db ok'",26      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; rm -rf .next; NEXT_TELEMETRY_DISABLED=1 node_modules/.bin/next build 2>&1 | grep -vE 'Warning: Dynamic|turbopackIgnore|^\\s*$' | tail -3 && test -f .next/BUILD_ID && echo '  build ok'",27      "mkdir -p ~/data/wp-spboucher-ai/files ~/data/wp-spboucher-ai/previews ~/data/wp-spboucher-ai/inbox ~/data/wp-spboucher-ai/tmp ~/backups/wp-spboucher-ai && chmod 700 ~/data/wp-spboucher-ai ~/backups/wp-spboucher-ai && echo '  storage ok'"28    ],29    "post_start": []30  },31  "ka_repo": false,32  "tunnel": { "domain": "wp.spboucher.ai", "gateway": "BHS64", "note": "DNS GoDaddy A wp.spboucher.ai → 51.161.112.61 vérifié le 2026-11-02 (préexistant, aucune modification) ; route Caddy posée par mld deploy" },33  "notes": "Next.js 16 + PostgreSQL 17/pgvector local (DB wp_spboucher ; rôles wp_app lecture/écriture, wp_reader lecture seule sur les vues public_*) + worker tsx (PDF → texte/chunks/aperçus, embeddings OpenAI optionnels, relations, stats quotidiennes 00:10, sauvegardes chiffrées 04:40 → ~/backups/wp-spboucher-ai + rsync M3U96a). Manuscrits : ~/data/wp-spboucher-ai (hors dépôt, adressés par SHA-256). Secrets uniquement dans ~/apps/wp-spboucher-ai/.env (600) ; copie ~/Desktop/Cluster/secrets/wp-spboucher-ai/.env."34}35
Files · main
Menu

Theme