spb/market-atlas
Public
TypeScript 96.7%
SQL 1.6%
CSS 0.8%
JavaScript 0.5%
1{2 "app": "market-atlas",3 "label": "Market Atlas — the live map of global markets",4 "domain": "www.market-atlas.co",5 "port": 8380,6 "health_path": "/v1/health",7 "dir": "~/apps/market-atlas",8 "extra_paths": [],9 "sync_excludes": [10 ".git/",11 ".env",12 ".env.*",13 "!.env.example",14 "node_modules/",15 "apps/api/dist/",16 "apps/web/.next/",17 "apps/web/.next-*/",18 "apps/web/next-env.d.ts",19 "apps/web/qa/screens/",20 "*.tsbuildinfo",21 "data/",22 "/tmp/",23 "logs/",24 "/coverage/",25 ".DS_Store",26 ".claude/",27 "deploy/.admin-token",28 "deploy/.hfmd-key",29 "deploy/rendered/"30 ],31 "requires": {32 "runtimes": ["pm2", "node", "pnpm", "postgresql@17"],33 "ram_gb": 6,34 "ports": [8380, 8382]35 },36 "ram_mb_observed": 1500,37 "size_mb": 30,38 "placement": {39 "pin": "M2U64",40 "prefer": null,41 "avoid": ["M3U96b", "M1M32"],42 "reason": "Mac Studio M2 Ultra 24 c / 64 Go : Postgres 17 Homebrew déjà présent (rôle/db market_atlas créés le 2026-09-12), 40 Go libres, raccordé au tunnel wg1 (10.67.0.12) ; node 25 + pnpm 9 + PM2"43 },44 "processes": [45 {46 "name": "market-atlas-core",47 "manager": "pm2",48 "script": "/opt/homebrew/bin/node",49 "args": ["apps/api/dist/main.js"],50 "interpreter": null,51 "cwd": "{{HOME}}/apps/market-atlas",52 "env": {53 "APP_ENV": "production",54 "NODE_ENV": "production",55 "MA_SITE_URL": "https://www.market-atlas.co",56 "MA_API_HOST": "0.0.0.0",57 "MA_API_PORT": "8380",58 "MA_ROLE": "all",59 "MA_WEB_UPSTREAM": "http://127.0.0.1:8382",60 "DATABASE_URL": "postgres://market_atlas:market_atlas@127.0.0.1:5432/market_atlas",61 "MA_DATA_DIR": "{{HOME}}/market-atlas-data",62 "MA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",63 "MA_CONTACT_EMAIL": "spbou4@icloud.com",64 "HFMD_API_KEY": "{{HFMD_KEY}}",65 "MA_LOG_JSON": "1",66 "MA_RAW_SAMPLE_RATE": "0.02",67 "MA_OBSERVATION_RETENTION_DAYS": "45",68 "MA_TICK_PERSIST_INTERVAL_MS": "5000",69 "PG_DUMP": "/opt/homebrew/opt/postgresql@17/bin/pg_dump",70 "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin"71 },72 "cron_restart": null,73 "autorestart": true,74 "max_memory_restart": "3G"75 },76 {77 "name": "market-atlas-web",78 "manager": "pm2",79 "script": "/opt/homebrew/bin/node",80 "args": ["node_modules/next/dist/bin/next", "start", "-p", "8382", "-H", "127.0.0.1"],81 "interpreter": null,82 "cwd": "{{HOME}}/apps/market-atlas/apps/web",83 "env": {84 "NODE_ENV": "production",85 "API_URL": "http://127.0.0.1:8380",86 "NEXT_PUBLIC_SITE_URL": "https://www.market-atlas.co",87 "NEXT_TELEMETRY_DISABLED": "1"88 },89 "cron_restart": null,90 "autorestart": true,91 "max_memory_restart": "2G"92 }93 ],94 "ngrok": null,95 "launchd": [],96 "env_overrides": {},97 "hooks": {98 "post_sync": [99 "set -o pipefail; mkdir -p $HOME/market-atlas-data/{raw,archive,backups,logs,cache} && echo ' data dirs ok'",100 "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo ' deps ok'",101 "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm --filter @market-atlas/api build 2>&1 | tail -2 && echo ' api build ok'",102 "set -o pipefail; export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; DATABASE_URL=postgres://market_atlas:market_atlas@127.0.0.1:5432/market_atlas MA_DATA_DIR=$HOME/market-atlas-data MA_LOG_JSON=0 node apps/api/dist/cli.js migrate | tail -1 && DATABASE_URL=postgres://market_atlas:market_atlas@127.0.0.1:5432/market_atlas MA_DATA_DIR=$HOME/market-atlas-data MA_LOG_JSON=0 node apps/api/dist/cli.js seed | tail -1 && echo ' migrate + seed ok'",103 "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; cd apps/web && API_URL=http://127.0.0.1:8380 NEXT_PUBLIC_SITE_URL=https://www.market-atlas.co NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo ' web build ok'"104 ],105 "post_start": []106 },107 "notes": "v0.1.0 (2026-09-12) : monorepo TypeScript. market-atlas-core = Fastify sur 0.0.0.0:8380 (edge public : REST /v1, WebSocket /v1/stream, SSE /v1/sse ; tout autre chemin proxyfié vers Next 127.0.0.1:8382) + workers in-process (14 connecteurs : Coinbase/Kraken/Binance/OKX WS, Cboe delayed, ECB/Frankfurter, Banque du Canada, US Treasury, SEC EDGAR filings + directory, Nasdaq Trader symbol directory/halts/calendar, hfmarketdata), consensus multi-sources, moteur d'événements, barres, archive brute ~/market-atlas-data. Postgres 17 Homebrew local (db/rôle market_atlas, observations partitionnées par jour, archive gzip après 45 j, pg_dump métadonnées 04:00). Secrets : MA_ADMIN_TOKEN (laptop deploy/.admin-token) et HFMD_API_KEY (deploy/.hfmd-key). Console : https://www.market-atlas.co/admin.",108 "tunnel": {109 "domain": "www.market-atlas.co",110 "gateway": "BHS64",111 "redirects": [],112 "websocket": true,113 "note": "DNS GoDaddy A www → 51.161.112.61 posé par l'utilisateur le 2026-09-12. Apex market-atlas.co : ajouter A @ → 51.161.112.61 puis redirects: [\"market-atlas.co\"]."114 }115}116