# 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`).
