SPB Git

spb/qc26

Public
3.6 KB · 127 lines json
1{2  "app": "qc26",3  "label": "QC26 — L'élection québécoise 2026, en données",4  "domain": "www.qc26.ca",5  "port": 8200,6  "health_path": "/healthz",7  "dir": "~/apps/qc26",8  "extra_paths": [],9  "sync_excludes": [10    "engine/.venv/",11    "__pycache__/",12    ".pytest_cache/",13    ".ruff_cache/",14    "*.egg-info/",15    ".git/",16    "web/node_modules/",17    "web/.next/",18    "engine/logs/",19    "logs/",20    ".DS_Store",21    "engine/data/qc26.db",22    "engine/data/qc26.db-shm",23    "engine/data/qc26.db-wal",24    "engine/data/archive/",25    "engine/data/cache/"26  ],27  "requires": {28    "runtimes": [29      "pm2",30      "ngrok",31      "node",32      "pnpm",33      "uv",34      "uv-python@3.12"35    ],36    "ram_gb": 4,37    "ports": [38      8200,39      820140    ]41  },42  "ram_mb_observed": 1200,43  "size_mb": 120,44  "placement": {45    "pin": null,46    "prefer": "M3U96a",47    "avoid": [48      "M3U96b",49      "M1M32"50    ],51    "reason": "Monte Carlo numpy + build Next.js : cœurs et RAM ; uv-py3.12 + pnpm présents ; M3U96b réservé hfmarketdata"52  },53  "processes": [54    {55      "name": "qc26-engine",56      "manager": "pm2",57      "script": "{{HOME}}/apps/qc26/engine/.venv/bin/python",58      "args": [59        "-m",60        "uvicorn",61        "qc26.main:app",62        "--host",63        "127.0.0.1",64        "--port",65        "8201",66        "--no-access-log"67      ],68      "interpreter": null,69      "cwd": "{{HOME}}/apps/qc26/engine",70      "env": {71        "QC26_ENVIRONMENT": "production",72        "QC26_PORT": "8201",73        "QC26_PUBLIC_URL": "https://www.qc26.ca",74        "QC26_ADMIN_TOKEN": "qc26-admin-2026-Kp8vT3nQ7zLw",75        "QC26_FIRECRAWL_API_KEY": "fc-8cc44cb683044aee82e8cbad6505a01a",76        "QC26_ANTHROPIC_API_KEY": "__SET_AT_DEPLOY__",77        "QC26_LLM_MODEL": "claude-opus-5",78        "QC26_N_SIMULATIONS": "20000",79        "PYTHONUNBUFFERED": "1"80      },81      "cron_restart": null,82      "autorestart": true,83      "max_memory_restart": "3G"84    },85    {86      "name": "qc26-web",87      "manager": "pm2",88      "script": "/opt/homebrew/bin/node",89      "args": [90        "node_modules/next/dist/bin/next",91        "start",92        "-p",93        "8200",94        "-H",95        "0.0.0.0"96      ],97      "interpreter": null,98      "cwd": "{{HOME}}/apps/qc26/web",99      "env": {100        "NODE_ENV": "production",101        "QC26_ENGINE_URL": "http://127.0.0.1:8201",102        "NEXT_PUBLIC_SITE_URL": "https://www.qc26.ca",103        "NEXT_TELEMETRY_DISABLED": "1"104      },105      "cron_restart": null,106      "autorestart": true,107      "max_memory_restart": "1500M"108    }109  ],110  "ngrok": {111    "name": "qc26-ngrok",112    "url": "www.qc26.ca",113    "port": 8200114  },115  "launchd": [],116  "env_overrides": {},117  "hooks": {118    "post_sync": [119      "export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; cd engine && (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -e . && echo '  engine deps ok'",120      "export PATH=\"/opt/homebrew/bin:$PATH\"; cd web && pnpm install --frozen-lockfile --silent && echo '  web deps ok'",121      "export PATH=\"/opt/homebrew/bin:$PATH\"; cd web && QC26_ENGINE_URL=http://127.0.0.1:8201 NEXT_PUBLIC_SITE_URL=https://www.qc26.ca NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo '  web build ok'",122      "mkdir -p engine/data/archive/polls engine/data/archive/documents engine/data/archive/live engine/data/cache engine/logs && echo '  data ok'"123    ],124    "post_start": []125  },126  "notes": "Après le premier déploiement (2026-09-06), la base et les archives du nœud sont la source de vérité : exclues des syncs suivants."127}
Files · 4f941928961611a0645cb6628043c2428c5946cb
Menu

Theme