# throwawaybtm/sitari-diskum-v3 architecture

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

- Interactive diagram: https://gitdiagram.com/throwawaybtm/sitari-diskum-v3
- Repository: https://github.com/throwawaybtm/sitari-diskum-v3

## Overview

SI-TARI is a Google Apps Script visitor-management and meeting-administration product with a consolidated public registration/attendance app and a protected Admin app sharing one database. The main journey is public TLD/TDD registration, followed by Admin review and visit coordination, then agenda attendance and records; public QR attendance is a separate entry path. The README documents the Public-to-Admin write delegation and shared storage. The sampled sources show visit-workflow storage behavior, but most Admin screens and integrations were not sampled, so those links are omitted or marked unverified.

Main entry points: [`Admin/Code.js`](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/Code.js) (Admin dashboard), [`Public/Code.js`](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Public/Code.js) (Public routes), [`Admin/VisitWorkflow.js`](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflow.js) (Visit approvals), [`Admin/VisitWorkflowStorage.js`](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflowStorage.js) (Workflow storage)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public access"]
  node_public_app["Public routes<br/>[Code.js]"]
  node_tld_form["TLD registration<br/>[Code.js]"]
  node_tdd_form["TDD registration<br/>[Code.js]"]
  node_attendance_form["QR attendance<br/>[Presensi.html]"]
end

subgraph group_admin["Administration"]
  node_admin_app["Admin dashboard<br/>[Code.js]"]
  node_public_api["Public API<br/>[PublicApi.js]"]
  node_document_sharing["Document sharing<br/>[DocumentSharing.js]"]
  node_employee_import["Employee import<br/>[EmployeeImport.js]"]
end

subgraph group_workflow["Visit workflow"]
  node_visit_workflow["Visit approvals<br/>[VisitWorkflow.js]"]
  node_workflow_storage["Workflow storage"]
  node_rooms["Meeting rooms<br/>[MeetingRooms.js]"]
  node_agenda_attendance["Agenda attendance"]
  node_agenda_documents["Agenda documents<br/>[AgendaDocuments.js]"]
  node_visit_archive["Visit archive<br/>[VisitArchive.js]"]
  node_notifications["Visit notifications"]
end

subgraph group_data["Shared services"]
  node_shared_db[("Shared database")]
  node_drive[("Google Drive")]
  node_fonnte["Fonnte WhatsApp"]
end

node_visitor(("Visitor"))
node_admin_user(("Admin staff"))

node_visitor -->|"opens routes"| node_public_app
node_public_app -->|"routes to"| node_tld_form
node_public_app -->|"routes to"| node_tdd_form
node_visitor -->|"scans QR"| node_attendance_form
node_admin_user -->|"uses"| node_admin_app
node_tld_form -->|"registers visit"| node_shared_db
node_tdd_form -->|"registers visit"| node_shared_db
node_public_app -->|"delegates writes"| node_public_api
node_public_api -->|"shares database"| node_shared_db
node_admin_app -.->|"manages visits"| node_visit_workflow
node_visit_workflow -.->|"persists state"| node_workflow_storage
node_workflow_storage -->|"reads and writes"| node_shared_db
node_workflow_storage -->|"saves files"| node_drive
node_visit_workflow -.->|"checks bookings"| node_rooms
node_admin_app -.->|"shows attendance"| node_agenda_attendance
node_admin_app -.->|"manages records"| node_agenda_documents
node_admin_app -.->|"opens archive"| node_visit_archive
node_visit_workflow -.->|"sends updates"| node_notifications
node_notifications -.->|"sends WhatsApp"| node_fonnte
node_admin_app -.->|"shares documents"| node_document_sharing
node_admin_app -.->|"imports employees"| node_employee_import

click node_public_app "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Public/Code.js"
click node_tld_form "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Tamu-Luar/Code.js"
click node_tdd_form "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Tamu-FO/Code.js"
click node_attendance_form "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/Presensi.html"
click node_admin_app "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/Code.js"
click node_visit_workflow "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflow.js"
click node_workflow_storage "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflowStorage.js"
click node_rooms "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/MeetingRooms.js"
click node_agenda_attendance "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/AgendaAttendanceData.js"
click node_agenda_documents "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/AgendaDocuments.js"
click node_visit_archive "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitArchive.js"
click node_notifications "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitNotifications.js"
click node_public_api "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/PublicApi.js"
click node_document_sharing "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/DocumentSharing.js"
click node_employee_import "https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/EmployeeImport.js"

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_public_app,node_tld_form,node_tdd_form,node_attendance_form toneBlue
class node_admin_app,node_public_api,node_document_sharing,node_employee_import toneAmber
class node_visit_workflow,node_workflow_storage,node_rooms,node_agenda_attendance,node_agenda_documents,node_visit_archive,node_notifications toneMint
class node_shared_db,node_drive,node_fonnte toneRose
class node_visitor,node_admin_user toneIndigo
```

## Components

### Public access

- [Public routes](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Public/Code.js): `Public/Code.js`
- [TLD registration](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Tamu-Luar/Code.js): `Tamu-Luar/Code.js`
- [TDD registration](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Tamu-FO/Code.js): `Tamu-FO/Code.js`
- [QR attendance](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/Presensi.html): `Admin/Presensi.html`

### Administration

- [Admin dashboard](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/Code.js): `Admin/Code.js`
- [Public API](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/PublicApi.js): `Admin/PublicApi.js`
- [Document sharing](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/DocumentSharing.js): `Admin/DocumentSharing.js`
- [Employee import](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/EmployeeImport.js): `Admin/EmployeeImport.js`

### Visit workflow

- [Visit approvals](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflow.js): `Admin/VisitWorkflow.js`
- [Workflow storage](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitWorkflowStorage.js): `Admin/VisitWorkflowStorage.js`
- [Meeting rooms](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/MeetingRooms.js): `Admin/MeetingRooms.js`
- [Agenda attendance](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/AgendaAttendanceData.js): `Admin/AgendaAttendanceData.js`
- [Agenda documents](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/AgendaDocuments.js): `Admin/AgendaDocuments.js`
- [Visit archive](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitArchive.js): `Admin/VisitArchive.js`
- [Visit notifications](https://github.com/throwawaybtm/sitari-diskum-v3/blob/main/Admin/VisitNotifications.js): `Admin/VisitNotifications.js`

### Shared services

- **Shared database**
- **Google Drive**
- **Fonnte WhatsApp**

### Other components

- **Visitor**
- **Admin staff**

## Connections

- Visitor → Public routes: opens routes (evidence: `README.md`)
- Public routes → TLD registration: routes to (evidence: `README.md`)
- Public routes → TDD registration: routes to (evidence: `README.md`)
- Visitor → QR attendance: scans QR (evidence: `README.md`)
- Admin staff → Admin dashboard: uses (evidence: `README.md`)
- TLD registration → Shared database: registers visit (evidence: `Tamu-Luar/Code.js`)
- TDD registration → Shared database: registers visit (evidence: `Tamu-FO/Code.js`)
- Public routes → Public API: delegates writes (evidence: `README.md`)
- Public API → Shared database: shares database (evidence: `README.md`)
- Admin dashboard → Visit approvals: manages visits
- Visit approvals → Workflow storage: persists state
- Workflow storage → Shared database: reads and writes (evidence: `Admin/VisitWorkflowStorage.js`)
- Workflow storage → Google Drive: saves files (evidence: `Admin/VisitWorkflowStorage.js`)
- Visit approvals → Meeting rooms: checks bookings
- Admin dashboard → Agenda attendance: shows attendance
- Admin dashboard → Agenda documents: manages records
- Admin dashboard → Visit archive: opens archive
- Visit approvals → Visit notifications: sends updates
- Visit notifications → Fonnte WhatsApp: sends WhatsApp
- Admin dashboard → Document sharing: shares documents
- Admin dashboard → Employee import: imports employees
