# sayujyamaharjan/sa-proposal-artipera architecture

> Architecture diagram of the GitHub repository sayujyamaharjan/sa-proposal-artipera, 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/sayujyamaharjan/sa-proposal-artipera
- Repository: https://github.com/sayujyamaharjan/sa-proposal-artipera

## Overview

Artipera is a PHP handyman-booking application with customer, worker, and administrator pages. Its apparent core workflow is customers finding workers and arranging bookings, followed by workers managing and completing those bookings; completion can involve an emailed OTP. The sampled code confirms worker booking and schedule operations, database-backed worker lookup, and OTP handling. The README is minimal and several page implementations are unsampled, so some capability links are intentionally omitted rather than inferred.

Main entry points: [`php/artipera (1).sql`](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/artipera%20(1).sql) (Application database), [`pages/workerBooking.php`](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/workerBooking.php) (Manage bookings), [`pages/adminWorker.php`](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/adminWorker.php) (Worker administration), [`components/fetchWorkers.php`](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/components/fetchWorkers.php) (Worker lookup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts and access"]
  node_signup_login["Sign up and login<br/>[signup.php]"]
  node_otp_page["OTP page<br/>[otpPage.php]"]
  node_auth_api["OTP API<br/>[auth.php]"]
  node_auth_functions["OTP verification<br/>[authFunction.php]"]
  node_access_guard["Role access guard<br/>[authGuard.php]"]
end

subgraph group_marketplace["Worker marketplace"]
  node_worker_search["Worker search<br/>[customerSearch.php]"]
  node_worker_profile["Worker details<br/>[customerView.php]"]
  node_saved_workers["Saved workers<br/>[customerSaved.php]"]
  node_worker_lookup["Worker lookup<br/>[fetchWorkers.php]"]
  node_customer_home["Customer dashboard<br/>[customer.php]"]
end

subgraph group_booking_ops["Booking operations"]
  node_customer_booking["Customer bookings"]
  node_worker_dashboard["Worker dashboard<br/>[worker.php]"]
  node_worker_schedule["Schedule and services<br/>[workerSchedule.php]"]
  node_worker_bookings["Manage bookings<br/>[workerBooking.php]"]
  node_email_handler["Email and OTP<br/>[emailHandler.php]"]
end

subgraph group_admin_ops["Administration"]
  node_admin_dashboard["Admin dashboard<br/>[admin.php]"]
  node_admin_workers["Worker administration<br/>[adminWorker.php]"]
  node_admin_customers["Customer administration<br/>[adminCustomer.php]"]
  node_document_api["Document endpoint<br/>[document.php]"]
  node_document_uploads["Worker documents"]
end

node_customer(("Customer"))
node_worker_user(("Worker"))
node_admin_user(("Administrator"))
node_mail_service["SMTP mail service"]
node_app_database[("Application database<br/>[artipera &#40;1&#41;.sql]")]

node_customer -->|"registers or signs in"| node_signup_login
node_signup_login -->|"continues verification"| node_otp_page
node_otp_page -->|"submits OTP"| node_auth_api
node_auth_api -->|"dispatches verification"| node_auth_functions
node_auth_functions -->|"creates user"| node_app_database
node_customer -->|"searches workers"| node_worker_search
node_worker_search -->|"requests worker data"| node_worker_lookup
node_worker_lookup -->|"reads workers and ratings"| node_app_database
node_admin_user -->|"reviews workers"| node_admin_workers
node_admin_workers -->|"loads worker list"| node_worker_lookup
node_admin_workers -->|"reads worker records"| node_app_database
node_customer -->|"views worker"| node_worker_profile
node_customer -->|"manages saved workers"| node_saved_workers
node_customer -->|"views bookings"| node_customer_booking
node_worker_user -->|"views dashboard"| node_worker_dashboard
node_worker_user -->|"manages schedule and services"| node_worker_schedule
node_worker_schedule -->|"reads and updates schedule data"| node_app_database
node_worker_user -->|"manages booking"| node_worker_bookings
node_worker_bookings -->|"reads and updates bookings"| node_app_database
node_worker_bookings -->|"requests completion OTP"| node_email_handler
node_email_handler -->|"sends email"| node_mail_service
node_admin_user -->|"opens dashboard"| node_admin_dashboard
node_admin_user -->|"manages customers"| node_admin_customers
node_document_api -.-> node_document_uploads

click node_signup_login "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/signup.php"
click node_otp_page "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/otpPage.php"
click node_auth_api "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/API/auth.php"
click node_auth_functions "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/authFunction.php"
click node_access_guard "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/authGuard.php"
click node_worker_search "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerSearch.php"
click node_worker_profile "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerView.php"
click node_saved_workers "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerSaved.php"
click node_worker_lookup "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/components/fetchWorkers.php"
click node_customer_home "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customer.php"
click node_customer_booking "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerBooking.php"
click node_worker_dashboard "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/worker.php"
click node_worker_schedule "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/workerSchedule.php"
click node_worker_bookings "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/workerBooking.php"
click node_email_handler "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/emailHandler.php"
click node_admin_dashboard "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/admin.php"
click node_admin_workers "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/adminWorker.php"
click node_admin_customers "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/adminCustomer.php"
click node_document_api "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/API/document.php"
click node_document_uploads "https://github.com/sayujyamaharjan/sa-proposal-artipera/tree/main/uploads/worker_documents"
click node_app_database "https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/artipera%20(1).sql"

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_signup_login,node_otp_page,node_auth_api,node_auth_functions,node_access_guard toneBlue
class node_worker_search,node_worker_profile,node_saved_workers,node_worker_lookup,node_customer_home,node_app_database toneAmber
class node_customer_booking,node_worker_dashboard,node_worker_schedule,node_worker_bookings,node_email_handler toneMint
class node_admin_dashboard,node_admin_workers,node_admin_customers,node_document_api,node_document_uploads,node_worker_user toneRose
class node_customer,node_admin_user,node_mail_service toneIndigo
```

## Components

### Accounts and access

- [Sign up and login](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/signup.php): `pages/signup.php`
- [OTP page](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/otpPage.php): `pages/otpPage.php`
- [OTP API](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/API/auth.php): `API/auth.php`
- [OTP verification](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/authFunction.php): `php/authFunction.php`
- [Role access guard](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/authGuard.php): `php/authGuard.php`

### Worker marketplace

- [Worker search](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerSearch.php): `pages/customerSearch.php`
- [Worker details](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerView.php): `pages/customerView.php`
- [Saved workers](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerSaved.php): `pages/customerSaved.php`
- [Worker lookup](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/components/fetchWorkers.php): `components/fetchWorkers.php`
- [Customer dashboard](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customer.php): `pages/customer.php`

### Booking operations

- [Customer bookings](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/customerBooking.php): `pages/customerBooking.php`
- [Worker dashboard](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/worker.php): `pages/worker.php`
- [Schedule and services](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/workerSchedule.php): `pages/workerSchedule.php`
- [Manage bookings](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/workerBooking.php): `pages/workerBooking.php`
- [Email and OTP](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/emailHandler.php): `php/emailHandler.php`

### Administration

- [Admin dashboard](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/admin.php): `pages/admin.php`
- [Worker administration](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/adminWorker.php): `pages/adminWorker.php`
- [Customer administration](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/pages/adminCustomer.php): `pages/adminCustomer.php`
- [Document endpoint](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/API/document.php): `API/document.php`
- [Worker documents](https://github.com/sayujyamaharjan/sa-proposal-artipera/tree/main/uploads/worker_documents): `uploads/worker_documents`

### Other components

- **Customer**
- **Worker**
- **Administrator**
- **SMTP mail service**
- [Application database](https://github.com/sayujyamaharjan/sa-proposal-artipera/blob/main/php/artipera%20(1).sql): `php/artipera (1).sql`

## Connections

- Customer → Sign up and login: registers or signs in
- Sign up and login → OTP page: continues verification
- OTP page → OTP API: submits OTP
- OTP API → OTP verification: dispatches verification
- OTP verification → Application database: creates user
- Customer → Worker search: searches workers
- Worker search → Worker lookup: requests worker data
- Worker lookup → Application database: reads workers and ratings
- Administrator → Worker administration: reviews workers
- Worker administration → Worker lookup: loads worker list
- Worker administration → Application database: reads worker records
- Customer → Worker details: views worker
- Customer → Saved workers: manages saved workers
- Customer → Customer bookings: views bookings
- Worker → Worker dashboard: views dashboard
- Worker → Schedule and services: manages schedule and services
- Schedule and services → Application database: reads and updates schedule data
- Worker → Manage bookings: manages booking
- Manage bookings → Application database: reads and updates bookings
- Manage bookings → Email and OTP: requests completion OTP
- Email and OTP → SMTP mail service: sends email
- Administrator → Admin dashboard: opens dashboard
- Administrator → Customer administration: manages customers
- Document endpoint → Worker documents
