# farhan-al-shahrier-siam/accio_doc architecture

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

- Interactive diagram: https://gitdiagram.com/farhan-al-shahrier-siam/accio_doc
- Repository: https://github.com/farhan-al-shahrier-siam/accio_doc

## Overview

AccioDoc is a doctor-discovery and appointment-booking web app. Users browse or search specialists, inspect a doctor’s profile and availability, submit a booking, then manage their profile and bookings in a dashboard; login and registration support access. The map includes the documented-by-source homepage sections, authentication, doctor listings/details, booking, and dashboard management. Several feature implementations are indexed but not excerpted, so inferred links are dashed; the backend API is external to this repository.

Main entry points: [`src/lib/data.js`](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/data.js) (Data access), [`src/lib/auth.js`](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/auth.js) (Auth service), [`src/app/(main)/dashboard/page.jsx`](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/dashboard/page.jsx) (Patient dashboard), [`src/app/(main)/all-appointment/page.jsx`](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/all-appointment/page.jsx) (Specialist listing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Discovery and presentation"]
  node_home["Home page<br/>[page.js]"]
  node_banner["Home banner<br/>[Banner.jsx]"]
  node_home_sections["Home sections"]
  node_navigation["Shared navigation<br/>[Navbar.jsx]"]
  node_footer["Shared footer<br/>[Footer.jsx]"]
end

subgraph group_appointments["Appointment workflows"]
  node_specialist_page["Specialist listing<br/>[page.jsx]"]
  node_search_field["Doctor search<br/>[Searchfield.jsx]"]
  node_doctor_list["Doctor list<br/>[DoctorList.jsx]"]
  node_doctor_card["Doctor card<br/>[DoctorCard.jsx]"]
  node_search_results["Search results<br/>[page.jsx]"]
  node_doctor_detail["Doctor details<br/>[page.jsx]"]
  node_booking["Booking form<br/>[BookingModal.jsx]"]
  node_dashboard["Patient dashboard<br/>[page.jsx]"]
  node_profile["Profile management<br/>[ProfileCard.jsx]"]
  node_profile_edit["Profile editor<br/>[EditModal.jsx]"]
  node_bookings_list["My bookings<br/>[MyBookings.jsx]"]
  node_booking_card["Booking management<br/>[BookingCard.jsx]"]
  node_booking_edit["Booking editor"]
  node_booking_delete["Booking deletion<br/>[DeleteBTN.jsx]"]
end

subgraph group_identity["Identity and access"]
  node_login["Login page<br/>[page.jsx]"]
  node_register["Registration page<br/>[page.jsx]"]
  node_auth_client["Auth client<br/>[auth-client.js]"]
  node_auth_server["Auth service<br/>[auth.js]"]
  node_auth_route["Auth API route<br/>[route.js]"]
  node_proxy["Access proxy<br/>[proxy.js]"]
end

subgraph group_services["Data and integrations"]
  node_data_access["Data access<br/>[data.js]"]
  node_doctor_api{{"Doctor and appointment API"}}
  node_mongo[("MongoDB")]
end

node_patient(("Patient"))

node_home -->|"renders"| node_banner
node_home -->|"renders"| node_home_sections
node_patient -.->|"opens"| node_home
node_patient -.->|"browses"| node_specialist_page
node_specialist_page -->|"renders"| node_search_field
node_specialist_page -->|"renders"| node_doctor_list
node_search_field -->|"redirects"| node_search_results
node_search_results -.->|"renders"| node_doctor_card
node_doctor_list -->|"renders"| node_doctor_card
node_doctor_list -.->|"loads doctors"| node_data_access
node_search_results -.->|"searches doctors"| node_data_access
node_doctor_detail -->|"loads doctor"| node_data_access
node_doctor_detail -.->|"renders"| node_booking
node_booking -.->|"uses session"| node_auth_client
node_data_access -->|"fetches"| node_doctor_api
node_patient -.->|"signs in"| node_login
node_patient -.->|"registers"| node_register
node_login -.->|"authenticates"| node_auth_client
node_register -.->|"creates account"| node_auth_client
node_auth_route -->|"dispatches to"| node_auth_server
node_auth_server -->|"stores identity"| node_mongo
node_dashboard -->|"gets session"| node_auth_server
node_dashboard -->|"renders"| node_profile
node_dashboard -->|"renders"| node_bookings_list
node_profile -->|"opens editor"| node_profile_edit
node_bookings_list -->|"renders"| node_booking_card
node_booking_card -->|"opens editor"| node_booking_edit
node_booking_card -->|"offers deletion"| node_booking_delete
node_bookings_list -.->|"loads bookings"| node_data_access
node_proxy -.->|"checks access"| node_auth_server

click node_home "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/page.js"
click node_banner "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/home/Banner.jsx"
click node_home_sections "https://github.com/farhan-al-shahrier-siam/accio_doc/tree/main/src/components/home"
click node_navigation "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/shared/Navbar.jsx"
click node_footer "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/shared/Footer.jsx"
click node_specialist_page "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/all-appointment/page.jsx"
click node_search_field "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/Searchfield.jsx"
click node_doctor_list "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/DoctorList.jsx"
click node_doctor_card "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/DoctorCard.jsx"
click node_search_results "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/search/%5Bname%5D/page.jsx"
click node_doctor_detail "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/details/%5Bid%5D/page.jsx"
click node_booking "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/detailsPage/BookingModal.jsx"
click node_dashboard "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/dashboard/page.jsx"
click node_profile "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/ProfileCard.jsx"
click node_profile_edit "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/EditModal.jsx"
click node_bookings_list "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/MyBookings.jsx"
click node_booking_card "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/BookingCard.jsx"
click node_booking_edit "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/EditBookingModal.jsx"
click node_booking_delete "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/DeleteBTN.jsx"
click node_login "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(auth)/login/page.jsx"
click node_register "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(auth)/register/page.jsx"
click node_auth_client "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/auth-client.js"
click node_auth_server "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/auth.js"
click node_auth_route "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/api/auth/%5B...all%5D/route.js"
click node_proxy "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/proxy.js"
click node_data_access "https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/data.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_home,node_banner,node_home_sections,node_navigation,node_footer toneBlue
class node_specialist_page,node_search_field,node_doctor_list,node_doctor_card,node_search_results,node_doctor_detail,node_booking,node_dashboard,node_profile,node_profile_edit,node_bookings_list,node_booking_card,node_booking_edit,node_booking_delete toneAmber
class node_login,node_register,node_auth_client,node_auth_server,node_auth_route,node_proxy toneMint
class node_data_access,node_doctor_api,node_mongo toneRose
class node_patient toneIndigo
```

## Components

### Discovery and presentation

- [Home page](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/page.js): `src/app/(main)/page.js`
- [Home banner](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/home/Banner.jsx): `src/components/home/Banner.jsx`
- [Home sections](https://github.com/farhan-al-shahrier-siam/accio_doc/tree/main/src/components/home): `src/components/home`
- [Shared navigation](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/shared/Navbar.jsx): `src/components/shared/Navbar.jsx`
- [Shared footer](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/shared/Footer.jsx): `src/components/shared/Footer.jsx`

### Appointment workflows

- [Specialist listing](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/all-appointment/page.jsx): `src/app/(main)/all-appointment/page.jsx`
- [Doctor search](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/Searchfield.jsx): `src/components/all-appointment/Searchfield.jsx`
- [Doctor list](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/DoctorList.jsx): `src/components/all-appointment/DoctorList.jsx`
- [Doctor card](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/all-appointment/DoctorCard.jsx): `src/components/all-appointment/DoctorCard.jsx`
- [Search results](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/search/%5Bname%5D/page.jsx): `src/app/(main)/search/[name]/page.jsx`
- [Doctor details](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/details/%5Bid%5D/page.jsx): `src/app/(main)/details/[id]/page.jsx`
- [Booking form](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/detailsPage/BookingModal.jsx): `src/components/detailsPage/BookingModal.jsx`
- [Patient dashboard](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(main)/dashboard/page.jsx): `src/app/(main)/dashboard/page.jsx`
- [Profile management](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/ProfileCard.jsx): `src/components/dashboard/ProfileCard.jsx`
- [Profile editor](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/EditModal.jsx): `src/components/dashboard/EditModal.jsx`
- [My bookings](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/MyBookings.jsx): `src/components/dashboard/MyBookings.jsx`
- [Booking management](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/BookingCard.jsx): `src/components/dashboard/BookingCard.jsx`
- [Booking editor](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/EditBookingModal.jsx): `src/components/dashboard/EditBookingModal.jsx`
- [Booking deletion](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/components/dashboard/DeleteBTN.jsx): `src/components/dashboard/DeleteBTN.jsx`

### Identity and access

- [Login page](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(auth)/login/page.jsx): `src/app/(auth)/login/page.jsx`
- [Registration page](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/(auth)/register/page.jsx): `src/app/(auth)/register/page.jsx`
- [Auth client](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/auth-client.js): `src/lib/auth-client.js`
- [Auth service](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/auth.js): `src/lib/auth.js`
- [Auth API route](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/app/api/auth/%5B...all%5D/route.js): `src/app/api/auth/[...all]/route.js`
- [Access proxy](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/proxy.js): `src/proxy.js`

### Data and integrations

- [Data access](https://github.com/farhan-al-shahrier-siam/accio_doc/blob/main/src/lib/data.js): `src/lib/data.js`
- **Doctor and appointment API**
- **MongoDB**

### Other components

- **Patient**

## Connections

- Home page → Home banner: renders (evidence: `src/app/(main)/page.js`)
- Home page → Home sections: renders (evidence: `src/app/(main)/page.js`)
- Patient → Home page: opens
- Patient → Specialist listing: browses
- Specialist listing → Doctor search: renders (evidence: `src/app/(main)/all-appointment/page.jsx`)
- Specialist listing → Doctor list: renders (evidence: `src/app/(main)/all-appointment/page.jsx`)
- Doctor search → Search results: redirects (evidence: `src/components/all-appointment/Searchfield.jsx`)
- Search results → Doctor card: renders (evidence: `src/app/(main)/search/[name]/page.jsx`)
- Doctor list → Doctor card: renders (evidence: `src/components/all-appointment/DoctorList.jsx`)
- Doctor list → Data access: loads doctors (evidence: `src/components/all-appointment/DoctorList.jsx`)
- Search results → Data access: searches doctors (evidence: `src/app/(main)/search/[name]/page.jsx`)
- Doctor details → Data access: loads doctor (evidence: `src/app/(main)/details/[id]/page.jsx`)
- Doctor details → Booking form: renders (evidence: `src/app/(main)/details/[id]/page.jsx`)
- Booking form → Auth client: uses session (evidence: `src/components/detailsPage/BookingModal.jsx`)
- Data access → Doctor and appointment API: fetches (evidence: `src/lib/data.js`)
- Patient → Login page: signs in
- Patient → Registration page: registers
- Login page → Auth client: authenticates (evidence: `src/app/(auth)/login/page.jsx`)
- Registration page → Auth client: creates account (evidence: `src/app/(auth)/register/page.jsx`)
- Auth API route → Auth service: dispatches to (evidence: `src/app/api/auth/[...all]/route.js`)
- Auth service → MongoDB: stores identity (evidence: `src/lib/auth.js`)
- Patient dashboard → Auth service: gets session (evidence: `src/app/(main)/dashboard/page.jsx`)
- Patient dashboard → Profile management: renders (evidence: `src/app/(main)/dashboard/page.jsx`)
- Patient dashboard → My bookings: renders (evidence: `src/app/(main)/dashboard/page.jsx`)
- Profile management → Profile editor: opens editor (evidence: `src/components/dashboard/ProfileCard.jsx`)
- My bookings → Booking management: renders (evidence: `src/components/dashboard/MyBookings.jsx`)
- Booking management → Booking editor: opens editor (evidence: `src/components/dashboard/BookingCard.jsx`)
- Booking management → Booking deletion: offers deletion (evidence: `src/components/dashboard/BookingCard.jsx`)
- My bookings → Data access: loads bookings (evidence: `src/components/dashboard/MyBookings.jsx`)
- Access proxy → Auth service: checks access (evidence: `src/proxy.js`)
