docu:: fixes

This commit is contained in:
Jean Jacques Avril 2025-01-04 19:21:37 +00:00
parent 9a6c66adfc
commit 8ebcfeca0b
No known key found for this signature in database

View File

@ -1,18 +1,16 @@
# ⏰ ActaTempus - Time Tracking and Management System # ⏰ ActaTempus: Time Tracking and Management System
## 🌟 Overview ## 🌟 Overview
**ActaTempus** is a modern, comprehensive web application designed to efficiently manage and track work hours. It features: **ActaTempus** is a sophisticated web application designed for efficient work hour management and tracking. Featuring a dual backend developed in **Go** and **Dart** alongside a modern **Next.js frontend**, ActaTempus emphasizes functional programming principles and streamlined user experience.
- A **backend** developed in both Go and Dart, following **functional programming principles**.
- An interactive **React frontend** for an intuitive user experience.
--- ---
## 🚀 Features (Long-Term Goals) ## 🚀 Features (Long-Term Goals)
**User Management**: Registration, login, and profile updates **User Management**: Registration, login, profile updates
**Time Tracking**: Start/stop tracking, manual entries, and break management **Time Tracking**: Start/stop tracking, manual entries, and break management
**Project Management**: Create and manage projects **Project Management**: Create and manage projects, tasks, and time entries
**Reporting**: Generate daily/weekly reports and export as PDF/CSV **Reporting**: Generate daily/weekly reports and export as PDF/CSV
**Role-Based Access Control (RBAC)**: Fine-grained permission system **Role-Based Access Control (RBAC)**: Fine-grained permission system
@ -20,20 +18,20 @@
## 🏗️ Architecture ## 🏗️ Architecture
This system follows **Domain-Driven Design (DDD)** and **Clean Architecture** principles to ensure a modular, maintainable, and scalable codebase. ActaTempus adheres to **Domain-Driven Design (DDD)** and **Clean Architecture** principles for a scalable and maintainable codebase.
It is structured into **four primary layers**: The system is divided into **four primary layers**:
1**Domain Layer**: 1**Domain Layer**:
- Contains contracts and interface definitions. - Contracts, definitions, and interfaces only.
2**Infrastructure Layer**: 2**Infrastructure Layer**:
- Implements external sources like databases and configurations. - Database and external service integrations (e.g., Prisma with PostgreSQL).
3**Application Layer**: 3**Application Layer**:
- Implements business logic and server responses. - Business logic, services, and response handling.
4**Interface Layer**: 4**Interface Layer**:
- Defines the external-facing API. - External communication interfaces.
![Architecture Diagram](docs/media/architecture.png) ![Architecture Diagram](docs/media/architecture.png)
@ -42,25 +40,25 @@ It is structured into **four primary layers**:
## 🛠️ Technology Stack ## 🛠️ Technology Stack
### 🎨 Frontend: ### 🎨 Frontend:
- **React**: User Interface - **Next.js**: React framework for SSR and SPA capabilities
- **Axios/Fetch API**: HTTP requests - **Deno**: Lightweight, secure runtime for development tooling
- **WebSockets**: Real-time updates - **Dependencies**:
- **Styled Components**: CSS-in-JS - `fp-ts`: Functional programming in TypeScript
- `@reactivex/rxjs`: Reactive programming
- `clsx`: Conditional class handling
- `lucide-react`: Icon library
- `next-intl`: Internationalization
### ⚙️ Backend: ### ⚙️ Backend:
#### Go: #### Go:
- **GORM**: ORM for PostgreSQL - **Prisma-Go**: PostgreSQL ORM integration with Prisma
- **go-redis**: Redis integration
- **gorilla/websocket** & **mux**: WebSocket & HTTP routing
#### Dart: #### Dart:
- **drift/aqueduct**: ORM for database access - **Prisma-Dart**: PostgreSQL ORM adapter for Dart
- **redis_client**: Redis integration
- **shelf_web_socket**: WebSocket handling
### 📦 Databases: ### 📦 Database:
- **PostgreSQL**: Main data storage - **PostgreSQL**: Primary database
- **Redis**: Caching and real-time updates - **Prisma**: Shared ORM schema across Dart and Go backends
--- ---
@ -69,8 +67,8 @@ It is structured into **four primary layers**:
``` ```
backend-go/ # Go backend implementation backend-go/ # Go backend implementation
backend-dart/ # Dart backend implementation backend-dart/ # Dart backend implementation
frontend-react/ # React frontend frontend-next/ # Next.js frontend
docs/ # Documentation and design diagrams docs/ # Documentation, specs, and design diagrams
``` ```
--- ---
@ -79,12 +77,12 @@ docs/ # Documentation and design diagrams
### Prerequisites ### Prerequisites
💡 All dependencies are pre-configured in the **devcontainer**. If you're setting up manually, ensure you have: All dependencies are bundled with the **devcontainer**. For manual setup, ensure you have:
- [Docker](https://www.docker.com/) - [Docker](https://www.docker.com/)
- Node.js (Frontend) - Node.js
- Go (Go backend) - Go
- Dart (Dart backend) - Dart
- PostgreSQL and Redis - PostgreSQL
### 🔧 Installation ### 🔧 Installation
@ -95,20 +93,23 @@ docs/ # Documentation and design diagrams
``` ```
2. **Use the devcontainer**: 2. **Use the devcontainer**:
Ensure the repository is on a **Unix-native file system** (e.g., WSL on Windows). Launch with Visual Studio Code: Place the repository on a **Unix-native file system**.
Otherwise you will experience severe performance issues.
Launch it with Visual Studio Code:
```bash ```bash
code . code .
``` ```
--- ---
## 🖥️ Running the Software ## 🖥️ Running ActaTempus
### Frontend ### Frontend
```bash ```bash
cd frontend-react cd frontend-next
deno run dev # Starts UI on port 3000 # Install dependencies (if not using devcontainer)
deno task dev # Starts the UI on port 3000
``` ```
### Backend (Go) ### Backend (Go)
@ -129,7 +130,7 @@ dart run bin/backend_dart.dart # Starts on port 8080
## 🗄️ Database Management ## 🗄️ Database Management
We use **Prisma ORM** for consistent database schema management across both backends. ActaTempus uses **Prisma ORM** for database schema management and code generation across both backends.
### Deploy the Schema ### Deploy the Schema
@ -153,9 +154,9 @@ bunx prisma generate
## 🔧 Known Issues ## 🔧 Known Issues
### 🐛 Browser Extensions Cause Hydration Issues ### 🐛 Browser Extensions and Hydration
Certain extensions (e.g., Grammarly) inject DOM attributes that cause SSR mismatches: Some browser extensions (e.g., Grammarly) inject DOM attributes that cause SSR mismatches:
- Example: `<data-lt-installed="true">` - Example: `<data-lt-installed="true">`
- Disable such extensions if issues occur. - Disable such extensions if issues occur.
@ -167,18 +168,18 @@ Certain extensions (e.g., Grammarly) inject DOM attributes that cause SSR mismat
### Phase 1: **Initialize** ### Phase 1: **Initialize**
- ✅ Define specifications - ✅ Define specifications
- ✅ Initialize repository - ✅ Set up repository
### Phase 2: **Setup** ### Phase 2: **Setup**
- ✅ Frontend (NextJS, Deno) - ✅ Frontend (Next.js, Deno)
- ✅ Backends (Dart & Go) - ✅ Backends (Dart & Go)
- ✅ Dev-container - ✅ Devcontainer
### Phase 3: **MVP Development** ### Phase 3: **MVP Development**
- Build foundational backends in Go & Dart. - Build foundational backends in Go & Dart
- Implement: - Implement:
- ✅ Domain layer (Entities, Repositories) - ✅ Domain layer (Entities, Repositories)
- ✅ Business logic (Services, DTOs, JWT Authentication) - ✅ Application logic (Services, DTOs, JWT Authentication)
- ✅ Basic authorization - ✅ Basic authorization
### Phase 4: **Web UI** ### Phase 4: **Web UI**
@ -187,11 +188,6 @@ Certain extensions (e.g., Grammarly) inject DOM attributes that cause SSR mismat
- Project management - Project management
- Reporting - Reporting
### Future Iterations
- 📊 Report exports (Excel, PDF)
- 💳 Billing integration
- 🏢 Multi-tenant support
--- ---
## 🌐 Resources ## 🌐 Resources