- TypeScript 51.8%
- Vue 45.9%
- HTML 1.2%
- CSS 1.1%
Expand the README to provide a comprehensive overview of the system, including detailed descriptions of the current feature set, authentication mechanisms, and architectural guidelines for API communication and theming. |
||
|---|---|---|
| .kilo/plans | ||
| .kilocode | ||
| e2e | ||
| public | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| .prettierrc | ||
| .prettierrc.json | ||
| AGENTS.md | ||
| eslint.config.ts | ||
| index.html | ||
| LICENSE.md | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| tsconfig.vitest.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
ew-sys
Internes Bestell- und Lagersystem auf Basis von Vue 3, TypeScript, PrimeVue und Vite.
Überblick
ew-sys ist das Frontend für ein internes Bestell-, Lager- und Benutzerverwaltungssystem. Die Anwendung stellt ein PrimeVue-basiertes UI mit Drawer-Navigation, Login-Flow, Theme-Umschaltung und zentraler API-Kommunikation bereit.
Der aktuelle Stand der Codebasis enthält bereits die Shell, Auth-Integration und mehrere Routen, wobei einige Fachseiten noch Platzhaltercharakter haben.
Aktueller Funktionsumfang
- Login-Seite mit Formularvalidierung und Weiterleitung auf
/nach erfolgreicher Anmeldung - Zentrale Auth-Verwaltung über
src/composables/useApi.ts - Speicherung von
access_token,refresh_tokenund dem Legacy-SchlüsseltokeninlocalStorage - Automatischer Refresh des Access-Tokens bei
401 Unauthorized - Automatische Weiterleitung auf
/loginbei nicht wiederherstellbarer Session - Automatische Weiterleitung auf
/errorbei Netzwerkfehlern zur API - Drawer-Navigation mit rollenabhängigem Menüpunkt
Benutzer - Anzeige von Benutzername und Rolle im Drawer-Footer
- Dark-Mode mit PrimeVue-Theme und projektspezifischer Klasse
.my-app-dark - Dynamischer Logo-Wechsel abhängig vom gespeicherten Theme
- Statische Dashboard-Ansicht mit Beispiel-Daten für offene Bestellungen
- Routen für Material, Bestellungen, Benutzer, Impressum und Datenschutz
Architekturhinweise
API und Auth
Die gesamte API-Kommunikation läuft zentral über src/composables/useApi.ts.
Diese Schicht kapselt:
- Axios-Instanz mit gemeinsamer
baseURL - automatisches Setzen des
Authorization-Headers - zentrales Error-Mapping auf
ApiError - einmaliges Retry bei
401nach Token-Refresh - Redirect auf
/loginoder/error - Login-, Logout- und Refresh-Logik
Wichtig für weitere Entwicklung:
- Für authentifizierte Requests sollte immer
useApi()verwendet werden. - Retry-fähige Request-Bodies sind aktuell auf
string,URLSearchParamsoder leer beschränkt. - Die Session wird über
access_tokenundrefresh_tokenverwaltet; zusätzlich wird der Legacy-Keytokensynchron gehalten.
Theme
Der Dark-Mode hängt nicht an einer generischen dark-Klasse, sondern an .my-app-dark, konfiguriert in src/main.ts.
Die Umschaltung erfolgt in src/components/themeToggler.vue über:
- Schreiben von
themenachlocalStorage - Umschalten der Klasse auf dem
html-Element - Dispatch des Custom-Events
theme-changed
Mehrere Views reagieren explizit auf dieses Event und auf storage-Änderungen.
Routing
Die View-Komponenten liegen in diesem Projekt direkt unter src/router/ und nicht in einem separaten views/-Ordner.
Aktuell definierte Routen:
//login/material/material/artikel/material/hersteller/material/projekte/bestellung/bestellung/rueckfragen/user/error/impressum/datenschutz
Technologie-Stack
- Vue 3 mit Composition API und
<script setup> - TypeScript
- Vite
- PrimeVue mit eigenem Preset
ew-sys - PrimeIcons
- Tailwind CSS
- Vue Router
- Pinia
- Axios
- Vitest für Unit-Tests
- Playwright für E2E-Tests
Entwicklung
Voraussetzungen
- Node.js
^20.19.0 || >=22.12.0 - npm
Installation
npm install
Entwicklungsserver
npm run dev
Relevante Skripte
npm run dev
npm run build
npm run type-check
npm run lint
npm run format
npm run test:unit
npm run test:e2e
Hinweise:
npm run buildführt zuerstvue-tsc --buildund danach den Vite-Build aus.npm run lintläuft mit--fix --cacheund kann Dateien automatisch anpassen.npm run test:unitnutzt Vitest mitjsdom.npm run test:e2enutzt Playwright.
Konfiguration
Für die API wird eine Vite-Umgebungsvariable verwendet:
VITE_API_BASE_URL
Ohne passende Backend-URL funktionieren Login, Benutzerabfrage und Token-Refresh nicht.
Projektstruktur
src/
App.vue
main.ts
assets/
components/
themeToggler.vue
composables/
useApi.ts
presets/
router/
index.ts
HomeView.vue
LoginView.vue
...
__tests__/
Bekannte Grenzen des aktuellen Stands
- Mehrere Fachseiten sind derzeit noch einfache Platzhalter ohne produktive Datenanbindung.
- Das Dashboard zeigt momentan statische Beispieldaten.
- Es gibt nur eine kleine Unit-Testbasis; kritische Flows sollten weiter ausgebaut werden.
- Bildpfade werden aktuell direkt über
/public/...referenziert, passend zum bestehenden Projektmuster.
Lizenz
Dieses Projekt steht unter der GPLv3 Lizenz.