Files
joulenap/frontend
Catubba caa1b5ef57 chore(release): 1.0.0
Bump the backend package, the Python project metadata, the frontend package
and the bug-report template's version placeholder from 0.9.0 to 1.0.0. The
docs, the changelog and SECURITY.md have said 1.0.0 since M14; these are the
strings the footer and /health actually read.

The changelog's token-replacement entry also gains the second half of that
fix: a wizard pointed at a host that is already registered is now refused at
the connection step, which was the remaining way to reach the replacement by
accident.
2026-08-05 16:20:41 +02:00
..
2026-07-02 20:46:57 +02:00
2026-08-05 16:20:41 +02:00
2026-07-02 20:46:57 +02:00
2026-07-02 20:46:57 +02:00

Joulenap frontend

React + TypeScript + Vite SPA for Joulenap, recreated from the prototypes in design/joulenap-remix/ and wired to the backend REST API.

Develop

cd frontend
npm install
npm run dev        # Vite dev server on :5173, proxies /api -> http://localhost:8080

Run the backend (cd backend && joulenap or uvicorn app.main:create_app --factory) alongside it so the proxied API is available.

Build

npm run build      # type-checks (tsc --noEmit) then emits frontend/dist

The FastAPI backend serves frontend/dist as static files, so a production image just needs the built output present. dist/ is git-ignored.

Layout

  • src/api/ — typed client + response types for /api/*
  • src/auth/, src/config/ — auth + config React contexts
  • src/pages/Login, Dashboard (+ dashboard/ panels), Settings (+ settings/ panels incl. the setup wizard)
  • src/shell/ — header + authenticated app shell
  • src/components/, src/hooks/, src/utils/ — shared widgets/helpers
  • src/i18n/react-i18next setup; en.json is the base language, it.json the translation

i18n

English is the source language. The active language follows app.language from the backend config (the Localization settings panel changes it). Add a key to en.json first, then mirror it in it.json.