spb/cancerindex
Public
TypeScript 97.2%
SQL 1.5%
CSS 0.6%
JavaScript 0.5%
1{2 "app": "cancerindex",3 "label": "CancerIndex — The global index of cancer",4 "domain": "www.cancerindex.io",5 "port": 8250,6 "health_path": "/healthz",7 "dir": "~/apps/cancerindex",8 "extra_paths": [],9 "sync_excludes": [10 "node_modules/",11 ".next/",12 ".git/",13 ".env*",14 "data/raw/",15 "data/cache/",16 "logs/",17 "tmp/",18 "/coverage/",19 ".DS_Store",20 ".claude/",21 "apps/web/.next/"22 ],23 "requires": {24 "runtimes": [25 "pm2",26 "node",27 "pnpm",28 "postgresql@17"29 ],30 "ram_gb": 6,31 "ports": [32 8250,33 825134 ]35 },36 "ram_mb_observed": 2500,37 "size_mb": 600,38 "placement": {39 "pin": null,40 "prefer": "M4M64b",41 "avoid": [42 "M3U96b",43 "M1M32"44 ],45 "reason": "M4M64b already runs Postgres 17 + pgvector, pnpm and redis with 772 GB of disk for the raw lake; M3U96b is reserved for hfmarketdata and M1M32 is the gateway."46 },47 "ngrok": null,48 "launchd": [],49 "env_overrides": {},50 "hooks": {51 "post_sync": [52 "pnpm install --frozen-lockfile",53 "psql -lqt | cut -d'|' -f1 | grep -qw cancerindex || createdb cancerindex",54 "psql cancerindex -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS unaccent; CREATE EXTENSION IF NOT EXISTS vector;'",55 "DATABASE_URL=postgres://localhost:5432/cancerindex pnpm db:migrate",56 "DATABASE_URL=postgres://localhost:5432/cancerindex pnpm db:seed",57 "DATABASE_URL=postgres://localhost:5432/cancerindex pnpm cix sources:sync",58 "mkdir -p data/raw data/cache logs",59 "NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 NEXT_PUBLIC_SITE_URL=https://www.cancerindex.io CI_API_URL=http://127.0.0.1:8251 DATABASE_URL=postgres://localhost:5432/cancerindex pnpm --filter @cancerindex/web build"60 ],61 "post_start": [62 "sleep 5 && curl -fsS http://127.0.0.1:8251/healthz",63 "sleep 2 && curl -fsS http://127.0.0.1:8250/healthz || curl -fsS -o /dev/null http://127.0.0.1:8250/"64 ]65 },66 "ka_repo": null,67 "processes": [68 {69 "name": "cancerindex-web",70 "manager": "pm2",71 "script": "/opt/homebrew/bin/node",72 "args": [73 "node_modules/next/dist/bin/next",74 "start",75 "-p",76 "8250",77 "-H",78 "0.0.0.0"79 ],80 "interpreter": null,81 "cwd": "{{HOME}}/apps/cancerindex/apps/web",82 "env": {83 "NODE_ENV": "production",84 "DATABASE_URL": "postgres://localhost:5432/cancerindex",85 "NEXT_PUBLIC_SITE_URL": "https://www.cancerindex.io",86 "CI_API_URL": "http://127.0.0.1:8251",87 "API_PORT": "8251",88 "WEB_PORT": "8250",89 "CI_DATA_DIR": "{{HOME}}/apps/cancerindex/data",90 "ADMIN_TOKEN": "{{ADMIN_TOKEN}}",91 "NCBI_TOOL": "cancerindex",92 "NCBI_EMAIL": "spbou4@icloud.com",93 "NCBI_API_KEY": "",94 "SEER_API_KEY": "",95 "NEXT_TELEMETRY_DISABLED": "1"96 },97 "cron_restart": null,98 "autorestart": true,99 "max_memory_restart": "2G"100 },101 {102 "name": "cancerindex-api",103 "manager": "pm2",104 "script": "/opt/homebrew/bin/node",105 "args": [106 "node_modules/tsx/dist/cli.mjs",107 "apps/api/src/server.ts"108 ],109 "interpreter": null,110 "cwd": "{{HOME}}/apps/cancerindex",111 "env": {112 "NODE_ENV": "production",113 "CI_SERVICE": "api",114 "DATABASE_URL": "postgres://localhost:5432/cancerindex",115 "API_HOST": "127.0.0.1",116 "API_PORT": "8251",117 "WEB_PORT": "8250",118 "CI_API_URL": "http://127.0.0.1:8251",119 "NEXT_PUBLIC_SITE_URL": "https://www.cancerindex.io",120 "CI_DATA_DIR": "{{HOME}}/apps/cancerindex/data",121 "ADMIN_TOKEN": "{{ADMIN_TOKEN}}",122 "LOG_LEVEL": "info"123 },124 "cron_restart": null,125 "autorestart": true,126 "max_memory_restart": "1G"127 },128 {129 "name": "cancerindex-worker",130 "manager": "pm2",131 "script": "/opt/homebrew/bin/node",132 "args": [133 "node_modules/tsx/dist/cli.mjs",134 "workers/main.ts"135 ],136 "interpreter": null,137 "cwd": "{{HOME}}/apps/cancerindex",138 "env": {139 "NODE_ENV": "production",140 "CI_SERVICE": "worker",141 "DATABASE_URL": "postgres://localhost:5432/cancerindex",142 "CI_DATA_DIR": "{{HOME}}/apps/cancerindex/data",143 "WORKER_CONCURRENCY": "2",144 "CI_MAX_RUN_MINUTES": "45",145 "NCBI_TOOL": "cancerindex",146 "NCBI_EMAIL": "spbou4@icloud.com",147 "NCBI_API_KEY": "",148 "SEER_API_KEY": "",149 "LOG_LEVEL": "info"150 },151 "cron_restart": null,152 "autorestart": true,153 "max_memory_restart": "3G"154 },155 {156 "name": "cancerindex-backup",157 "manager": "pm2",158 "script": "/bin/bash",159 "args": [160 "deploy/backup.sh"161 ],162 "interpreter": null,163 "cwd": "{{HOME}}/apps/cancerindex",164 "env": {165 "DATABASE_URL": "postgres://localhost:5432/cancerindex",166 "BACKUP_DIR": "{{HOME}}/apps/cancerindex/backups",167 "LOG_DIR": "{{HOME}}/apps/cancerindex/logs",168 "KEEP_DAILY": "14",169 "KEEP_WEEKLY": "8",170 "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin"171 },172 "cron_restart": "20 5 * * *",173 "autorestart": false,174 "max_memory_restart": null175 }176 ],177 "tunnel": {178 "domain": "www.cancerindex.io",179 "gateway": "BHS64",180 "note": "MacLustr Tunnel (WireGuard + Caddy on BHS64) since 2026-09-10; ngrok retired"181 }182}183