SPB Git forge

spb/countryatlas

Public
20commits 1branches 0releases
268.3 MBsize
maindefault branch
12 days agolast push
TypeScript 57% Python 38.6% JavaScript 3.6% CSS 0.6%
4.6 KB · 106 lines json
Raw Blame History
1{2  "app": "countryatlas",3  "label": "CountryAtlas — Understand the world, one country at a time",4  "domain": "www.countryatlas.co",5  "port": 8290,6  "health_path": "/api/v1/health",7  "dir": "~/apps/countryatlas",8  "extra_paths": [],9  "sync_excludes": [10    ".venv/", "__pycache__/", ".pytest_cache/", ".ruff_cache/", "*.egg-info/", ".git/", ".env", ".env.*", "!.env.example",11    "node_modules/", "apps/web/.next/", "apps/web/next-env.d.ts", "*.tsbuildinfo", "apps/web/qa/screens/",12    "/data/", "*.duckdb", "*.duckdb.wal", "logs/", "tmp/", ".DS_Store", ".claude/", "deploy/.admin-token", "docs/sources-research.md"13  ],14  "requires": {15    "runtimes": ["pm2", "node", "pnpm", "uv", "uv-python@3.12"],16    "ram_gb": 6,17    "ports": [8290, 8291]18  },19  "ram_mb_observed": 2500,20  "size_mb": 60,21  "placement": {22    "pin": "M2M32",23    "prefer": null,24    "avoid": ["M3U96b", "M1M32"],25    "reason": "Mac Studio M2 Max 12 c / 32 Go dédié (aucune autre app), uv + pnpm + node présents, raccordé au tunnel wg1 ; pipeline quotidien + DuckDB en lecture"26  },27  "processes": [28    {29      "name": "countryatlas-api",30      "manager": "pm2",31      "script": "{{HOME}}/apps/countryatlas/.venv/bin/python",32      "args": ["-m", "uvicorn", "countryatlas.api.main:app", "--host", "127.0.0.1", "--port", "8291", "--no-access-log", "--proxy-headers", "--timeout-keep-alive", "75"],33      "interpreter": null,34      "cwd": "{{HOME}}/apps/countryatlas",35      "env": {36        "CA_DATA_DIR": "{{HOME}}/countryatlas-data",37        "CA_API_HOST": "127.0.0.1",38        "CA_API_PORT": "8291",39        "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a",40        "CA_SITE_URL": "https://www.countryatlas.co",41        "FRED_API_KEY": "5d6f76382d7d188e9166bb3b96c8f934",42        "PYTHONUNBUFFERED": "1"43      },44      "cron_restart": null,45      "autorestart": true,46      "max_memory_restart": "3G"47    },48    {49      "name": "countryatlas-scheduler",50      "manager": "pm2",51      "script": "{{HOME}}/apps/countryatlas/.venv/bin/ca",52      "args": ["schedule"],53      "interpreter": null,54      "cwd": "{{HOME}}/apps/countryatlas",55      "env": {56        "CA_DATA_DIR": "{{HOME}}/countryatlas-data",57        "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a",58        "FRED_API_KEY": "5d6f76382d7d188e9166bb3b96c8f934",59        "CA_TZ": "America/Toronto",60        "CA_REFRESH_HOUR": "3",61        "CA_REFRESH_MINUTE": "15",62        "PYTHONUNBUFFERED": "1"63      },64      "cron_restart": null,65      "autorestart": true,66      "max_memory_restart": "6G"67    },68    {69      "name": "countryatlas-web",70      "manager": "pm2",71      "script": "/opt/homebrew/bin/node",72      "args": ["node_modules/next/dist/bin/next", "start", "-p", "8290", "-H", "0.0.0.0"],73      "interpreter": null,74      "cwd": "{{HOME}}/apps/countryatlas/apps/web",75      "env": {76        "NODE_ENV": "production",77        "API_URL": "http://127.0.0.1:8291",78        "NEXT_PUBLIC_SITE_URL": "https://www.countryatlas.co",79        "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a",80        "NEXT_TELEMETRY_DISABLED": "1"81      },82      "cron_restart": null,83      "autorestart": true,84      "max_memory_restart": "2G"85    }86  ],87  "ngrok": null,88  "launchd": [],89  "env_overrides": {},90  "hooks": {91    "post_sync": [92      "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'",93      "export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo '  web deps ok'",94      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; cd apps/web && API_URL=http://127.0.0.1:8291 NEXT_PUBLIC_SITE_URL=https://www.countryatlas.co CA_ADMIN_TOKEN=c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo '  web build ok'",95      "mkdir -p $HOME/countryatlas-data/{raw,staging,build,snapshots,exports,logs} && echo '  data dirs ok'"96    ],97    "post_start": []98  },99  "notes": "v0.1.0 (2026-09-11) : Next 16 :8290 (rewrites /api/v1/* → FastAPI 127.0.0.1:8291), pipeline Python (ca refresh quotidien 03:15 via countryatlas-scheduler), DuckDB snapshot ~/countryatlas-data/atlas.duckdb (swap atomique). Sources : World Bank, IMF WEO, OECD, Eurostat, WHO GHO, FRED, OWID, BIS. Secrets (CA_ADMIN_TOKEN, FRED_API_KEY) uniquement ici.",100  "tunnel": {101    "domain": "www.countryatlas.co",102    "gateway": "BHS64",103    "note": "DNS A www → 51.161.112.61 posé par l'utilisateur le 2026-09-11 ; apex countryatlas.co sans A record (redirect Caddy à poser quand l'A @ existera)"104  }105}106