# 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