# Project hub **Infra overview:** [docs/INFRA.md](../../docs/INFRA.md) Static landing: `index.html`, `hub.css`, `hub-logo-layers.css`. Logo assets in `assets/` (editable fragments, loaded on demand): - `hub-logo-fragment-space.svg` — cosmic background (#space-bg, #stars-layer, #nebula-*) - `hub-logo-fragment-globe.svg` — Earth (round border + Mercator grid 3x3, no continents) - `hub-logo-transparent.svg` — header mark (globe only) Review one layer: `?logoPart=space|globe|full` Compare Earth grids: `?logoPart=globe&grid=3` (default) or `?logoPart=full&grid=4` **3D globe background** (default): Canvas2D orthographic sphere — same assets as `?globe3d=0`: ocean from `hub-logo-fragment-globe.svg`, continents from `hub-logo-continents-mercator-globe.svg` (body-fixed disk, front face only). Mercator grid is 3D-projected with depth-weighted lines. Disable 3D: `?globe3d=0`. Yaw: `?globeYawDeg=90`. **BE only.** FE `apps.f0xx.org` sends `location /` → `http://artc0.intra.raptor.org:80` (not :8089). Deploy copies/symlink under `.../androidcast_project/` on the VM. Background watermark is **3% opacity** (`hub.css`). See **[DEPLOY.md](DEPLOY.md)** — edit `listen 80` in `tmp/BE_alpine/etc/nginx/conf.d/apps.conf` using `examples/crash_reporter/backend/nginx.apps-port80.fragment`. ## Google Analytics (optional) Shared loader: `../crash_reporter/backend/public/assets/js/analytics.js` 1. Hub: copy `assets/analytics.config.example.js` → `assets/analytics.config.js` and set `measurementId: 'G-…'`. 2. Crash console: in `config/config.php` set `analytics.enabled` and `analytics.measurement_id`. Tracks hub page views, nav card clicks, and crash-console views (`console_view` by `data-view`).