2024-11-10 00:10:15 +01:00

48 lines
1.9 KiB
Markdown

# 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
```