# albincodenzic/codenzic-workspace architecture

> Architecture diagram of the GitHub repository albincodenzic/codenzic-workspace, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/albincodenzic/codenzic-workspace
- Repository: https://github.com/albincodenzic/codenzic-workspace

## Overview

Codenzic Workspace is a Spring Boot modular monolith for multi-tenant workforce and project operations. Users authenticate into an organization-scoped workspace, then manage people and teams, coordinate projects and tasks, record attendance, leave and end-of-day reports, and communicate; dashboards and reports expose operational results. The graph keeps these as distinct business areas and shows the sampled service-to-repository and service-to-service calls. Other module capabilities are represented from the package tree and README; their detailed runtime wiring was not sampled.

Main entry points: [`src/main/java/com/codenzic/workspace/audit/application/AuditLogService.java`](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/audit/application/AuditLogService.java) (Audit log), [`src/main/java/com/codenzic/workspace/employee/infrastructure/EmployeeRepository.java`](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/infrastructure/EmployeeRepository.java) (Employee records), [`src/main/java/com/codenzic/workspace/leave/application/LeaveService.java`](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/leave/application/LeaveService.java) (Leave management), [`src/main/java/com/codenzic/workspace/task/application/TaskService.java`](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/task/application/TaskService.java) (Tasks and history)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and tenancy"]
  node_auth_api["Auth API"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_identity_store[("Identity records")]
  node_organization["Organizations"]
  node_organization_store[("Organization records")]
  node_access_control["Roles and permissions<br/>[RoleService.java]"]
end

subgraph group_workforce["Workforce management"]
  node_people_api["People APIs"]
  node_people_service["Employee profiles"]
  node_people_store[("Employee records")]
  node_org_structure["Departments and teams<br/>[TeamService.java]"]
  node_attendance["Attendance"]
  node_attendance_store[("Attendance records")]
  node_leave["Leave management<br/>[LeaveService.java]"]
  node_leave_store[("Leave records")]
end

subgraph group_delivery["Projects and operations"]
  node_projects["Projects and membership"]
  node_project_store[("Project records")]
  node_tasks["Tasks and history<br/>[TaskService.java]"]
  node_task_store[("Task records")]
  node_eod["End-of-day reports<br/>[EodService.java]"]
  node_eod_store[("EOD records")]
end

subgraph group_communication["Communication"]
  node_communications["Announcements and messaging"]
  node_notifications["Notifications"]
end

subgraph group_insights["Insights and audit"]
  node_dashboard["Dashboard"]
  node_reporting["Operational reports<br/>[ReportService.java]"]
  node_audit["Audit log"]
  node_audit_store[("Audit records")]
end

node_user(("Workspace user"))

node_user -->|"submits credentials"| node_auth_api
node_auth_api -->|"delegates auth"| node_auth_service
node_auth_service -->|"reads and writes"| node_identity_store
node_auth_service -->|"checks active tenant"| node_organization_store
node_auth_service -->|"records login"| node_audit
node_user -->|"manages tenant"| node_organization
node_organization -->|"reads and writes"| node_organization_store
node_organization -->|"ensures default roles"| node_access_control
node_organization -->|"records changes"| node_audit
node_user -->|"manages employees"| node_people_api
node_people_api -->|"delegates requests"| node_people_service
node_people_service -->|"reads and writes"| node_people_store
node_people_service -->|"validates user"| node_identity_store
node_people_service -->|"records changes"| node_audit
node_user -->|"organizes teams"| node_org_structure
node_org_structure -->|"validates membership"| node_people_store
node_user -->|"records time"| node_attendance
node_attendance -->|"reads and writes"| node_attendance_store
node_attendance -->|"resolves employee"| node_people_store
node_attendance -->|"records punches"| node_audit
node_user -->|"requests or reviews leave"| node_leave
node_leave -->|"reads and writes"| node_leave_store
node_leave -->|"validates employee"| node_people_store
node_leave -->|"sends updates"| node_notifications
node_leave -->|"records activity"| node_audit
node_user -->|"manages projects"| node_projects
node_projects -->|"reads and writes"| node_project_store
node_projects -->|"validates manager"| node_people_store
node_projects -->|"records changes"| node_audit
node_user -->|"manages tasks"| node_tasks
node_tasks -->|"reads and writes"| node_task_store
node_tasks -->|"validates assignee"| node_people_store
node_tasks -->|"records activity"| node_audit
node_tasks -->|"sends updates"| node_notifications
node_user -->|"submits and reviews"| node_eod
node_eod -->|"reads and writes"| node_eod_store
node_eod -->|"records activity"| node_audit
node_user -->|"publishes or reads"| node_communications
node_communications -->|"creates notifications"| node_notifications
node_communications -->|"records publication"| node_audit
node_user -->|"views overview"| node_dashboard
node_dashboard -->|"reads attendance"| node_attendance_store
node_dashboard -->|"reads recent activity"| node_audit
node_user -->|"requests reports"| node_reporting
node_reporting -->|"queries workforce data"| node_people_store
node_audit -->|"reads and writes"| node_audit_store

click node_auth_api "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/presentation/AuthController.java"
click node_auth_service "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/application/AuthService.java"
click node_identity_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/infrastructure/UserRepository.java"
click node_organization "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/organization/application/OrganizationService.java"
click node_organization_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/organization/infrastructure/OrganizationRepository.java"
click node_access_control "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/application/RoleService.java"
click node_people_api "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/presentation/EmployeeController.java"
click node_people_service "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/application/EmployeeService.java"
click node_people_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/infrastructure/EmployeeRepository.java"
click node_org_structure "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/team/application/TeamService.java"
click node_attendance "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/attendance/application/AttendanceService.java"
click node_attendance_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/attendance/infrastructure/AttendanceRepository.java"
click node_leave "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/leave/application/LeaveService.java"
click node_leave_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/leave/infrastructure/LeaveRequestRepository.java"
click node_projects "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/project/application/ProjectService.java"
click node_project_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/project/infrastructure/ProjectRepository.java"
click node_tasks "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/task/application/TaskService.java"
click node_task_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/task/infrastructure/TaskRepository.java"
click node_eod "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/eod/application/EodService.java"
click node_eod_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/eod/infrastructure/EodReportRepository.java"
click node_communications "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/communication/application/AnnouncementService.java"
click node_notifications "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/communication/application/NotificationService.java"
click node_dashboard "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/dashboard/application/DashboardService.java"
click node_reporting "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/report/application/ReportService.java"
click node_audit "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/audit/application/AuditLogService.java"
click node_audit_store "https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/audit/infrastructure/AuditLogRepository.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_api,node_auth_service,node_identity_store,node_organization,node_organization_store,node_access_control,node_user toneBlue
class node_people_api,node_people_service,node_people_store,node_org_structure,node_attendance,node_attendance_store,node_leave,node_leave_store toneAmber
class node_projects,node_project_store,node_tasks,node_task_store,node_eod,node_eod_store toneMint
class node_communications,node_notifications toneRose
class node_dashboard,node_reporting,node_audit,node_audit_store toneIndigo
```

## Components

### Identity and tenancy

- [Auth API](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/presentation/AuthController.java): `src/main/java/com/codenzic/workspace/identity/presentation/AuthController.java`
- [Authentication](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/application/AuthService.java): `src/main/java/com/codenzic/workspace/identity/application/AuthService.java`
- [Identity records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/infrastructure/UserRepository.java): `src/main/java/com/codenzic/workspace/identity/infrastructure/UserRepository.java`
- [Organizations](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/organization/application/OrganizationService.java): `src/main/java/com/codenzic/workspace/organization/application/OrganizationService.java`
- [Organization records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/organization/infrastructure/OrganizationRepository.java): `src/main/java/com/codenzic/workspace/organization/infrastructure/OrganizationRepository.java`
- [Roles and permissions](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/identity/application/RoleService.java): `src/main/java/com/codenzic/workspace/identity/application/RoleService.java`

### Workforce management

- [People APIs](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/presentation/EmployeeController.java): `src/main/java/com/codenzic/workspace/employee/presentation/EmployeeController.java`
- [Employee profiles](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/application/EmployeeService.java): `src/main/java/com/codenzic/workspace/employee/application/EmployeeService.java`
- [Employee records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/employee/infrastructure/EmployeeRepository.java): `src/main/java/com/codenzic/workspace/employee/infrastructure/EmployeeRepository.java`
- [Departments and teams](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/team/application/TeamService.java): `src/main/java/com/codenzic/workspace/team/application/TeamService.java`
- [Attendance](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/attendance/application/AttendanceService.java): `src/main/java/com/codenzic/workspace/attendance/application/AttendanceService.java`
- [Attendance records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/attendance/infrastructure/AttendanceRepository.java): `src/main/java/com/codenzic/workspace/attendance/infrastructure/AttendanceRepository.java`
- [Leave management](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/leave/application/LeaveService.java): `src/main/java/com/codenzic/workspace/leave/application/LeaveService.java`
- [Leave records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/leave/infrastructure/LeaveRequestRepository.java): `src/main/java/com/codenzic/workspace/leave/infrastructure/LeaveRequestRepository.java`

### Projects and operations

- [Projects and membership](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/project/application/ProjectService.java): `src/main/java/com/codenzic/workspace/project/application/ProjectService.java`
- [Project records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/project/infrastructure/ProjectRepository.java): `src/main/java/com/codenzic/workspace/project/infrastructure/ProjectRepository.java`
- [Tasks and history](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/task/application/TaskService.java): `src/main/java/com/codenzic/workspace/task/application/TaskService.java`
- [Task records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/task/infrastructure/TaskRepository.java): `src/main/java/com/codenzic/workspace/task/infrastructure/TaskRepository.java`
- [End-of-day reports](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/eod/application/EodService.java): `src/main/java/com/codenzic/workspace/eod/application/EodService.java`
- [EOD records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/eod/infrastructure/EodReportRepository.java): `src/main/java/com/codenzic/workspace/eod/infrastructure/EodReportRepository.java`

### Communication

- [Announcements and messaging](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/communication/application/AnnouncementService.java): `src/main/java/com/codenzic/workspace/communication/application/AnnouncementService.java`
- [Notifications](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/communication/application/NotificationService.java): `src/main/java/com/codenzic/workspace/communication/application/NotificationService.java`

### Insights and audit

- [Dashboard](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/dashboard/application/DashboardService.java): `src/main/java/com/codenzic/workspace/dashboard/application/DashboardService.java`
- [Operational reports](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/report/application/ReportService.java): `src/main/java/com/codenzic/workspace/report/application/ReportService.java`
- [Audit log](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/audit/application/AuditLogService.java): `src/main/java/com/codenzic/workspace/audit/application/AuditLogService.java`
- [Audit records](https://github.com/albincodenzic/codenzic-workspace/blob/main/src/main/java/com/codenzic/workspace/audit/infrastructure/AuditLogRepository.java): `src/main/java/com/codenzic/workspace/audit/infrastructure/AuditLogRepository.java`

### Other components

- **Workspace user**

## Connections

- Workspace user → Auth API: submits credentials
- Auth API → Authentication: delegates auth
- Authentication → Identity records: reads and writes
- Authentication → Organization records: checks active tenant
- Authentication → Audit log: records login
- Workspace user → Organizations: manages tenant
- Organizations → Organization records: reads and writes
- Organizations → Roles and permissions: ensures default roles
- Organizations → Audit log: records changes
- Workspace user → People APIs: manages employees
- People APIs → Employee profiles: delegates requests
- Employee profiles → Employee records: reads and writes
- Employee profiles → Identity records: validates user
- Employee profiles → Audit log: records changes
- Workspace user → Departments and teams: organizes teams
- Departments and teams → Employee records: validates membership
- Workspace user → Attendance: records time
- Attendance → Attendance records: reads and writes
- Attendance → Employee records: resolves employee
- Attendance → Audit log: records punches
- Workspace user → Leave management: requests or reviews leave
- Leave management → Leave records: reads and writes
- Leave management → Employee records: validates employee
- Leave management → Notifications: sends updates
- Leave management → Audit log: records activity
- Workspace user → Projects and membership: manages projects
- Projects and membership → Project records: reads and writes
- Projects and membership → Employee records: validates manager
- Projects and membership → Audit log: records changes
- Workspace user → Tasks and history: manages tasks
- Tasks and history → Task records: reads and writes
- Tasks and history → Employee records: validates assignee
- Tasks and history → Audit log: records activity
- Tasks and history → Notifications: sends updates
- Workspace user → End-of-day reports: submits and reviews
- End-of-day reports → EOD records: reads and writes
- End-of-day reports → Audit log: records activity
- Workspace user → Announcements and messaging: publishes or reads
- Announcements and messaging → Notifications: creates notifications
- Announcements and messaging → Audit log: records publication
- Workspace user → Dashboard: views overview
- Dashboard → Attendance records: reads attendance
- Dashboard → Audit log: reads recent activity
- Workspace user → Operational reports: requests reports
- Operational reports → Employee records: queries workforce data
- Audit log → Audit records: reads and writes
