# 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 Earth (feature/3d_earth):** Canvas orthographic globe baked from the same SVG layers as the static hub (`globe` + `continents-mercator-globe` + `gridOverlay`). Idle spin is slow (~0.035 rad/s); drag horizontally to rotate. Disable with `?globe3d=0`. Deploy `assets/hub-globe.js` with `index.html`. **3D globe background** (default): WebGL sphere with Mercator continents, meridian/equator grid, slow Y-axis spin; drag horizontally to spin (speed follows pointer). Disable: `?globe3d=0` (flat SVG layers). Default yaw: `0.42` rad (`?globeYawDeg=24` to override). Requires deploying `assets/hub-globe.js` + `hub-logo-layers.css` + updated `index.html` (see `DEPLOY.md`). **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`).