2.5 KiB
2.5 KiB
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
Run Software
You can start developing and hacking by starting the dev container. Besides that you can also install the dev environment on your host system. Make sure versions do match.
Frontend
cd frontend-react
deno install # devcontainer does this for you
deno run dev # starts web ui on port 3000
Go-Backend
cd backend-go
go run cmd/actatempus/main.go # Backend on port 8080
Dart-Backend
cd backend-dart
dart run bin/backend_dart.dart # Backend on port 8080