2026-11-01 05:57:38 +01:00
u
2026-10-31 21:53:21 +01:00
u
2026-08-06 00:19:21 +02:00
u
2026-10-13 22:05:30 +02:00
u
2026-09-23 17:24:33 +02:00
u
2026-10-04 23:38:46 +02:00
u
2026-10-05 15:56:41 +02:00
u
2026-10-04 08:18:36 +02:00
u
2026-11-01 05:57:38 +01:00
u
2026-10-18 03:14:15 +02:00
u
2026-10-07 21:28:26 +02:00
u
2026-10-13 22:05:30 +02:00
u
2026-10-29 17:32:39 +01:00
u
2026-10-29 17:32:39 +01:00
u
2026-10-31 21:45:02 +01:00
u
2026-10-29 17:32:39 +01:00
u
2026-10-18 15:35:58 +02:00
2026-09-22 07:20:31 +02:00
u
2026-11-01 04:33:15 +01:00
u
2026-11-01 04:33:15 +01:00
u
2026-10-13 17:19:33 +02:00
u
2026-09-16 14:54:55 +02:00
u
2026-10-17 01:58:30 +02:00

Dashfront

Vite + React web client for Dashback. Auth uses Google Sign-In and a cookie session on the Dashback API.

Stack

  • Vite 8 (type: module)
  • React 19 (function components only)
  • MUI 9 (@mui/material, @mui/icons-material, Emotion)
  • notistack (toast notifications)
  • Google Identity Services + Dashback cookie auth

Getting started

npm install
npm run dev

Open http://localhost:4209. The dev server proxies /api to Dashback at http://localhost:4208 and uses Vite HMR for fast reloads.

To test the full PWA precache (production build + preview, no HMR), use npm run dev:pwa instead.

For production deployment with NGINX, see NGINX.md.

Dashback must be running and your Google account must be authorized on the backend.

Shared GUI library (dashgui)

Reusable custom GUI class components live in the dashgui package (../dashgui), installed here as a file: dependency (npm workspace symlink) so source imports are reflected instantly.

  • dashgui/panels — PanelTile, PanelTileGrid, EditablePanelTile, layout helpers
  • dashgui/lists — RecordList, the generic presentational list used by the Lieferungen / Angebote / Bestellungen / Kunden list pages
  • dashgui/tiles — base Tile (extended by src/components/tiles/*)
  • dashgui/SingleLineTextEdit, dashgui/ElevatedPill

See ../dashgui/README.md for details and the dev/mock-page harness used for future test cases.

Auth flow

  1. On boot the app calls GET /api/auth/me with credentials: 'include'.
    • 200 — { user, googleClientId } (valid session)
    • 401 / 403 — { error, googleClientId } (no session or no longer authorized)
  2. The login page uses googleClientId from that response to obtain a Google ID token and posts it to POST /api/auth/login as { idToken }.
  3. Dashback sets an HTTP-only token cookie; all later API calls send it automatically.
  4. Sign out calls POST /api/auth/logout.

The Vite dev proxy (/api → Dashback) satisfies the same-origin cookie requirement without needing HTTPS on the frontend dev server.

Architecture & State Management

  • src/automats/* — reactive state containers powered by react-automat (no React Context, hooks, or HOCs).
  • automat-graph.svg / automat-graph.dot — interactive visual topology of all 32 Automats across 12 domain clusters and 60 dataflow relationships.
  • npm run automat-graph — regenerates the Automat Graph SVG and DOT files using Graphviz Wasm.
  • src/api/index.js — all backend communication (credentials: 'include').
  • src/auth/googleSignIn.js — Google Identity Services helper.
  • src/auth/AuthProvider.jsx — session state + login/logout.
  • src/auth/useAuth.js — auth context hook.
  • src/components/* — components reading synchronously from automats and subscribing via fine-grained selectors.
Description
No description provided
Readme 47 MiB
Languages
JavaScript 99.6%
HTML 0.2%
CSS 0.1%