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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user