diff --git a/README.md b/README.md index eda02a1..ba5940d 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ 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 +## Features (longterm Goal) - User management: Registration, login, profile updates. - Time tracking: Start/stop time tracking, manual entry, break management. @@ -21,6 +21,13 @@ and a React frontend to provide an interactive user experience. 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. +The backend logic is divided in four primary layers: +1. Domain-Layer: This layer contains only interfaces and definitions. Objects within can be regarded as contracts. +2. Infrastructure-Layer: This layer contains implementations that rely on external sourcs. (e.g. database, configuration files) +3. Application-Layer: All businesslogic is implemented within the application layer. This Layer defines how the applogic behaves and how the server responds. +4. Interface-Layer: Analogous to the Infrastructure-Layer, this Layer defines the external interface of the application. + +![alt text](docs/media/architecture.png) ### Technology Stack @@ -34,7 +41,7 @@ structured into well-defined layers with separation of concerns. - **Databases**: PostgreSQL for primary data storage, Redis for caching and real-time updates. -## Directory Structure +### Directory Structure - `backend-go/`: Go backend implementation. - `backend-dart/`: Dart backend implementation. @@ -45,6 +52,7 @@ structured into well-defined layers with separation of concerns. ## Getting Started ### Prerequisites +All prerequistes are already bundled with the devcontainer - Node.js (for the React frontend) - Go (for the Go backend) @@ -131,6 +139,54 @@ attribute was injected in the dom `data-lt-installed="true"` ![alt text](docs/media/image.png) +## Roadmap + +1. Phase: Initialize +- Definition with Spec +- Initialize Repository +2. Phase: Initial Setup +- Frontend with NextJS and Deno +- Backend + - Dart + - Go +- Dev-Container +3. Phase: Implement backends (first Iteration) +Goal: Implement working MVPs in GO and Dart to showoff functional programming in both languages +- Frontend foundation (basic setup, not connected to backend) +- Backend foundation + - Dart + - Go +- Domain + - Entities + - Repositories + - DataSources +- Application (Business Logic) + - Services (Endpoints) + - DTOs + - Authentication with JWT Token + - Simple Authorization +- Dart Testing + - Rpository Tests + - API Handler Tests + +progress is currently here + +3. Phase: Web UI (second Iteration) +- Introduce Permission System +- Reporting for TimeEntries (with MapReduce...) +- Frontend + - Timetracker + - Manage Projects + - Manage TimeEntries + - Manage Tasks + - View Reports + +Ideas for Advanced Features and further Iterations +- Exports (Excel, PDF) +- Maybe Billing +- Multitennant + + ## Resources ### Zen of Go diff --git a/docs/media/architecture.png b/docs/media/architecture.png new file mode 100644 index 0000000..a3456ec Binary files /dev/null and b/docs/media/architecture.png differ