93 lines
2.5 KiB
Markdown
93 lines
2.5 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
|
|
```
|
|
|
|
#### 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
|
|
|
|
```bash
|
|
cd frontend-react
|
|
deno install # devcontainer does this for you
|
|
deno run dev # starts web ui on port 3000
|
|
```
|
|
|
|
## Go-Backend
|
|
|
|
```bash
|
|
cd backend-go
|
|
go run cmd/actatempus/main.go # Backend on port 8080
|
|
```
|
|
|
|
## Dart-Backend
|
|
|
|
```bash
|
|
cd backend-dart
|
|
dart run bin/backend_dart.dart # Backend on port 8080
|
|
```
|