# Time Tracking and Management System ## Overview The Time Tracking and Management System is a comprehensive web application designed to manage and track work hours efficiently. The system showcases a backend developed in both Go and Dart with functional programming principles, and a React frontend to provide an interactive user experience. ## Features - User management: Registration, login, profile updates. - Time tracking: Start/stop time tracking, manual entry, break management. - Project management: Create and manage projects. - Reporting: Generate daily/weekly reports and export as PDF/CSV. - Real-time updates using WebSockets. - Role-based access control (RBAC) with a permission system. ## Architecture The project follows Domain-Driven Design (DDD) and Clean Architecture principles to ensure a modular, maintainable, and scalable codebase. The system is structured into well-defined layers with separation of concerns. ### Technology Stack - **Frontend**: React, Axios/Fetch API, WebSockets, Styled Components. - **Backend (Go)**: - GORM for ORM, `go-redis` for caching. - `gorilla/websocket` and `gorilla/mux` for WebSocket and HTTP handling. - **Backend (Dart)**: - `drift` or `aqueduct` for ORM, `redis_client` for Redis integration. - `shelf_web_socket` for WebSocket handling. - **Databases**: PostgreSQL for primary data storage, Redis for caching and real-time updates. ## Directory Structure - `backend-go/`: Go backend implementation. - `backend-dart/`: Dart backend implementation. - `frontend-react/`: React frontend implementation. - `docs/`: Documentation files, including LaTeX source for specifications and design diagrams. ## Getting Started ### Prerequisites - Node.js (for the React frontend) - Go (for the Go backend) - Dart (for the Dart backend) - PostgreSQL and Redis servers ### Installation 1. **Clone the repository**: ```bash git clone https://inf-git.th-rosenheim.de/studavrije7683/ws24-kp-avril.git cd ws24-kp-avril ``` #### Requirements - PNPM: npm install -g pnpm