User interface for Sobek - Vehicle registry
Translation pending
Developer toolsTypeScript · JavaScriptGitHub @enturOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Frontend for Sobek — Entur's national vehicle registry (Nasjonalt Materiellregister).
• React 19 + TypeScript
• Vite
• Material UI v7
• GraphQL (graphql-request)
• OIDC authentication (react-oidc-context)
Requires a running Sobek backend (default: http://localhost:37999).
docs/architecture.html is a standalone, interactive diagram of the component architecture — from App.tsx down through the generic wrappers (GenericDataViewPage, GenericDetailsPage) to every feature view. Open it in a browser (it loads D3 from a CDN); click a widget chip to expand its detail.Read the full README ↗Work in progress
Frontend for Sobek — Entur's national vehicle registry (Nasjonalt Materiellregister).
↻ Deployment(s) : dev
💡 Sandbox/mind-maps : entur.github.io/hathor
graphql-request)react-oidc-context)npm install
npm run dev # Dev server on http://localhost:5000
Requires a running Sobek backend (default: http://localhost:37999).
| Command | Description |
|---|---|
npm run dev | Start dev server (uses dev API) |
npm run local | Start dev server (uses local Sobek at 127.0.0.1:37999) |
npm run build | Type-check and build (build/) |
npm run lint | ESLint |
npm run format | Prettier auto-format |
npm run e2e | Playwright tests (mocked GraphQL) |
npm run e2e:local-backend | Playwright tests against a live local Sobek |
docs/architecture.html is a standalone, interactive diagram of the component architecture — from App.tsx down through the generic wrappers (GenericDataViewPage, GenericDetailsPage) to every feature view. Open it in a browser (it loads D3 from a CDN); click a widget chip to expand its detail.
Keeping it in sync: the diagram is driven by docs/architecture-data.js, a generated metafile. When routes or views change in src/App.tsx, regenerate it with npm run gen:arch. See the RUN section of the JSDoc header in scripts/gen-arch-metafile.mjs for details.
Hathor's src/ mixes two organizational styles. Before adding files, know which one you're touching.
Vertical (feature) folders:
auth/ — OIDC bootstrap, ProtectedRoute, login flow, auth utilities.config/ — runtime config fetch (fetchConfig.ts).theme/ — createThemeFromConfig, MUI theme module augmentation (theme-config.d.ts).data/<feature>/ — production domain folders (vehicles/, vehicle-types/, deck-plans/, vehicle-imports/). Each holds the data hook, view config, editor, cells, types, and View + Details components for one entity.graphql/ — GraphQL operations grouped by feature.locales/ — i18next translation files (en/, nb/).Horizontal (file-kind) folders:
components/ — UI components grouped by sub-area (data/, search/, header/, sidebar/, dialogs/, common/, auth/).hooks/ — global hooks shared across features.pages/ — generic infrastructure (GenericDataViewPage, GenericDetailsPage) and the Home page. Entity Views live in data/<feature>/, not here.utils/ — domain-neutral helpers (iconLoaderUtils.ts).contexts/ — top-level React contexts not yet hosted in feature folders (configContext, CustomizationContext, EditingContext, SessionContext).static/ — static assets.Where new files go:
data/<feature>/. Data hook, view config, editor, cells, types, and the View component live together. Add a route in App.tsx.pages/.hooks/. Single-feature hook → next to its caller in data/<feature>/.*Types.ts file → next to its primary consumer. Feature types under data/<feature>/; types that pair with shared infrastructure go with that infra (e.g. pages/viewConfigTypes.ts, graphql/paginationTypes.ts, components/data/dataTableTypes.ts). Don't recreate src/types/..tsx. No JSX → .ts.Some contexts (configContext, CustomizationContext) and a few hooks haven't migrated to their feature folders yet — see OPEN_QUESTIONS.md for tracked design ambiguities.
Hathor is a fork of Inanna, Entur's React data-registry starter. Extending it — new entity views, theming, custom icons — follows the Inanna extend-fork workflow; see DEV_GUIDE.md for the pointer.
Known design ambiguities are tracked in OPEN_QUESTIONS.md.