- Convert codexInfo.md to CLAUDE.md as the central project context. - Rewrite GUI/style.md with a modernized, file-first direction (layered surfaces, refined typography, motion budget, ambient gradients). - Refresh global tokens in global.css, page-layouts.css and surface-patterns.css: extended palette (primary 050/800, surface elevated, border subtle), four-tier shadow system, dark-mode parity, new utilities (hoard-chip, hoard-icon-tile, hoard-spotlight, hoard-section-head, hoard-divider-soft, status pulse dot). - Rebuild Layout.vue: premium app shell with brand halo, animated active-indicator, account pill with avatar/initials, drawer footer card, refined banner stack and footer. - Redesign every route while preserving routing and API contracts: Home, Login, ChangePassword, Dashboard, AdminUsers, AdminUserDetail, Impressum, 404, Forbidden. Adds search/admin stats, password hint list, dashboard greeting with avatar, modernized hero/spotlight treatments and consistent mobile layouts (safe-areas, 44/48px tap targets). - Drop @fontsource/roboto import in vuetify.ts and load Inter via the rsms.me CSS in index.html; update Vuetify defaults and palette to match the new tokens.
7.7 KiB
CLAUDE.md – Projektkontext für Hoard
Diese Datei gibt Claude (und allen weiteren Beitragenden) den nötigen Kontext, um an Hoard sinnvoll und konsistent weiterzubauen. Sie ersetzt die alte codexInfo.md.
Projektidee
Hoard ist eine self-hosted Web-App, die sich funktional zwischen Google Drive, Notion und Obsidian einordnet. Der Schwerpunkt liegt auf einer Google-Drive-artigen Oberfläche mit Dateien und Ordnern. Markdown-Dateien sollen direkt im Browser bearbeitet werden, andere Dateien gespeichert und – wenn möglich – als Vorschau angezeigt werden.
Ziel des Projekts
Hoard ist ein bewusst einfach gehaltenes Solo-Projekt neben einer Ausbildung. Es soll mehrere Benutzer unterstützen, dabei aber technisch und funktional schlank bleiben. Wichtig ist ein realistisches MVP, das sauber läuft und später erweitert werden kann.
Tech-Stack
- Frontend: Vue 3 + TypeScript + Vite + Vuetify 4 + Pinia + Vue Router
- Markdown-Editor: md-editor-v3 (geplant)
- Backend: ASP.NET Core (C#)
- Datenbank: PostgreSQL (EF Core, Migrationen beim Start)
- Identity: ASP.NET Identity, Cookie-basierte Auth, Rollenmodell (
admin) - Dateispeicher: MinIO als S3-kompatibler Storage (geplant)
- Deployment: Self-hosted; Frontend-Build geht direkt nach
API/wwwroot
Kernfunktionen für das MVP
- Login mit bestehenden Accounts (kein öffentliches Registrieren)
- Initialer Admin-Account, weitere Benutzer manuell durch Admins
- Dateien und Ordner anlegen, hochladen, öffnen, navigieren
- Dateiliste + Vorschau als Hauptansicht
- Markdown direkt im Browser bearbeiten
- PDFs und Bilder als Vorschau
- Andere Dateien speichern, herunterladen oder öffnen
Was bewusst nicht im MVP ist
- Keine offene Registrierung
- Kein Teilen oder Freigeben
- Keine Suche, keine Versionierung
- Keine Echtzeit-Zusammenarbeit
- Keine Desktop-/Mobile-Apps
- Keine komplexe Rechteverwaltung
- Kein JWT/OAuth/SSO
Sprachregel für UI-Texte
- Umlaute ausdrücklich erwünscht (
ä,ö,ü,Ä,Ö,Ü). - Keine Umschreibungen mit
ae,oe,uein sichtbaren deutschen Texten.
Design-Quelle
- Maßgeblich ist
GUI/style.md. Dort liegen Farbpalette, Typografie, Spacing, Radien, Schatten, Komponentenregeln, Motion- und Responsive-Standards. - Die App ist light-first, dateiorientiert und nutzt Grün als kontrollierte Markenfarbe statt Dauerakzent.
- Der modernisierte Look (siehe
GUI/style.md→ „Modernisierungs-Direktive") darf hochwertiger und visuell präziser wirken, bleibt aber ruhig, klar und produktiv – kein Gaming-, Glassmorphism- oder Marketing-Look.
Globale CSS-Basis
GUI/src/global.csshält alle Design-Tokens (:root/[data-theme='dark']), Basis-Resets, Vuetify-Anpassungen und wiederverwendbare Patterns (hoard-panel,hoard-toolbar,hoard-list-row,hoard-empty-state,hoard-status, …).GUI/src/styles/global/page-layouts.cssenthält Page-Shells (hoard-page,hoard-page--centered,hoard-shell-grid).GUI/src/styles/global/surface-patterns.cssenthält wiederkehrende Surface-/Inhaltsbausteine (hoard-kicker,hoard-action-row,hoard-panel-gradient,hoard-chip,hoard-spotlight…).- Alle drei werden in
GUI/src/main.tseinmalig importiert. - Neue Layouts/Patterns immer zuerst dort ergänzen, nicht in
scoped-Styles duplizieren.
Anleitung: CSS-Patterns verwenden
- Neue Seiten standardmäßig mit
hoard-pageaufbauen; für zentrierte Vollhöhen-Ansichten zusätzlichhoard-page--centered. - Karten-/Shell-Container als
hoard-shell-grid hoard-panelverwenden; Breite/Abstände pro Seite über CSS-Variablen setzen (--hoard-shell-width,--hoard-shell-gap,--hoard-shell-padding). - Wiederkehrende Headlines/Kicker mit
hoard-kicker(+ ggf.--wide/--xs). - Aktionszeilen mit
hoard-action-rowbauen statt eigene Flex-Definitionen pro Seite. - Gradient-Flächen über
hoard-panel-gradient+ Variablen steuern. - Lokales
scopedCSS nur für wirklich seitenspezifische Sonderfälle.
Aktueller Stand (Identity-Branch)
GUI/src/Layout.vueist die zentrale App-Shell: Topbar, Sidebar, Footer, responsiver Drawer, globaler Banner-Stack.- Light-/Dark-Mode global integriert (Toggle in der Topbar, Persistenz in
localStorage, Theme-Tokens in CSS und Vuetify). - Öffentliche Kernseiten im Hoard-Stil:
Home.vue(Landing),Login.vue,404NotFound.vue,Impressum.vue,Forbidden.vue. - Geschützter Bereich:
Dashboard.vue,ChangePassword.vue,AdminUsers.vue,AdminUserDetail.vue. - Sidebar berücksichtigt Auth-/Rollen-Status; Admin-Bereich ist visuell abgesetzt.
- Mobile Touch-Optimierung (Safe-Area, 44/48px Mindestgrößen, Bottom-Drawer) ist aktiv.
- Backend-API: Health (
GET /api/health), Auth (POST /auth/login,POST /auth/logout,GET /auth/me,POST /auth/password), Admin-User (GET /auth/user,GET /auth/user/{id}). - Swagger nur in Development (
/swagger). - Frontend-Build (
npm run buildinGUI) schreibt nachAPI/wwwroot; das Backend liefert SPA + statische Assets. - PostgreSQL via
ConnectionStrings:Postgres, EF Core, automatische Migrationen beim Start. - ASP.NET Identity mit
AppUser(Guid-Key,IsActive,MustChangePassword,CreatedAt,UpdatedAt); Admin-Rechte über Rolleadmin. IdentitySeedServicelegt nach Migrationen dieadmin-Rolle an und sichert einen initialen Admin-Account.- Lokale Entwicklung:
API/Dev/docker-compose.ymlmit PostgreSQL (localhost:5432) und pgAdmin (localhost:5050). - API lädt optional
API/appsettings.custom.json(in.gitignore). - Strukturierte Console-/HTTP-Logs aktiv.
- Frontend-Auth: Login →
/auth/login, Dashboard auf/, Router-Guards prüfen Auth/Rollen, erzwingen Passwortwechsel beimustChangePassword=true. - Public Landingpage liegt auf
/welcome; 404/Impressum referenzieren entsprechend. - Topbar zeigt User-Menü (Dashboard, Passwort ändern, Abmelden).
- Globaler Banner-Stack am unteren Rand (stapelbar, manuell schließbar, opake Hintergründe, kontrolliertes
z-index).
Konventionen für Beitragende (auch Claude)
- Erst Patterns, dann Custom-CSS: Globale Klassen aus
global.css/page-layouts.css/surface-patterns.cssnutzen, bevor neue Stile lokal entstehen. - Tokens statt Hex: Farben/Spacings/Radien immer aus CSS-Variablen ziehen, damit Light-/Dark-Mode automatisch funktionieren.
- Mobile QA Pflicht auf
360x800,390x844,768x1024,1024x768und>=1280. Light- und Dark-Mode jeweils mindestens auf Desktop und Mobile prüfen. - Animationen: kurz (160–280 ms),
prefers-reduced-motionimmer respektieren. - API-Kontrakte stabil halten: Frontend-Refactorings dürfen Backend-Endpunkte oder Auth-Flow nicht brechen.
Befehle
# Frontend dev
cd GUI && npm install && npm run dev
# Frontend build (geht nach API/wwwroot)
cd GUI && npm run build
# Type-Check ohne Build
cd GUI && npm run type-check
# Lokale Datenbank
cd API/Dev && docker compose up -d
Projektbeschreibung für eine KI
Hoard ist eine self-hosted Web-App für mehrere Benutzer, die eine Google-Drive-artige Dateiverwaltung mit einfacher Markdown-Bearbeitung kombiniert. Benutzer navigieren durch Ordner und Dateien, sehen Bilder und PDFs in einer Vorschau und bearbeiten Markdown direkt im Browser. Es gibt keine offene Registrierung, kein Teilen, keine Suche und keine Versionierung. Benutzerkonten werden manuell angelegt, beginnend mit einem initialen Admin-Account. Tech-Stack: Vue 3 (TypeScript, Vuetify, Pinia) im Frontend, ASP.NET Core mit C# im Backend, PostgreSQL für Metadaten, MinIO als S3-kompatibler Dateispeicher, Cookie-basierte Authentifizierung. Design: light-first, dateiorientiert, ruhig, mit kontrolliertem Grün als Markenfarbe – modernisiert und visuell präzise, aber bewusst nicht spektakulär.