# marsels-str/check-in architecture

> Architecture diagram of the GitHub repository marsels-str/check-in, 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/marsels-str/check-in
- Repository: https://github.com/marsels-str/check-in

## Overview

Check-In is a workforce management application for business owners and employees: users register and complete profiles, then manage businesses, staff, work-time logs, groups and operational views. The README explicitly documents scheduled automatic clock actions, live chat, and queued translation of synchronized original text; the tree also shows maps, dashboards, roles, and language management. Sampled controllers confirm some page rendering and persistence paths. Several feature modules are represented by their exact tree paths, but their internal wiring was not sampled, so uncertain connections are omitted.

Main entry points: [`app/Jobs/TranslateOriginalJob.php`](https://github.com/marsels-str/check-in/blob/main/app/Jobs/TranslateOriginalJob.php) (Translation queue job), [`app/Http/Controllers/BusinessEmployeeController.php`](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/BusinessEmployeeController.php) (Employee management), [`app/Console/Commands/AutoClockScheduler.php`](https://github.com/marsels-str/check-in/blob/main/app/Console/Commands/AutoClockScheduler.php) (Automatic clock scheduler), [`app/Http/Controllers/Groups/GroupController.php`](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Groups/GroupController.php) (Group management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and setup"]
  node_registration["Registration and login"]
  node_profile["Profile settings"]
  node_business["Business settings"]
end

subgraph group_workforce["Workforce and time"]
  node_users["User and role management<br/>[UserController.php]"]
  node_employees["Employee management"]
  node_time[("Time logs<br/>[TimeLog.php]")]
  node_clock["Automatic clock scheduler"]
  node_clocksettings[("Automatic clock settings")]
end

subgraph group_collaboration["Groups and maps"]
  node_groupcontrol["Group management"]
  node_groups[("Groups and membership<br/>[Group.php]")]
  node_chat["Group chat"]
  node_messageevent["Message broadcast event"]
  node_maps["Map editing and display<br/>[MapController.php]"]
end

subgraph group_insights["Dashboard"]
  node_dashboard["Dashboard pages"]
  node_dashboardservices["Dashboard metrics"]
end

subgraph group_localization["Languages and translation"]
  node_languagecontroller["Language management"]
  node_originals[("Original text catalog<br/>[Originals.php]")]
  node_translationcontroller["Translation management"]
  node_translationjob["Translation queue job"]
  node_translator["OpenAI translator"]
  node_translations[("Translations store<br/>[Translations.php]")]
end

node_visitor(("User"))
node_web(("Web interface"))
node_reverb{{"Reverb live service"}}
node_appclient["React application<br/>[app.tsx]"]

node_visitor -->|"uses"| node_web
node_web -->|"submits credentials"| node_registration
node_registration -->|"redirects to completion"| node_profile
node_profile -->|"renders settings"| node_web
node_business -->|"renders settings"| node_web
node_employees -->|"renders employee view"| node_web
node_employees -->|"creates and updates logs"| node_time
node_clock -->|"reads settings"| node_clocksettings
node_clock -->|"records clock actions"| node_time
node_groupcontrol -->|"reads and updates"| node_groups
node_groupcontrol -->|"renders group pages"| node_web
node_chat -->|"broadcasts message"| node_messageevent
node_messageevent -->|"dispatches event"| node_reverb
node_appclient -->|"connects live"| node_reverb
node_maps -->|"serves map pages"| node_web
node_dashboard -->|"uses metrics"| node_dashboardservices
node_dashboard -->|"renders dashboard"| node_web
node_languagecontroller -->|"renders language pages"| node_web
node_translationcontroller -->|"synchronizes text"| node_originals
node_translationcontroller -->|"queues translation"| node_translationjob
node_translationjob -->|"requests translation"| node_translator
node_translationjob -->|"stores result"| node_translations

click node_registration "https://github.com/marsels-str/check-in/tree/main/app/Http/Controllers/Auth"
click node_profile "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Settings/ProfileController.php"
click node_business "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Settings/BusinessProfileController.php"
click node_users "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/UserController.php"
click node_employees "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/BusinessEmployeeController.php"
click node_time "https://github.com/marsels-str/check-in/blob/main/app/Models/TimeLog.php"
click node_clock "https://github.com/marsels-str/check-in/blob/main/app/Console/Commands/AutoClockScheduler.php"
click node_clocksettings "https://github.com/marsels-str/check-in/blob/main/app/Models/AutoClockSettings.php"
click node_groupcontrol "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Groups/GroupController.php"
click node_groups "https://github.com/marsels-str/check-in/blob/main/app/Models/Group.php"
click node_chat "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Groups/GroupMessageController.php"
click node_messageevent "https://github.com/marsels-str/check-in/blob/main/app/Events/GroupMessageSent.php"
click node_maps "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/MapController.php"
click node_dashboard "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/DashboardController.php"
click node_dashboardservices "https://github.com/marsels-str/check-in/tree/main/app/Dashboard"
click node_languagecontroller "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/LanguageController.php"
click node_originals "https://github.com/marsels-str/check-in/blob/main/app/Models/Originals.php"
click node_translationcontroller "https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/TranslationController.php"
click node_translationjob "https://github.com/marsels-str/check-in/blob/main/app/Jobs/TranslateOriginalJob.php"
click node_translator "https://github.com/marsels-str/check-in/blob/main/app/Services/OpenAITranslator.php"
click node_translations "https://github.com/marsels-str/check-in/blob/main/app/Models/Translations.php"
click node_appclient "https://github.com/marsels-str/check-in/blob/main/resources/js/app.tsx"

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_registration,node_profile,node_business,node_visitor toneBlue
class node_users,node_employees,node_time,node_clock,node_clocksettings toneAmber
class node_groupcontrol,node_groups,node_chat,node_messageevent,node_maps toneMint
class node_dashboard,node_dashboardservices toneRose
class node_languagecontroller,node_originals,node_translationcontroller,node_translationjob,node_translator,node_translations,node_web,node_reverb toneIndigo
class node_appclient toneTeal
```

## Components

### Identity and setup

- [Registration and login](https://github.com/marsels-str/check-in/tree/main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [Profile settings](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Settings/ProfileController.php): `app/Http/Controllers/Settings/ProfileController.php`
- [Business settings](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Settings/BusinessProfileController.php): `app/Http/Controllers/Settings/BusinessProfileController.php`

### Workforce and time

- [User and role management](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/UserController.php): `app/Http/Controllers/UserController.php`
- [Employee management](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/BusinessEmployeeController.php): `app/Http/Controllers/BusinessEmployeeController.php`
- [Time logs](https://github.com/marsels-str/check-in/blob/main/app/Models/TimeLog.php): `app/Models/TimeLog.php`
- [Automatic clock scheduler](https://github.com/marsels-str/check-in/blob/main/app/Console/Commands/AutoClockScheduler.php): `app/Console/Commands/AutoClockScheduler.php`
- [Automatic clock settings](https://github.com/marsels-str/check-in/blob/main/app/Models/AutoClockSettings.php): `app/Models/AutoClockSettings.php`

### Groups and maps

- [Group management](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Groups/GroupController.php): `app/Http/Controllers/Groups/GroupController.php`
- [Groups and membership](https://github.com/marsels-str/check-in/blob/main/app/Models/Group.php): `app/Models/Group.php`
- [Group chat](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/Groups/GroupMessageController.php): `app/Http/Controllers/Groups/GroupMessageController.php`
- [Message broadcast event](https://github.com/marsels-str/check-in/blob/main/app/Events/GroupMessageSent.php): `app/Events/GroupMessageSent.php`
- [Map editing and display](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/MapController.php): `app/Http/Controllers/MapController.php`

### Dashboard

- [Dashboard pages](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Dashboard metrics](https://github.com/marsels-str/check-in/tree/main/app/Dashboard): `app/Dashboard`

### Languages and translation

- [Language management](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/LanguageController.php): `app/Http/Controllers/LanguageController.php`
- [Original text catalog](https://github.com/marsels-str/check-in/blob/main/app/Models/Originals.php): `app/Models/Originals.php`
- [Translation management](https://github.com/marsels-str/check-in/blob/main/app/Http/Controllers/TranslationController.php): `app/Http/Controllers/TranslationController.php`
- [Translation queue job](https://github.com/marsels-str/check-in/blob/main/app/Jobs/TranslateOriginalJob.php): `app/Jobs/TranslateOriginalJob.php`
- [OpenAI translator](https://github.com/marsels-str/check-in/blob/main/app/Services/OpenAITranslator.php): `app/Services/OpenAITranslator.php`
- [Translations store](https://github.com/marsels-str/check-in/blob/main/app/Models/Translations.php): `app/Models/Translations.php`

### Other components

- **User**
- **Web interface**
- **Reverb live service**
- [React application](https://github.com/marsels-str/check-in/blob/main/resources/js/app.tsx): `resources/js/app.tsx`

## Connections

- User → Web interface: uses
- Web interface → Registration and login: submits credentials
- Registration and login → Profile settings: redirects to completion
- Profile settings → Web interface: renders settings
- Business settings → Web interface: renders settings
- Employee management → Web interface: renders employee view
- Employee management → Time logs: creates and updates logs
- Automatic clock scheduler → Automatic clock settings: reads settings
- Automatic clock scheduler → Time logs: records clock actions
- Group management → Groups and membership: reads and updates
- Group management → Web interface: renders group pages
- Group chat → Message broadcast event: broadcasts message
- Message broadcast event → Reverb live service: dispatches event
- React application → Reverb live service: connects live
- Map editing and display → Web interface: serves map pages
- Dashboard pages → Dashboard metrics: uses metrics
- Dashboard pages → Web interface: renders dashboard
- Language management → Web interface: renders language pages
- Translation management → Original text catalog: synchronizes text
- Translation management → Translation queue job: queues translation
- Translation queue job → OpenAI translator: requests translation
- Translation queue job → Translations store: stores result
