# menjadianjay/podomoro-laundry architecture

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

- Interactive diagram: https://gitdiagram.com/menjadianjay/podomoro-laundry
- Repository: https://github.com/menjadianjay/podomoro-laundry

## Overview

Podomoro Laundry is a Laravel laundry-operations system with a public business site and authenticated staff and manager panels. The main operational workflow records a customer, selected service, laundry weight and payment method as a priced transaction; separate workflows record and manage staff attendance and maintain the service catalog. Controllers use Eloquent models for persistence and return Blade views. The README documents role-scoped, verified internal routes. Relationships below are limited to those shown in excerpts, the source index, or README; public-page and route-level details not shown in source are kept broad.

Main entry points: [`routes/web.php`](https://github.com/menjadianjay/podomoro-laundry/blob/main/routes/web.php) (Web routes), [`app/Models/Laundry.php`](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Laundry.php) (Laundry services), [`app/Http/Controllers/PegawaiController.php`](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/PegawaiController.php) (Staff transactions), [`app/Http/Controllers/ManagerController.php`](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/ManagerController.php) (Manager transactions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Public website"]
  node_home["Public pages<br/>[HomeController.php]"]
  node_servicepublic["Public services"]
  node_homeviews["Business pages<br/>[landing.blade.php]"]
  node_serviceview["Service listing<br/>[layanan.blade.php]"]
end

subgraph group_access["Authentication"]
  node_routes["Web routes<br/>[web.php]"]
  node_auth["Login and logout"]
  node_loginrequest["Login request<br/>[LoginRequest.php]"]
end

subgraph group_operations["Laundry operations"]
  node_staffops["Staff transactions"]
  node_managerops["Manager transactions"]
  node_staffviews["Staff panel views<br/>[viewdata.blade.php]"]
  node_managerviews["Manager panel views<br/>[viewdata.blade.php]"]
  node_catalog["Service catalog"]
  node_catalogviews["Catalog views"]
end

subgraph group_attendance["Attendance"]
  node_attendance["Attendance management"]
  node_attendanceviews["Attendance views"]
end

subgraph group_data["Domain data"]
  node_users["User accounts<br/>[User.php]"]
  node_transactions["Transactions<br/>[Transaction.php]"]
  node_customers["Customers<br/>[Pelanggan.php]"]
  node_laundry["Laundry services<br/>[Laundry.php]"]
  node_presensi["Attendance records<br/>[Presensi.php]"]
end

node_visitor(("Visitor"))
node_staff(("Staff"))
node_manager(("Manager"))
node_database[("Relational database")]

node_visitor -->|"visits"| node_routes
node_staff -->|"opens panel"| node_routes
node_manager -->|"opens panel"| node_routes
node_routes -->|"routes public"| node_home
node_routes -->|"routes services"| node_servicepublic
node_routes -->|"routes login"| node_auth
node_routes -->|"routes staff"| node_staffops
node_routes -->|"routes manager"| node_managerops
node_routes -->|"routes attendance"| node_attendance
node_auth -->|"authenticates with"| node_loginrequest
node_auth -.->|"authenticates account"| node_users
node_home -.->|"renders"| node_homeviews
node_servicepublic -->|"reads services"| node_laundry
node_servicepublic -->|"renders"| node_serviceview
node_staffops -->|"reads and writes"| node_transactions
node_staffops -->|"creates or updates"| node_customers
node_staffops -->|"looks up service"| node_laundry
node_managerops -->|"reads and writes"| node_transactions
node_managerops -->|"creates or updates"| node_customers
node_managerops -->|"looks up service"| node_laundry
node_catalog -->|"manages catalog"| node_laundry
node_staffops -->|"renders"| node_staffviews
node_managerops -->|"renders"| node_managerviews
node_catalog -->|"renders"| node_catalogviews
node_attendance -->|"reads and writes"| node_presensi
node_attendance -->|"renders"| node_attendanceviews
node_attendance -->|"checks signed-in user"| node_staff
node_transactions -->|"belongs to"| node_customers
node_transactions -->|"belongs to"| node_laundry
node_users -.->|"persists accounts"| node_database
node_transactions -.->|"persists orders"| node_database
node_customers -.->|"persists customers"| node_database
node_laundry -.->|"persists services"| node_database
node_presensi -.->|"persists attendance"| node_database

click node_routes "https://github.com/menjadianjay/podomoro-laundry/blob/main/routes/web.php"
click node_auth "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_loginrequest "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Requests/Auth/LoginRequest.php"
click node_home "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/HomeController.php"
click node_servicepublic "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/LaundryController.php"
click node_homeviews "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/home/landing.blade.php"
click node_serviceview "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/home/layanan.blade.php"
click node_staffops "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/PegawaiController.php"
click node_managerops "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/ManagerController.php"
click node_staffviews "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/pegawai/viewdata.blade.php"
click node_managerviews "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewdata.blade.php"
click node_catalog "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/LaundryController.php"
click node_catalogviews "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewlayanan.blade.php"
click node_attendance "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/PresensiController.php"
click node_attendanceviews "https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewpresensi.blade.php"
click node_users "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/User.php"
click node_transactions "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Transaction.php"
click node_customers "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Pelanggan.php"
click node_laundry "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Laundry.php"
click node_presensi "https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Presensi.php"

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_home,node_servicepublic,node_homeviews,node_serviceview toneBlue
class node_routes,node_auth,node_loginrequest,node_database toneAmber
class node_staffops,node_managerops,node_staffviews,node_managerviews,node_catalog,node_catalogviews toneMint
class node_attendance,node_attendanceviews toneRose
class node_users,node_transactions,node_customers,node_laundry,node_presensi,node_visitor,node_staff,node_manager toneIndigo
```

## Components

### Public website

- [Public pages](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/HomeController.php): `app/Http/Controllers/HomeController.php`
- [Public services](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/LaundryController.php): `app/Http/Controllers/LaundryController.php`
- [Business pages](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/home/landing.blade.php): `resources/views/home/landing.blade.php`
- [Service listing](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/home/layanan.blade.php): `resources/views/home/layanan.blade.php`

### Authentication

- [Web routes](https://github.com/menjadianjay/podomoro-laundry/blob/main/routes/web.php): `routes/web.php`
- [Login and logout](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Login request](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Requests/Auth/LoginRequest.php): `app/Http/Requests/Auth/LoginRequest.php`

### Laundry operations

- [Staff transactions](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/PegawaiController.php): `app/Http/Controllers/PegawaiController.php`
- [Manager transactions](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/ManagerController.php): `app/Http/Controllers/ManagerController.php`
- [Staff panel views](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/pegawai/viewdata.blade.php): `resources/views/pegawai/viewdata.blade.php`
- [Manager panel views](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewdata.blade.php): `resources/views/manager/viewdata.blade.php`
- [Service catalog](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/LaundryController.php): `app/Http/Controllers/LaundryController.php`
- [Catalog views](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewlayanan.blade.php): `resources/views/manager/viewlayanan.blade.php`

### Attendance

- [Attendance management](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Http/Controllers/PresensiController.php): `app/Http/Controllers/PresensiController.php`
- [Attendance views](https://github.com/menjadianjay/podomoro-laundry/blob/main/resources/views/manager/viewpresensi.blade.php): `resources/views/manager/viewpresensi.blade.php`

### Domain data

- [User accounts](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/User.php): `app/Models/User.php`
- [Transactions](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Transaction.php): `app/Models/Transaction.php`
- [Customers](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Pelanggan.php): `app/Models/Pelanggan.php`
- [Laundry services](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Laundry.php): `app/Models/Laundry.php`
- [Attendance records](https://github.com/menjadianjay/podomoro-laundry/blob/main/app/Models/Presensi.php): `app/Models/Presensi.php`

### Other components

- **Visitor**
- **Staff**
- **Manager**
- **Relational database**

## Connections

- Visitor → Web routes: visits
- Staff → Web routes: opens panel
- Manager → Web routes: opens panel
- Web routes → Public pages: routes public (evidence: `routes/web.php`)
- Web routes → Public services: routes services (evidence: `routes/web.php`)
- Web routes → Login and logout: routes login (evidence: `routes/web.php`)
- Web routes → Staff transactions: routes staff (evidence: `routes/web.php`)
- Web routes → Manager transactions: routes manager (evidence: `routes/web.php`)
- Web routes → Attendance management: routes attendance (evidence: `routes/web.php`)
- Login and logout → Login request: authenticates with (evidence: `app/Http/Controllers/Auth/AuthenticatedSessionController.php`)
- Login and logout → User accounts: authenticates account
- Public pages → Business pages: renders
- Public services → Laundry services: reads services (evidence: `app/Http/Controllers/LaundryController.php`)
- Public services → Service listing: renders (evidence: `app/Http/Controllers/LaundryController.php`)
- Staff transactions → Transactions: reads and writes (evidence: `app/Http/Controllers/PegawaiController.php`)
- Staff transactions → Customers: creates or updates (evidence: `app/Http/Controllers/PegawaiController.php`)
- Staff transactions → Laundry services: looks up service (evidence: `app/Http/Controllers/PegawaiController.php`)
- Manager transactions → Transactions: reads and writes (evidence: `app/Http/Controllers/ManagerController.php`)
- Manager transactions → Customers: creates or updates (evidence: `app/Http/Controllers/ManagerController.php`)
- Manager transactions → Laundry services: looks up service (evidence: `app/Http/Controllers/ManagerController.php`)
- Service catalog → Laundry services: manages catalog (evidence: `app/Http/Controllers/LaundryController.php`)
- Staff transactions → Staff panel views: renders (evidence: `app/Http/Controllers/PegawaiController.php`)
- Manager transactions → Manager panel views: renders (evidence: `app/Http/Controllers/ManagerController.php`)
- Service catalog → Catalog views: renders (evidence: `app/Http/Controllers/LaundryController.php`)
- Attendance management → Attendance records: reads and writes (evidence: `app/Http/Controllers/PresensiController.php`)
- Attendance management → Attendance views: renders (evidence: `app/Http/Controllers/PresensiController.php`)
- Attendance management → Staff: checks signed-in user (evidence: `app/Http/Controllers/PresensiController.php`)
- Transactions → Customers: belongs to (evidence: `app/Models/Transaction.php`)
- Transactions → Laundry services: belongs to (evidence: `app/Models/Transaction.php`)
- User accounts → Relational database: persists accounts
- Transactions → Relational database: persists orders
- Customers → Relational database: persists customers
- Laundry services → Relational database: persists services
- Attendance records → Relational database: persists attendance
