# alertstore

## Web frontend

Vite + lit-html (light DOM) + ECharts + a hand-written token system in `web/style.css`; styles hand-ported from shadcn/ui's shapes onto our own tokens. Types generated from the Go swaggo contract. Only runtime deps: `lit`, `echarts`. Do not introduce React, Tailwind, the shadcn/basecoat packages, any component library, or webfonts.

UI conventions:

- Prefer absolute time unless relative is the intent.
- No colored left border/stripe accents.
- Never pure black / pure white, in light or dark mode.
- Links must look clickable.
- UI copy uses the user's language; never leak backend field names.
- ECharts for charts.
- UI-only aggregation goes through a BFF path, not the stable contract.

## Deployment

One Go binary serves the API and the web UI. Authentication is not done in alertstore: the API is authenticated by the DevOps gateway (Kong `devops-auth`), and the web UI by Auth0. The only internet-facing endpoint is the Alertmanager ingestion webhook, which is unauthenticated at the gateway and self-guards with a bearer token. Internal deps (oncall, directory, devops) are called over the private cluster network with no credential.
