# Zeiterfassungstool Spezifikation ## 1. Überblick Dieses Dokument spezifiziert ein modernes Zeiterfassungstool mit Multi-Tenant-Architektur, implementiert mit Go (Backend) und NextJS (Frontend). Das System unterstützt die Erfassung von Arbeitszeiten, Projektmanagement und Reporting-Funktionen. ## 2. Technologie-Stack ### Backend - **Programmiersprache**: Go - **Architektur**: Funktional-Programmierung (FPGO) - **Datenbank**: PostgreSQL mit ORM - **API-Dokumentation**: Swagger ### Frontend - **Framework**: NextJS - **Architektur**: Funktional-Programmierung (FPTS - Functional Programming TypeScript) - **UI-Komponenten**: React mit Tailwind CSS ## 3. Multi-Tenant-Architektur Das System unterstützt mehrere Unternehmen (Companies) mit eigenen Benutzern und Daten. ### Rollen und Berechtigungen - **Admin**: Systemweiter Administrator mit vollständigem Zugriff - **Company**: Unternehmensadministrator - **Manager**: Projektmanager mit erweiterten Rechten - **User**: Standardbenutzer (Mitarbeiter) - **Auditor**: Nur-Lese-Zugriff für Berichte und Audits ## 4. Datenbankmodell ### Hauptentitäten #### Tenant-Struktur - **Company**: Unternehmen - **User**: Benutzer mit Rollen #### Zeiterfassung - **Kunde**: Kunde einer Company - **Projekt**: Projekte für Kunden - **Tätigkeit**: Arbeitstätigkeiten - **Buchung**: Zeiterfassung - **Stundensatz**: Pro Mitarbeiter - **Verrechnungspreis**: Pro Tätigkeit #### Projektmanagement (Version 2) - **Sprint**: Iterationen innerhalb eines Projekts - **Task**: Aufgaben innerhalb eines Sprints - **KanbanBoard**: Visualisierung von Tasks ## 5. Backend-Architektur ### Modularisierung Das Backend wird in kleine, funktionale Module aufgeteilt, um die Kontextgröße für LLM-basierte Implementierung zu optimieren. #### Core-Module - **auth**: Authentifizierung und Autorisierung - **tenant**: Multi-Tenant-Verwaltung - **user**: Benutzerverwaltung - **timetracking**: Zeiterfassung - **customer**: Kundenverwaltung - **project**: Projektverwaltung - **billing**: Abrechnung und Verrechnungspreise - **reporting**: Report-Generierung ### API-Design - RESTful API mit Swagger-Dokumentation - JWT-basierte Authentifizierung - Tenant-Isolation durch Middleware ## 6. Frontend-Architektur ### Komponentenstruktur - Modulare React-Komponenten - State Management mit Context API oder Redux - Responsive Design ### Hauptseiten - Dashboard (Übersicht) - Zeiterfassung mit Tracker - Kunden- und Projektverwaltung - Reporting und Auswertungen - Administrationsoberfläche ## 7. Funktionsumfang (Version 1) ### Unternehmensverwaltung - Anlegen und Verwalten von Companies (Multi-Tenant) - Benutzerverwaltung mit Rollenzuweisung ### Stammdatenverwaltung - Kunden anlegen und verwalten - Projekte anlegen und verwalten - Tätigkeiten definieren mit Verrechnungspreisen - Mitarbeiter-Stundensätze hinterlegen ### Zeiterfassung - Zeiten buchen mit Angaben zu: - Zeitraum (Start/Ende oder Dauer) - Projekt (Wohin) - Tätigkeit (Wofür) - Benutzer (Wer) - Beschreibung (optional) - Verrechnungspreis - Abrechenbarkeit (0-100% Slider) - Zeittracker mit Start/Stop-Funktion - Übernahme der letzten Buchungsparameter ### Reporting - Kumulation von Buchungen nach: - Projekten - Mitarbeitern - Kunden - Zeiträumen - PDF-Export von Reports - Dashboards mit Visualisierungen ## 8. Funktionsumfang (Version 2) ### Projektmanagement - Sprints innerhalb von Projekten - Task-Items in Sprints - Kanban-Boards für visuelle Darstellung - Zuweisung von Tasks zu Benutzern - Direkte Verknüpfung von Tasks mit Zeitbuchungen ## 9. Implementierungsplan ### Phase 1: Grundlegende Infrastruktur - Aufsetzen der Go-Backend-Struktur - Implementierung der Datenbank mit ORM - NextJS-Frontend-Grundgerüst - Authentifizierung und Autorisierung ### Phase 2: Version 1 Features - Stammdatenverwaltung - Zeiterfassung - Reporting - Dashboard ### Phase 3: Version 2 Features - Projektmanagement - Kanban-Boards - Task-Tracking