## Context Juno has analytics config CRUD on the gateway. The dashboard has **no analytics UI**. This ticket is **config only** — event viewing is a separate ticket. ## Relevant API routes (api-gateway) Base: `JUNO_BASE_URL` (local `http://localhost:8888`). Docs: `/docs`. Expect an **API key** (Bearer); environment comes from the key. `@Controller('analytics/config')` | Method | Path | Use | |--------|------|-----| | `POST` | `/analytics/config` | Create config. Body: `serverAnalyticsKey`, `clientAnalyticsKey`. Project from API key / `@ProjectId()`. | | `GET` | `/analytics/config/:projectId` | Get config. **Note:** param is named `projectId` but is passed as config `id` to the DB layer — verify against `/docs` / SDK before wiring. | | `PUT` | `/analytics/config/:projectId` | Update keys | | `DELETE` | `/analytics/config/:projectId` | Delete config | ## What to build Under `/projects/[projectId]`: - Add **Analytics** to the project sidebar (can link here even if events ticket isn’t done) - Page to view / create / update / delete this project’s analytics config (server + client keys, environment implied by key) - Clear empty state when no config exists (“set up analytics”) - Always be explicit about project — don’t silently use the wrong one ([juno#226](https://github.com/GTBitsOfGood/juno/issues/226)) ## Out of scope - Listing / charting click/visit/input/custom events → separate ticket - Logging events from the dash ## Done when - From a project page you can create and manage analytics config - Missing config shows a sane empty state - Wrong-project / auth failures surface clearly - Sidebar entry exists ## Notes - Local: Juno + dash `.env` with `JUNO_API_KEY` - Prefer existing `juno-sdk` helpers if present
Activity
[-][Fall 26] Project analytics page[/-][+][Fall 26] Project analytics config page[/+]Project Analytics Config Page (#93)
rgodha24 commentedon Sep 29, 2026
Closed — shipped in #93 (analytics config page).