# daiki0918/cosmocare architecture

> Architecture diagram of the GitHub repository daiki0918/cosmocare, 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/daiki0918/cosmocare
- Repository: https://github.com/daiki0918/cosmocare

## Overview

CosmoCare is a chapel guest-assistance platform: customers sign in, submit and track service requests, while staff manage requests and administrators oversee services, accounts, reports, and support. The frontend routes users by role and uses a shared API client; sampled files show its HTTP calls, but backend internals and storage relationships are not visible in the excerpts, so the API-to-server link is left unverified.

Main entry points: [`frontend/src/App.jsx`](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/App.jsx) (App Router), [`frontend/src/pages/admin/AdminDashboard.jsx`](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/AdminDashboard.jsx) (Admin Workspace), [`frontend/src/api.js`](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/api.js) (API Client), [`frontend/src/pages/customer/CustomerHomes.jsx`](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/customer/CustomerHomes.jsx) (Request & Tracking)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Role Routing"]
  node_app["App Router<br/>[App.jsx]"]
end

subgraph group_customer["Guest Assistance"]
  node_customer_login["Customer Login<br/>[CustomerLogin.jsx]"]
  node_customer_home["Request &amp; Tracking<br/>[CustomerHomes.jsx]"]
  node_help_chat["Help Chat"]
end

subgraph group_operations["Staff Operations"]
  node_staff_login["Staff Login<br/>[StaffLogin.jsx]"]
  node_staff_dashboard["Staff Workspace<br/>[StaffDashboard.jsx]"]
end

subgraph group_admin["Administration"]
  node_admin_login["Admin Login<br/>[LoginPage.jsx]"]
  node_admin_dashboard["Admin Workspace<br/>[AdminDashboard.jsx]"]
  node_accounts["Staff Accounts<br/>[StaffAccounts.jsx]"]
  node_reports["Reports<br/>[Reports.jsx]"]
  node_activity["Activity Logs<br/>[ActivityLogs.jsx]"]
  node_settings["Admin Settings<br/>[AdminSettings.jsx]"]
end

subgraph group_shared["Shared Client"]
  node_sound_control["Sound Control"]
  node_sound["Request Chime<br/>[requestSound.js]"]
  node_api["API Client<br/>[api.js]"]
  node_backend["Backend Server<br/>[server.js]"]
end

node_visitor(("User"))

node_visitor -->|"opens app"| node_app
node_app -->|"routes to"| node_customer_login
node_app -->|"routes to"| node_customer_home
node_app -->|"routes to"| node_staff_login
node_app -->|"routes to"| node_staff_dashboard
node_app -->|"routes to"| node_admin_login
node_app -->|"routes to"| node_admin_dashboard
node_customer_login -->|"authenticates via"| node_api
node_staff_login -->|"authenticates via"| node_api
node_admin_login -->|"authenticates via"| node_api
node_customer_home -->|"requests data"| node_api
node_customer_home -->|"renders"| node_help_chat
node_staff_dashboard -->|"manages requests"| node_api
node_admin_dashboard -->|"manages records"| node_api
node_admin_dashboard -->|"renders"| node_accounts
node_admin_dashboard -->|"renders"| node_reports
node_admin_dashboard -->|"renders"| node_activity
node_admin_dashboard -->|"renders"| node_settings
node_accounts -->|"manages accounts"| node_api
node_staff_dashboard -->|"renders"| node_sound_control
node_admin_dashboard -->|"renders"| node_sound_control
node_sound_control -->|"activates"| node_sound
node_api -.->|"sends HTTP requests"| node_backend

click node_app "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/App.jsx"
click node_customer_login "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/customer/CustomerLogin.jsx"
click node_customer_home "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/customer/CustomerHomes.jsx"
click node_help_chat "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/CustomerHelpChat.jsx"
click node_staff_login "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/staff/StaffLogin.jsx"
click node_staff_dashboard "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/staff/StaffDashboard.jsx"
click node_admin_login "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/LoginPage.jsx"
click node_admin_dashboard "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/AdminDashboard.jsx"
click node_accounts "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/StaffAccounts.jsx"
click node_reports "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/Reports.jsx"
click node_activity "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/ActivityLogs.jsx"
click node_settings "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/AdminSettings.jsx"
click node_sound_control "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/RequestSoundControl.jsx"
click node_sound "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/requestSound.js"
click node_api "https://github.com/daiki0918/cosmocare/blob/main/frontend/src/api.js"
click node_backend "https://github.com/daiki0918/cosmocare/blob/main/backend/server.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_app,node_visitor toneBlue
class node_customer_login,node_customer_home,node_help_chat toneAmber
class node_staff_login,node_staff_dashboard toneMint
class node_admin_login,node_admin_dashboard,node_accounts,node_reports,node_activity,node_settings toneRose
class node_sound_control,node_sound,node_api,node_backend toneIndigo
```

## Components

### Role Routing

- [App Router](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`

### Guest Assistance

- [Customer Login](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/customer/CustomerLogin.jsx): `frontend/src/pages/customer/CustomerLogin.jsx`
- [Request & Tracking](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/customer/CustomerHomes.jsx): `frontend/src/pages/customer/CustomerHomes.jsx`
- [Help Chat](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/CustomerHelpChat.jsx): `frontend/src/CustomerHelpChat.jsx`

### Staff Operations

- [Staff Login](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/staff/StaffLogin.jsx): `frontend/src/pages/staff/StaffLogin.jsx`
- [Staff Workspace](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/staff/StaffDashboard.jsx): `frontend/src/pages/staff/StaffDashboard.jsx`

### Administration

- [Admin Login](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/LoginPage.jsx): `frontend/src/pages/admin/LoginPage.jsx`
- [Admin Workspace](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/AdminDashboard.jsx): `frontend/src/pages/admin/AdminDashboard.jsx`
- [Staff Accounts](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/StaffAccounts.jsx): `frontend/src/pages/admin/StaffAccounts.jsx`
- [Reports](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/Reports.jsx): `frontend/src/pages/admin/Reports.jsx`
- [Activity Logs](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/ActivityLogs.jsx): `frontend/src/pages/admin/ActivityLogs.jsx`
- [Admin Settings](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/pages/admin/AdminSettings.jsx): `frontend/src/pages/admin/AdminSettings.jsx`

### Shared Client

- [Sound Control](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/RequestSoundControl.jsx): `frontend/src/RequestSoundControl.jsx`
- [Request Chime](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/requestSound.js): `frontend/src/requestSound.js`
- [API Client](https://github.com/daiki0918/cosmocare/blob/main/frontend/src/api.js): `frontend/src/api.js`
- [Backend Server](https://github.com/daiki0918/cosmocare/blob/main/backend/server.js): `backend/server.js`

### Other components

- **User**

## Connections

- User → App Router: opens app
- App Router → Customer Login: routes to (evidence: `frontend/src/App.jsx`)
- App Router → Request & Tracking: routes to (evidence: `frontend/src/App.jsx`)
- App Router → Staff Login: routes to (evidence: `frontend/src/App.jsx`)
- App Router → Staff Workspace: routes to (evidence: `frontend/src/App.jsx`)
- App Router → Admin Login: routes to (evidence: `frontend/src/App.jsx`)
- App Router → Admin Workspace: routes to (evidence: `frontend/src/App.jsx`)
- Customer Login → API Client: authenticates via (evidence: `frontend/src/pages/customer/CustomerLogin.jsx`)
- Staff Login → API Client: authenticates via (evidence: `frontend/src/pages/staff/StaffLogin.jsx`)
- Admin Login → API Client: authenticates via (evidence: `frontend/src/pages/admin/LoginPage.jsx`)
- Request & Tracking → API Client: requests data (evidence: `frontend/src/pages/customer/CustomerHomes.jsx`)
- Request & Tracking → Help Chat: renders (evidence: `frontend/src/pages/customer/CustomerHomes.jsx`)
- Staff Workspace → API Client: manages requests (evidence: `frontend/src/pages/staff/StaffDashboard.jsx`)
- Admin Workspace → API Client: manages records (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Admin Workspace → Staff Accounts: renders (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Admin Workspace → Reports: renders (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Admin Workspace → Activity Logs: renders (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Admin Workspace → Admin Settings: renders (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Staff Accounts → API Client: manages accounts (evidence: `frontend/src/pages/admin/StaffAccounts.jsx`)
- Staff Workspace → Sound Control: renders (evidence: `frontend/src/pages/staff/StaffDashboard.jsx`)
- Admin Workspace → Sound Control: renders (evidence: `frontend/src/pages/admin/AdminDashboard.jsx`)
- Sound Control → Request Chime: activates (evidence: `frontend/src/RequestSoundControl.jsx`)
- API Client → Backend Server: sends HTTP requests
