# Spezifikation Zeiterfassungs-Tool ## Technische Rahmenbedingungen - **Backend:** Go mit fp-go - **Frontend:** Next.js mit fp-ts - **Datenbank:** PostgreSQL mit ORM (z.B. GORM oder Bun) - **API-Dokumentation:** Swagger/OpenAPI - **PDF-Generierung:** serverseitig ## Multi-Tenancy & Rollen - **Mandantenfähig**: Separierung aller Daten nach Unternehmen (Company) - **Rollen:** - Admin (systemweit) - Company (Unternehmensebene) - Manager - Auditor (Read-only Zugriff auf Reports) - User (regulärer Mitarbeiter) ## Datenmodelle (DB Entities) - **Company** - Kunden (Clients) - Projekte (Projects) - Tätigkeiten (Activities) - **User** - Stundenrate - Rolle - **Projekt** - Kundenreferenz - Beschreibung - **Tätigkeit** - Name - Verrechnungspreis - **Buchung** - Zeit (Start, Ende, Dauer) - User - Projekt - Tätigkeit - Beschreibung (optional) - Abrechenbarkeit (0-100%) - Verrechnungspreis (berechnet) ## Funktionale Anforderungen ### Version 1 - Verwaltung von Kunden, Projekten, Tätigkeiten - Mitarbeiterverwaltung mit Stundensatz - Erstellung von Zeitbuchungen mit optionaler Beschreibung und wählbarer Abrechenbarkeit - Automatische Übernahme der Parameter (Projekt, Tätigkeit, Beschreibung) der letzten Buchung - Live-Tracker mit Start-/Stopp-Funktion auf Dashboard - Reporting-Funktion - Aggregation der Buchungen nach Zeitraum, Projekt, Kunde, Mitarbeiter - Export als PDF - Grafische Dashboards (Kreis-/Balkendiagramme, Zeitverläufe) - Persönliches Dashboard - Liste vergangener Buchungen - Schnellstart-Tracker ### Version 2 (Ausblick) - Projektverwaltung mit Sprints und Task-Items - Kanban-Board zur Verwaltung von Tasks - Zuordnung von Tasks direkt bei Buchungsauswahl ## API-Endpunkte - Authentifizierung & Autorisierung (JWT o.ä.) - CRUD-Operationen für alle Entities - Endpunkte für Zeiterfassung, Buchungen starten/stoppen - Reporting-Endpoints mit Filterparametern (Zeitraum, Kunde, Projekt, Mitarbeiter) ## Frontend-Komponenten - **Dashboard** - Tracker-Komponente - Liste letzter Buchungen - Schnelleinstieg für häufige Aktionen - **Buchungs-Management** - Buchungsformular - Historie - **Verwaltungsseiten** - Kunden, Projekte, Tätigkeiten, User - **Reporting-Ansicht** - Interaktive Filtermöglichkeiten - Grafische Darstellung (Charts) - PDF-Export ## Technische Umsetzung - Modularer Aufbau (separate Pakete für Entities, Services, Controllers) - DDD-Prinzipien für saubere Trennung von Geschäftslogik - APIs sauber nach Verantwortlichkeiten getrennt (RESTful Design) - Swagger zur API-Dokumentation (generiert aus Annotationen) - Strukturierter und übersichtlicher Code (kleine Dateien, Single Responsibility) Diese Struktur ermöglicht eine überschaubare Implementierung mit optimaler Unterstützung durch LLMs.