SPB Git forge
28commits 1branches 0releases
7.7 MBsize
maindefault branch
10 days agolast push
Python 66.3% TypeScript 22.7% JavaScript 8.6% HTML 1.4% CSS 0.7%
6.5 KB · 177 lines json
Raw Blame History
1{2  "app": "company-atlas",3  "label": "Company Atlas — the live atlas of global companies",4  "domain": "www.company-atlas.co",5  "port": 8360,6  "health_path": "/api/v1/health",7  "dir": "~/apps/company-atlas",8  "extra_paths": [],9  "sync_excludes": [10    ".venv/",11    "__pycache__/",12    ".pytest_cache/",13    ".ruff_cache/",14    "*.egg-info/",15    ".git/",16    ".env",17    ".env.*",18    "!.env.example",19    "node_modules/",20    "apps/web/.next/",21    "apps/web/.next-*/",22    "apps/web/next-env.d.ts",23    "*.tsbuildinfo",24    "apps/web/qa/screens/",25    "/data/",26    "/tmp/",27    "logs/",28    ".DS_Store",29    ".claude/",30    "deploy/.admin-token",31    "deploy/.llm-key",32    "deploy/rendered/",33    "fixtures/live/"34  ],35  "requires": {36    "runtimes": [37      "pm2",38      "node",39      "pnpm",40      "uv",41      "uv-python@3.12"42    ],43    "ram_gb": 12,44    "ports": [45      8360,46      836147    ]48  },49  "ram_mb_observed": 4000,50  "size_mb": 80,51  "placement": {52    "pin": "M2U64",53    "prefer": null,54    "avoid": [55      "M3U96b",56      "M1M32"57    ],58    "reason": "Mac Studio M2 Ultra 24 c / 64 Go, 53 Go libres, Postgres 17 Homebrew déjà présent (base companyatlas créée le 2026-09-12), wg1 10.67.0.12 ; crawler continu (25 000+ capteurs) + Postgres = nœud le plus généreux hors M3U96a/b"59  },60  "processes": [61    {62      "name": "company-atlas-api",63      "manager": "pm2",64      "script": "{{HOME}}/apps/company-atlas/.venv/bin/python",65      "args": [66        "-m",67        "uvicorn",68        "companyatlas.api.main:app",69        "--host",70        "127.0.0.1",71        "--port",72        "8361",73        "--no-access-log",74        "--proxy-headers",75        "--timeout-keep-alive",76        "75",77        "--workers",78        "2"79      ],80      "interpreter": null,81      "cwd": "{{HOME}}/apps/company-atlas",82      "env": {83        "APP_ENV": "production",84        "CA_SITE_URL": "https://www.company-atlas.co",85        "DATABASE_URL": "postgresql+asyncpg://companyatlas:companyatlas@127.0.0.1:5432/companyatlas",86        "CA_DATA_DIR": "{{HOME}}/company-atlas-data",87        "CA_API_HOST": "127.0.0.1",88        "CA_API_PORT": "8361",89        "CA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",90        "CA_LLM_BASE_URL": "https://www.llm-api.io/v1",91        "CA_LLM_API_KEY": "{{LLM_KEY}}",92        "CA_DB_POOL_SIZE": "6",93        "CA_LOG_JSON": "1",94        "PYTHONUNBUFFERED": "1"95      },96      "cron_restart": null,97      "autorestart": true,98      "max_memory_restart": "2G"99    },100    {101      "name": "company-atlas-scheduler",102      "manager": "pm2",103      "script": "{{HOME}}/apps/company-atlas/.venv/bin/catlas",104      "args": [105        "schedule"106      ],107      "interpreter": null,108      "cwd": "{{HOME}}/apps/company-atlas",109      "env": {110        "APP_ENV": "production",111        "CA_SITE_URL": "https://www.company-atlas.co",112        "DATABASE_URL": "postgresql+asyncpg://companyatlas:companyatlas@127.0.0.1:5432/companyatlas",113        "CA_DATA_DIR": "{{HOME}}/company-atlas-data",114        "CA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",115        "CA_LLM_BASE_URL": "https://www.llm-api.io/v1",116        "CA_LLM_API_KEY": "{{LLM_KEY}}",117        "CA_FETCH_CONCURRENCY": "48",118        "CA_SCHEDULER_CLAIM_BATCH": "400",119        "CA_ONBOARDING_CONCURRENCY": "12",120        "CA_DB_POOL_SIZE": "12",121        "CA_DB_MAX_OVERFLOW": "12",122        "CA_WORKER_CONCURRENCY": "1",123        "CA_LOG_JSON": "1",124        "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin",125        "PYTHONUNBUFFERED": "1"126      },127      "cron_restart": null,128      "autorestart": true,129      "max_memory_restart": "6G"130    },131    {132      "name": "company-atlas-web",133      "manager": "pm2",134      "script": "/opt/homebrew/bin/node",135      "args": [136        "node_modules/next/dist/bin/next",137        "start",138        "-p",139        "8360",140        "-H",141        "0.0.0.0"142      ],143      "interpreter": null,144      "cwd": "{{HOME}}/apps/company-atlas/apps/web",145      "env": {146        "NODE_ENV": "production",147        "API_URL": "http://127.0.0.1:8361",148        "NEXT_PUBLIC_SITE_URL": "https://www.company-atlas.co",149        "NEXT_TELEMETRY_DISABLED": "1"150      },151      "cron_restart": null,152      "autorestart": true,153      "max_memory_restart": "2G"154    }155  ],156  "ngrok": null,157  "launchd": [],158  "env_overrides": {},159  "hooks": {160    "post_sync": [161      "set -o pipefail; mkdir -p $HOME/company-atlas-data/{objects,logs,backups,cache,seed} && echo '  data dirs ok'",162      "set -o pipefail; export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -e . && echo '  python deps ok'",163      "set -o pipefail; export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; export DATABASE_URL=postgresql+asyncpg://companyatlas:companyatlas@127.0.0.1:5432/companyatlas CA_DATA_DIR=$HOME/company-atlas-data CA_LOG_JSON=0; .venv/bin/catlas migrate 2>&1 | tail -1 && .venv/bin/catlas seed 2>&1 | tail -2 && echo '  migrate + seed ok'",164      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo '  web deps ok'",165      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; cd apps/web && API_URL=http://127.0.0.1:8361 NEXT_PUBLIC_SITE_URL=https://www.company-atlas.co NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo '  web build ok'"166    ],167    "post_start": []168  },169  "notes": "v0.1.0 (2026-09-12) : Next 16 :8360 (rewrites /api/v1/* → FastAPI 127.0.0.1:8361, 2 workers uvicorn), scheduler `catlas schedule` (capteurs dus + onboarding/discovery + tâches périodiques : events, enrichissement LLM via llm-api.io, métriques horaires, agrégats quotidiens, signaux, tendances, alertes, réparation, rétention, backup pg_dump). Postgres 17 Homebrew local (base companyatlas, rôle companyatlas) ; pas de Redis. Données hors repo ~/company-atlas-data (objets zstd content-addressed, logs, backups). Secrets : CA_ADMIN_TOKEN (laptop deploy/.admin-token) et CA_LLM_API_KEY (laptop deploy/.llm-key, clé llm-api.io « company-atlas »). Après le premier deploy : `bash deploy/first-run.sh` sur le nœud (onboarding de masse). DNS : www.company-atlas.co A → 51.161.112.61 (OK) ; apex company-atlas.co sans A ; company-atlas.com a ses NS chez Vercel — à repointer avant d'ajouter la route/redirection .com.",170  "tunnel": {171    "domain": "www.company-atlas.co",172    "gateway": "BHS64",173    "redirects": [],174    "note": "Ajouter company-atlas.co (apex) et www.company-atlas.com / company-atlas.com dans redirects dès que leurs A pointent vers 51.161.112.61."175  }176}177