# yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security architecture

> Architecture diagram of the GitHub repository yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security
- Repository: https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security

## Overview

This is a Laravel enterprise application for secure, multi-tenant company administration, authentication, and billing. Its primary user journey is sign-in with layered verification, then access to tenant-scoped dashboards and administration; billing users also manage and download invoices. The map highlights authentication/security, tenant administration, and invoice operations, plus notification and audit support. README feature descriptions inform several links, but source excerpts are incomplete, so uncertain controller and service wiring is omitted.

Main entry points: [`app/Livewire/Auth/Login.php`](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Auth/Login.php) (Sign In), [`config/database.php`](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/config/database.php) (Application Database), [`app/Http/Controllers/InvoiceController.php`](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Http/Controllers/InvoiceController.php) (Invoice Delivery), [`bootstrap/app.php`](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/bootstrap/app.php) (App Bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web Entry"]
  node_runtime["Laravel Runtime<br/>[index.php]"]
  node_bootstrap["App Bootstrap<br/>[app.php]"]
  node_routes["Web Routes<br/>[web.php]"]
end

subgraph group_identity["Identity Security"]
  node_login["Sign In<br/>[Login.php]"]
  node_captcha["Captcha"]
  node_security["Request Security"]
  node_otp["OTP Service<br/>[OtpService.php]"]
  node_security_settings["Security Settings"]
  node_user_model["User Identity<br/>[User.php]"]
end

subgraph group_tenants["Tenant Operations"]
  node_dashboard["Dashboard<br/>[Index.php]"]
  node_admin["Tenant Administration"]
  node_company["Company Records<br/>[Company.php]"]
  node_subscription["Subscriptions"]
end

subgraph group_billing["Billing"]
  node_invoice_ui["Invoice Management"]
  node_invoice_controller["Invoice Delivery"]
  node_invoice_model["Invoices<br/>[Invoice.php]"]
  node_invoice_generator["Invoice Generation"]
  node_invoice_view["Printable Invoice<br/>[print.blade.php]"]
end

subgraph group_support["Audit Notifications"]
  node_database[("Application Database<br/>[database.php]")]
  node_audit["Audit Service<br/>[AuditService.php]"]
  node_notifications["Notifications"]
end

node_user(("User"))
node_telegram{{"Telegram"}}
node_whatsapp{{"WhatsApp"}}

node_user -->|"sends request"| node_runtime
node_runtime -->|"handles request"| node_bootstrap
node_bootstrap -->|"loads routes"| node_routes
node_routes -->|"dispatches sign-in"| node_login
node_login -->|"requests challenge"| node_captcha
node_login -->|"verifies OTP"| node_otp
node_login -->|"authenticates"| node_user_model
node_login -->|"redirects after login"| node_dashboard
node_bootstrap -->|"registers middleware"| node_security
node_user -->|"opens dashboard"| node_dashboard
node_user -->|"manages tenant"| node_admin
node_admin -->|"manages companies"| node_company
node_admin -->|"manages subscriptions"| node_subscription
node_user -->|"manages billing"| node_invoice_ui
node_invoice_controller -->|"loads invoice"| node_invoice_model
node_invoice_controller -->|"records access"| node_audit
node_invoice_controller -->|"renders invoice"| node_invoice_view
node_invoice_ui -->|"generates invoices"| node_invoice_generator
node_invoice_model -->|"reads and writes"| node_database
node_user_model -->|"reads and writes"| node_database
node_company -->|"reads and writes"| node_database
node_audit -->|"records events"| node_database
node_notifications -.->|"sends messages"| node_telegram
node_notifications -.->|"sends messages"| node_whatsapp
node_security_settings -->|"sends alerts"| node_notifications

click node_runtime "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/public/index.php"
click node_bootstrap "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/bootstrap/app.php"
click node_routes "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/routes/web.php"
click node_login "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Auth/Login.php"
click node_captcha "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Http/Controllers/CaptchaController.php"
click node_security "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/tree/main/app/Http/Middleware"
click node_otp "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/OtpService.php"
click node_security_settings "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Admin/SecuritySettings.php"
click node_user_model "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/User.php"
click node_dashboard "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Dashboard/Index.php"
click node_admin "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/tree/main/app/Livewire/Admin"
click node_company "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/Company.php"
click node_subscription "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/SubscriptionService.php"
click node_invoice_ui "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Admin/BillingManagement.php"
click node_invoice_controller "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Http/Controllers/InvoiceController.php"
click node_invoice_model "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/Invoice.php"
click node_invoice_generator "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/InvoiceGenerator.php"
click node_invoice_view "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/resources/views/invoice/print.blade.php"
click node_database "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/config/database.php"
click node_audit "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/AuditService.php"
click node_notifications "https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/NotificationService.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_runtime,node_bootstrap,node_routes,node_user toneBlue
class node_login,node_captcha,node_security,node_otp,node_security_settings,node_user_model toneAmber
class node_dashboard,node_admin,node_company,node_subscription toneMint
class node_invoice_ui,node_invoice_controller,node_invoice_model,node_invoice_generator,node_invoice_view toneRose
class node_database,node_audit,node_notifications,node_telegram,node_whatsapp toneIndigo
```

## Components

### Web Entry

- [Laravel Runtime](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/public/index.php): `public/index.php`
- [App Bootstrap](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/bootstrap/app.php): `bootstrap/app.php`
- [Web Routes](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/routes/web.php): `routes/web.php`

### Identity Security

- [Sign In](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Auth/Login.php): `app/Livewire/Auth/Login.php`
- [Captcha](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Http/Controllers/CaptchaController.php): `app/Http/Controllers/CaptchaController.php`
- [Request Security](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/tree/main/app/Http/Middleware): `app/Http/Middleware`
- [OTP Service](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/OtpService.php): `app/Services/OtpService.php`
- [Security Settings](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Admin/SecuritySettings.php): `app/Livewire/Admin/SecuritySettings.php`
- [User Identity](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/User.php): `app/Models/User.php`

### Tenant Operations

- [Dashboard](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Dashboard/Index.php): `app/Livewire/Dashboard/Index.php`
- [Tenant Administration](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/tree/main/app/Livewire/Admin): `app/Livewire/Admin`
- [Company Records](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/Company.php): `app/Models/Company.php`
- [Subscriptions](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/SubscriptionService.php): `app/Services/SubscriptionService.php`

### Billing

- [Invoice Management](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Livewire/Admin/BillingManagement.php): `app/Livewire/Admin/BillingManagement.php`
- [Invoice Delivery](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Http/Controllers/InvoiceController.php): `app/Http/Controllers/InvoiceController.php`
- [Invoices](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Models/Invoice.php): `app/Models/Invoice.php`
- [Invoice Generation](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/InvoiceGenerator.php): `app/Services/InvoiceGenerator.php`
- [Printable Invoice](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/resources/views/invoice/print.blade.php): `resources/views/invoice/print.blade.php`

### Audit Notifications

- [Application Database](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/config/database.php): `config/database.php`
- [Audit Service](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/AuditService.php): `app/Services/AuditService.php`
- [Notifications](https://github.com/yohanes-budi-satrio/yohanes-budi-satrio-aplikasi-dasar-multi-tenant-bank-grade-security/blob/main/app/Services/NotificationService.php): `app/Services/NotificationService.php`

### Other components

- **User**
- **Telegram**
- **WhatsApp**

## Connections

- User → Laravel Runtime: sends request
- Laravel Runtime → App Bootstrap: handles request
- App Bootstrap → Web Routes: loads routes
- Web Routes → Sign In: dispatches sign-in
- Sign In → Captcha: requests challenge
- Sign In → OTP Service: verifies OTP
- Sign In → User Identity: authenticates
- Sign In → Dashboard: redirects after login
- App Bootstrap → Request Security: registers middleware
- User → Dashboard: opens dashboard
- User → Tenant Administration: manages tenant
- Tenant Administration → Company Records: manages companies
- Tenant Administration → Subscriptions: manages subscriptions
- User → Invoice Management: manages billing
- Invoice Delivery → Invoices: loads invoice
- Invoice Delivery → Audit Service: records access
- Invoice Delivery → Printable Invoice: renders invoice
- Invoice Management → Invoice Generation: generates invoices
- Invoices → Application Database: reads and writes
- User Identity → Application Database: reads and writes
- Company Records → Application Database: reads and writes
- Audit Service → Application Database: records events
- Notifications → Telegram: sends messages
- Notifications → WhatsApp: sends messages
- Security Settings → Notifications: sends alerts
