# diwakarawasthi45/denvora architecture

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

- Interactive diagram: https://gitdiagram.com/diwakarawasthi45/denvora
- Repository: https://github.com/diwakarawasthi45/denvora

## Overview

Denvora is a multi-clinic dental practice management application. Clinic staff use the dashboard to manage patients, appointments and the live queue, alongside operational modules such as billing, inventory, lab cases, staff and reporting; patients have a separate portal and public booking flow. Sampled routes show tenant-context and validation before service calls, while sampled service code confirms database-backed authentication and onboarding. The README is only the default Next.js template, so product capabilities are inferred from the repository tree; unsampled service wiring is not asserted.

Main entry points: [`src/services/auth.service.ts`](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/auth.service.ts) (Authentication), [`src/app/api/appointments/route.ts`](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/appointments/route.ts) (Appointments API), [`src/app/api/queue/[id]/transition/route.ts`](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/queue/%5Bid%5D/transition/route.ts) (Queue API), [`src/app/api/patients/route.ts`](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/patients/route.ts) (Patients API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experiences"]
  node_dashboard["Clinic dashboard<br/>[page.tsx]"]
  node_patient_ui["Patient portal<br/>[page.tsx]"]
  node_booking_ui["Public booking<br/>[page.tsx]"]
end

subgraph group_routes["Application routes"]
  node_appointments_api["Appointments API<br/>[route.ts]"]
  node_queue_api["Queue API<br/>[route.ts]"]
  node_patients_api["Patients API<br/>[route.ts]"]
  node_users_api["Users API<br/>[route.ts]"]
  node_booking_api["Booking API<br/>[route.ts]"]
  node_inventory_api["Inventory API<br/>[route.ts]"]
  node_lab_api["Lab API<br/>[route.ts]"]
  node_recalls_api["Recalls API<br/>[route.ts]"]
  node_leads_api["Leads API<br/>[route.ts]"]
  node_expenses_api["Expenses API<br/>[route.ts]"]
end

subgraph group_services["Domain services"]
  node_appointment_service["Appointment service"]
  node_queue_service["Queue service<br/>[queue.service.ts]"]
  node_patient_service["Patient service<br/>[patient.service.ts]"]
  node_user_service["User service<br/>[user.service.ts]"]
  node_booking_service["Booking service"]
  node_inventory_service["Inventory service"]
  node_lab_service["Lab service<br/>[lab.service.ts]"]
  node_recall_service["Recall service<br/>[recall.service.ts]"]
  node_lead_service["Lead service<br/>[lead.service.ts]"]
  node_expense_service["Expense service<br/>[expense.service.ts]"]
  node_auth_service["Authentication<br/>[auth.service.ts]"]
end

subgraph group_data["Persistence"]
  node_database[("MongoDB<br/>[db.ts]")]
  node_user_model[("User records<br/>[User.ts]")]
  node_token_model[("Verification tokens")]
end

node_staff(("Clinic staff"))
node_patient(("Patient"))

node_staff -->|"uses"| node_dashboard
node_patient -->|"uses"| node_patient_ui
node_patient -->|"books through"| node_booking_ui
node_appointments_api -->|"calls"| node_appointment_service
node_queue_api -->|"calls"| node_queue_service
node_patients_api -->|"calls"| node_patient_service
node_users_api -->|"calls"| node_user_service
node_booking_api -->|"handles booking"| node_booking_service
node_inventory_api -->|"calls"| node_inventory_service
node_lab_api -->|"calls"| node_lab_service
node_recalls_api -->|"calls"| node_recall_service
node_leads_api -->|"calls"| node_lead_service
node_expenses_api -->|"calls"| node_expense_service
node_auth_service -->|"connects"| node_database
node_auth_service -->|"reads and writes"| node_user_model
node_auth_service -->|"creates tokens"| node_token_model

click node_dashboard "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/dashboard/page.tsx"
click node_patient_ui "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/portal/page.tsx"
click node_booking_ui "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/(frontend)/booking/page.tsx"
click node_appointments_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/appointments/route.ts"
click node_queue_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/queue/%5Bid%5D/transition/route.ts"
click node_patients_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/patients/route.ts"
click node_users_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/users/route.ts"
click node_booking_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/public/booking/route.ts"
click node_inventory_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/inventory/route.ts"
click node_lab_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/lab/route.ts"
click node_recalls_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/recalls/route.ts"
click node_leads_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/leads/route.ts"
click node_expenses_api "https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/expenses/route.ts"
click node_appointment_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/appointment.service.ts"
click node_queue_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/queue.service.ts"
click node_patient_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/patient.service.ts"
click node_user_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/user.service.ts"
click node_booking_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/public-booking.service.ts"
click node_inventory_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/inventory.service.ts"
click node_lab_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/lab.service.ts"
click node_recall_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/recall.service.ts"
click node_lead_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/lead.service.ts"
click node_expense_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/expense.service.ts"
click node_auth_service "https://github.com/diwakarawasthi45/denvora/blob/main/src/services/auth.service.ts"
click node_database "https://github.com/diwakarawasthi45/denvora/blob/main/src/lib/db.ts"
click node_user_model "https://github.com/diwakarawasthi45/denvora/blob/main/src/models/User.ts"
click node_token_model "https://github.com/diwakarawasthi45/denvora/blob/main/src/models/VerificationToken.ts"

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_dashboard,node_patient_ui,node_booking_ui toneBlue
class node_appointments_api,node_queue_api,node_patients_api,node_users_api,node_booking_api,node_inventory_api,node_lab_api,node_recalls_api,node_leads_api,node_expenses_api toneAmber
class node_appointment_service,node_queue_service,node_patient_service,node_user_service,node_booking_service,node_inventory_service,node_lab_service,node_recall_service,node_lead_service,node_expense_service,node_auth_service toneMint
class node_database,node_user_model,node_token_model toneRose
class node_staff,node_patient toneIndigo
```

## Components

### User experiences

- [Clinic dashboard](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/dashboard/page.tsx): `src/app/dashboard/page.tsx`
- [Patient portal](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/portal/page.tsx): `src/app/portal/page.tsx`
- [Public booking](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/(frontend)/booking/page.tsx): `src/app/(frontend)/booking/page.tsx`

### Application routes

- [Appointments API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/appointments/route.ts): `src/app/api/appointments/route.ts`
- [Queue API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/queue/%5Bid%5D/transition/route.ts): `src/app/api/queue/[id]/transition/route.ts`
- [Patients API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/patients/route.ts): `src/app/api/patients/route.ts`
- [Users API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/users/route.ts): `src/app/api/users/route.ts`
- [Booking API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/public/booking/route.ts): `src/app/api/public/booking/route.ts`
- [Inventory API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/inventory/route.ts): `src/app/api/inventory/route.ts`
- [Lab API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/lab/route.ts): `src/app/api/lab/route.ts`
- [Recalls API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/recalls/route.ts): `src/app/api/recalls/route.ts`
- [Leads API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/leads/route.ts): `src/app/api/leads/route.ts`
- [Expenses API](https://github.com/diwakarawasthi45/denvora/blob/main/src/app/api/expenses/route.ts): `src/app/api/expenses/route.ts`

### Domain services

- [Appointment service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/appointment.service.ts): `src/services/appointment.service.ts`
- [Queue service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/queue.service.ts): `src/services/queue.service.ts`
- [Patient service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/patient.service.ts): `src/services/patient.service.ts`
- [User service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/user.service.ts): `src/services/user.service.ts`
- [Booking service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/public-booking.service.ts): `src/services/public-booking.service.ts`
- [Inventory service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/inventory.service.ts): `src/services/inventory.service.ts`
- [Lab service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/lab.service.ts): `src/services/lab.service.ts`
- [Recall service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/recall.service.ts): `src/services/recall.service.ts`
- [Lead service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/lead.service.ts): `src/services/lead.service.ts`
- [Expense service](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/expense.service.ts): `src/services/expense.service.ts`
- [Authentication](https://github.com/diwakarawasthi45/denvora/blob/main/src/services/auth.service.ts): `src/services/auth.service.ts`

### Persistence

- [MongoDB](https://github.com/diwakarawasthi45/denvora/blob/main/src/lib/db.ts): `src/lib/db.ts`
- [User records](https://github.com/diwakarawasthi45/denvora/blob/main/src/models/User.ts): `src/models/User.ts`
- [Verification tokens](https://github.com/diwakarawasthi45/denvora/blob/main/src/models/VerificationToken.ts): `src/models/VerificationToken.ts`

### Other components

- **Clinic staff**
- **Patient**

## Connections

- Clinic staff → Clinic dashboard: uses
- Patient → Patient portal: uses
- Patient → Public booking: books through
- Appointments API → Appointment service: calls
- Queue API → Queue service: calls
- Patients API → Patient service: calls
- Users API → User service: calls
- Booking API → Booking service: handles booking
- Inventory API → Inventory service: calls
- Lab API → Lab service: calls
- Recalls API → Recall service: calls
- Leads API → Lead service: calls
- Expenses API → Expense service: calls
- Authentication → MongoDB: connects
- Authentication → User records: reads and writes
- Authentication → Verification tokens: creates tokens
