The public frontend for the Ticker project. It presents a single ticker as a live page, updating as new messages arrive.
It is a static single-page application and holds no data of its own; everything lives in the ticker API.
https://systemli.github.io/ticker/
Installation, configuration, deployment and troubleshooting for the whole stack are documented centrally:
- Installation — running the full stack with Docker
- Configuration
- Troubleshooting
The published image is systemli/ticker-frontend.
Requirements: Node 24 (see .nvmrc) and a running ticker
API.
nvm use
npm install
npm run dev # http://localhost:4000Point it at your API with a .env file. The URL must include the /v1 suffix:
TICKER_API_URL=http://localhost:8080/v1Without this the application falls back to a relative /api, which only works when something is
proxying that path — as the Docker image expects. Restart the dev server after changing .env.
The ticker must know this address. The API works out which ticker to serve from the browser's
Originheader, sohttp://localhost:4000has to be registered under the ticker's websites in the admin interface. Otherwise the page only ever shows "The ticker is currently inactive".
npm test # vitest, watch mode
npm run coverage
npm run lint
npm run build
npm run previewNote the service worker is only registered in production builds, so PWA behaviour does not appear
under npm run dev.
See AGENTS.md for architecture and conventions, and the development guide for working across the three repositories.
Strings live in the locales folder. To add a language, update:
- i18n.ts to register it
- MessageTime.tsx for
dayjsrelative times
Use the t('stringKey') notation for new strings and update all locales.
GPL-3.0. See LICENSE.



