# 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 — ocean from `hub-logo-fragment-globe.svg`, continents from `hub-logo-continents-mercator-flat.svg` (front hemisphere only), Mercator grid projected in 3D with depth-weighted lines. Slow Y-axis spin (~0.035 rad/s); drag horizontally to rotate. Disable: `?globe3d=0` (static SVG stack). Yaw override: `?globeYawDeg=24`. Deploy `assets/hub-globe.js` with `index.php` (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`).