feat: add Einnahmen Kategorien management page with CRUD functionality

- Implemented a new route for managing Einnahmen Kategorien.
- Added auto-seeding of default Einnahmen Kategorien if none exist.
- Integrated category usage tracking to prevent deletion of in-use categories.
- Enhanced Einnahmen page to link to the new Kategorien management.
- Updated Prisma schema and seed script to include default categories.
- Added a modal for detailed view of Einnahmen by category and month.
- Refactored existing Einnahmen page to accommodate new category structure.
- Introduced PostCSS configuration for Tailwind CSS support.
- Created a new migration to update existing category labels in the database.
- Added TypeScript configuration for stricter type checking.
- Set up Vite configuration for improved development experience with React Router.
This commit is contained in:
hwinkel
2026-03-24 22:43:09 +01:00
parent 1ec15600b5
commit 9e7c85c2b3
20 changed files with 1759 additions and 172 deletions
+82
View File
@@ -0,0 +1,82 @@
# Annas Rechnungsmanager (CLAUDE onboarding)
## 1. Projektüberblick
Annas Rechnungsmanager ist ein Buchhaltungs- und Rechnungsverwaltungssystem für Steuerberater und Buchhalter mit Mandantenverwaltung. Funktionalitäten:
- Mandantenverwaltung (CRUD, Archiv, Papierkorb)
- Rechnungsverwaltung (Erstellen, PDF-/XML-Export, Zahlung eintragen)
- Kundenverwaltung (Stammdaten pro Mandant)
- Steuerberichte (USt-Voranmeldung, Monats-/Quartalsreport)
- Benutzerverwaltung mit Rollen (ADMIN, USER)
- Audit-Log (Aktionen + IP + Benutzer)
## 2. Tech Stack (Schlüsseltechnologien)
- `Node.js 22+`, `TypeScript`
- REMIX/React Router v7 (Server-/Client-CSS, SSR, file-based routing)
- `Prisma` + `MariaDB` (MySQL-kompatibel)
- Authentifizierung: cookie-basierte Sessions, `bcryptjs`
- UI: `Tailwind CSS v4`, `shadcn/ui`, Remix components
- PDF: `@react-pdf/renderer`
- Deployment: `Docker`, `docker-compose`, optional `k8s`
## 3. Repository-Architektur
- `app/` - Remiх/React-Router-Quellcode
- `components/` - shared UI und Domain-Komponenten (`company`, `invoice`, `layout`, `ui`)
- `lib/` - Datenbank, Logik, Helpers
- `routes/` - Datei-Routing-Endpunkte und APIs
- `session.server.ts` - Session/Auth-Handling
- `types/index.ts` - globale Typen
- `prisma/` - Schema, Migrationen, Seeder
- `scripts/` - CLI-Hilfs-Skripte (`setup-admin`, `reset-password`)
- `docker-compose.yml`, `Dockerfile`, `k8s.yml` - Deployment & Infrastruktur
## 4. Schlüsseldateien
- `app/root.tsx` - Root-Layout und Fehlergrenzen
- `app/entry.server.tsx` - Server-Entry (SSR)
- `app/routes/index.tsx` (`home`, `dashboard`, `login`, `settings`)
- `app/routes/api.*` - REST-API-Endpunkte für CRUD (companies, invoices, etc.)
- `app/lib/prisma.server.ts` - Prisma-Client-Initialisierung
- `app/lib/logger.server.ts`, `rate-limiter.server.ts` - Infrastruktur
- `prisma/schema.prisma` - Datenmodell
- `package.json` und `tsconfig.json` - Build / Lint / Types
## 5. Konventionen & Code-Richtlinien
- FS-basierte React Router v7 Routen
- Server-Endpunkte in `app/routes/api.*` als Remix-Loaders/Actions
- Mutationen und Datenzugriffe in `app/lib` (Prisma, Tax, utils)
- Typescript-sicher und null-safe; bevorzugt `unknown`/`guard`-Checks für externe Daten
- UI-Toolkit: shadcn-Komponenten + Tailwind Utility-Klassen
- Error-Handling mit Remix `redirect`, `json`, `badRequest`
## 6. Häufige Aufgaben und Workflows
- Lokale Entwicklung: `npm install`, `.env` konfigurieren, `npx prisma migrate deploy`, `npm run dev`
- DB initialisieren/seeden: `npm run db:seed`; `npm run db:migrate`
- Admin einrichten: `npm run setup-admin` (oder via Docker-Env `ADMIN_PASSWORD` beim Start)
- Passwort reset: `npm run reset-password`
- Automatische Migration beim Containerstart (Production)
## 7. Spezielle Hinweise für Claude
- Bevorzuge präzise Änderungen in bestehendem Code (letzte Routen und Libs).
- Halte Backward-Kompatibilität: bestehende API-Contracts in `api.*` sollen intakt bleiben.
- Dokumentiere bei komplexen Änderungen Business-Logik (Steuern, Rechnungscodes, UStG §14).
- Vollständige Test: `npm run typecheck`, ggf. `npm run lint` (falls eingerichtet).
## 8. Agent-Persona (optional)
- Rolle: Full-stack Remix / TypeScript-Fachkraft für deutsche Rechnungssoftware
- Fokus: Feature-Implementierung im Domain-Kontext (Invoices, Reports, Clients)
- Toolpräferenzen: `read_file`, `grep_search`, `replace_string_in_file` und `run_in_terminal` für Verifikation
- Vermeide: ungetestete massive Refactorings ohne vorhandenen Abdeckungsstatus
## 9. Weiteres
- `CLAUDE.md` wird als Projekt-spezifisches Onboarding für ChatGPT/Claude-Agenten genutzt.
- Für Dev-Workflows und PR-Beschreibungen, bitte auf `README.md` und `package.json` verweisen.