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
andgorilla/mux
for WebSocket and HTTP handling.
- GORM for ORM,
- Backend (Dart):
drift
oraqueduct
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
- Clone the repository:
git clone https://inf-git.th-rosenheim.de/studavrije7683/ws24-kp-avril.git cd ws24-kp-avril
Requirements
- PNPM: npm install -g pnpm
Description
Languages
Dart
85.7%
Go
13.8%
Dockerfile
0.3%
Shell
0.2%