# ayushkumar77737/dhyan-attandance architecture

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

- Interactive diagram: https://gitdiagram.com/ayushkumar77737/dhyan-attandance
- Repository: https://github.com/ayushkumar77737/dhyan-attandance

## Overview

This repository is a React attendance and community-management application with admin and user experiences, Firebase-backed records, and a serverless Firebase Admin API for MFA. The main flow routes a visitor to login, applies protected and MFA gates, then presents role-oriented dashboards and feature pages that read or change application records. Documented routes and sampled components establish those broad stages; many feature pages were not sampled, so their internal calls and finer dependencies are not asserted.

Main entry points: [`src/App.jsx`](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/App.jsx) (Route application), [`src/firebase/firebase.js`](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/firebase/firebase.js) (Firebase client), [`src/pages/AdminDashboard.jsx`](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AdminDashboard.jsx) (Admin dashboard), [`src/pages/UserDashboard.jsx`](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/UserDashboard.jsx) (User dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["App routing"]
  node_app["Route application<br/>[App.jsx]"]
end

subgraph group_identity["Identity and security"]
  node_login["Sign in<br/>[Login.jsx]"]
  node_protected["Auth gate<br/>[ProtectedRoute.jsx]"]
  node_mfa_gate["MFA gate"]
  node_mfa_pages["MFA setup / verify"]
  node_mfa_client["MFA API client<br/>[mfa.js]"]
  node_mfa_api["MFA endpoints"]
  node_auto_logout["Idle logout<br/>[useAutoLogout.js]"]
end

subgraph group_workflows["User workflows"]
  node_user_dash["User dashboard<br/>[UserDashboard.jsx]"]
  node_attendance["Attendance"]
  node_leave["Leave management"]
  node_ids["ID registration<br/>[IdRegistration.jsx]"]
  node_notifications["Notifications<br/>[Notifications.jsx]"]
  node_support["Support tickets"]
end

subgraph group_administration["Admin operations"]
  node_admin_dash["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_profiles["Profiles and users<br/>[AllProfiles.jsx]"]
  node_feedback["Session feedback"]
  node_activity_pages["Activity logs<br/>[ActivityLogs.jsx]"]
  node_access["Access control<br/>[accessControl.js]"]
end

subgraph group_platform["Data and services"]
  node_admin_api["Firebase Admin adapter<br/>[firebaseAdmin.js]"]
  node_activity_log["Activity logger<br/>[logActivity.js]"]
  node_admin_log["Admin action logger<br/>[logAdminAction.js]"]
  node_firebase["Firebase client<br/>[firebase.js]"]
  node_firestore[("Firestore")]
end

node_visitor(("Visitor / member / admin"))

node_visitor -->|"opens"| node_app
node_app -->|"routes to"| node_login
node_app -->|"guards routes"| node_protected
node_app -->|"guards admin"| node_mfa_gate
node_app -->|"routes to"| node_admin_dash
node_app -->|"routes to"| node_user_dash
node_app -->|"routes to"| node_attendance
node_app -->|"routes to"| node_leave
node_app -->|"routes to"| node_profiles
node_app -->|"routes to"| node_ids
node_app -->|"routes to"| node_notifications
node_app -->|"routes to"| node_support
node_app -->|"routes to"| node_feedback
node_mfa_gate -->|"checks status"| node_mfa_client
node_mfa_pages -.->|"uses MFA API"| node_mfa_client
node_mfa_client -->|"HTTP requests"| node_mfa_api
node_mfa_api -->|"uses admin SDK"| node_admin_api
node_admin_dash -->|"reads records"| node_firebase
node_user_dash -->|"reads records"| node_firebase
node_attendance -.->|"uses Firebase"| node_firebase
node_leave -->|"uses Firebase"| node_firebase
node_profiles -->|"uses Firebase"| node_firebase
node_notifications -.->|"uses Firebase"| node_firebase
node_support -->|"reads records"| node_firebase
node_feedback -->|"reads / deletes"| node_firebase
node_activity_pages -->|"uses Firebase"| node_firebase
node_admin_dash -->|"checks access"| node_access
node_admin_dash -->|"starts timer"| node_auto_logout
node_user_dash -->|"starts timer"| node_auto_logout
node_auto_logout -->|"records logout"| node_activity_log
node_activity_log -->|"writes logs"| node_firebase
node_admin_log -->|"writes logs"| node_firebase
node_feedback -->|"records deletion"| node_admin_log
node_firebase -->|"connects"| node_firestore

click node_app "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/App.jsx"
click node_login "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/Login.jsx"
click node_protected "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/components/ProtectedRoute.jsx"
click node_mfa_gate "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/components/MFAProtectedRoute.jsx"
click node_mfa_pages "https://github.com/ayushkumar77737/dhyan-attandance/tree/main/src/pages"
click node_mfa_client "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/mfa.js"
click node_mfa_api "https://github.com/ayushkumar77737/dhyan-attandance/tree/main/api/auth"
click node_admin_api "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/api/auth/firebaseAdmin.js"
click node_admin_dash "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AdminDashboard.jsx"
click node_user_dash "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/UserDashboard.jsx"
click node_attendance "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/SmartAttendance.jsx"
click node_leave "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AbsenceManagement.jsx"
click node_profiles "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AllProfiles.jsx"
click node_ids "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/IdRegistration.jsx"
click node_notifications "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/Notifications.jsx"
click node_support "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/TicketingSupport.jsx"
click node_feedback "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/SessionFeedbacks.jsx"
click node_activity_pages "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/ActivityLogs.jsx"
click node_access "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/accessControl.js"
click node_auto_logout "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/hooks/useAutoLogout.js"
click node_activity_log "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/logActivity.js"
click node_admin_log "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/logAdminAction.js"
click node_firebase "https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/firebase/firebase.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 toneBlue
class node_login,node_protected,node_mfa_gate,node_mfa_pages,node_mfa_client,node_mfa_api,node_auto_logout toneAmber
class node_user_dash,node_attendance,node_leave,node_ids,node_notifications,node_support toneMint
class node_admin_dash,node_profiles,node_feedback,node_activity_pages,node_access toneRose
class node_admin_api,node_activity_log,node_admin_log,node_firebase,node_firestore,node_visitor toneIndigo
```

## Components

### App routing

- [Route application](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/App.jsx): `src/App.jsx`

### Identity and security

- [Sign in](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/Login.jsx): `src/pages/Login.jsx`
- [Auth gate](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/components/ProtectedRoute.jsx): `src/components/ProtectedRoute.jsx`
- [MFA gate](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/components/MFAProtectedRoute.jsx): `src/components/MFAProtectedRoute.jsx`
- [MFA setup / verify](https://github.com/ayushkumar77737/dhyan-attandance/tree/main/src/pages): `src/pages`
- [MFA API client](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/mfa.js): `src/utils/mfa.js`
- [MFA endpoints](https://github.com/ayushkumar77737/dhyan-attandance/tree/main/api/auth): `api/auth`
- [Idle logout](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/hooks/useAutoLogout.js): `src/hooks/useAutoLogout.js`

### User workflows

- [User dashboard](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/UserDashboard.jsx): `src/pages/UserDashboard.jsx`
- [Attendance](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/SmartAttendance.jsx): `src/pages/SmartAttendance.jsx`
- [Leave management](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AbsenceManagement.jsx): `src/pages/AbsenceManagement.jsx`
- [ID registration](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/IdRegistration.jsx): `src/pages/IdRegistration.jsx`
- [Notifications](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/Notifications.jsx): `src/pages/Notifications.jsx`
- [Support tickets](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/TicketingSupport.jsx): `src/pages/TicketingSupport.jsx`

### Admin operations

- [Admin dashboard](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AdminDashboard.jsx): `src/pages/AdminDashboard.jsx`
- [Profiles and users](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/AllProfiles.jsx): `src/pages/AllProfiles.jsx`
- [Session feedback](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/SessionFeedbacks.jsx): `src/pages/SessionFeedbacks.jsx`
- [Activity logs](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/pages/ActivityLogs.jsx): `src/pages/ActivityLogs.jsx`
- [Access control](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/accessControl.js): `src/utils/accessControl.js`

### Data and services

- [Firebase Admin adapter](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/api/auth/firebaseAdmin.js): `api/auth/firebaseAdmin.js`
- [Activity logger](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/logActivity.js): `src/utils/logActivity.js`
- [Admin action logger](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/utils/logAdminAction.js): `src/utils/logAdminAction.js`
- [Firebase client](https://github.com/ayushkumar77737/dhyan-attandance/blob/main/src/firebase/firebase.js): `src/firebase/firebase.js`
- **Firestore**

### Other components

- **Visitor / member / admin**

## Connections

- Visitor / member / admin → Route application: opens
- Route application → Sign in: routes to (evidence: `src/App.jsx`)
- Route application → Auth gate: guards routes (evidence: `src/App.jsx`)
- Route application → MFA gate: guards admin (evidence: `src/App.jsx`)
- Route application → Admin dashboard: routes to (evidence: `src/App.jsx`)
- Route application → User dashboard: routes to (evidence: `src/App.jsx`)
- Route application → Attendance: routes to (evidence: `src/App.jsx`)
- Route application → Leave management: routes to (evidence: `src/App.jsx`)
- Route application → Profiles and users: routes to (evidence: `src/App.jsx`)
- Route application → ID registration: routes to (evidence: `src/App.jsx`)
- Route application → Notifications: routes to (evidence: `src/App.jsx`)
- Route application → Support tickets: routes to (evidence: `src/App.jsx`)
- Route application → Session feedback: routes to (evidence: `src/App.jsx`)
- MFA gate → MFA API client: checks status (evidence: `src/components/MFAProtectedRoute.jsx`)
- MFA setup / verify → MFA API client: uses MFA API
- MFA API client → MFA endpoints: HTTP requests (evidence: `src/utils/mfa.js`)
- MFA endpoints → Firebase Admin adapter: uses admin SDK (evidence: `api/auth/mfa-status.js`)
- Admin dashboard → Firebase client: reads records (evidence: `src/pages/AdminDashboard.jsx`)
- User dashboard → Firebase client: reads records (evidence: `src/pages/UserDashboard.jsx`)
- Attendance → Firebase client: uses Firebase (evidence: `src/pages/SmartAttendance.jsx`)
- Leave management → Firebase client: uses Firebase (evidence: `src/pages/AbsenceManagement.jsx`)
- Profiles and users → Firebase client: uses Firebase (evidence: `src/pages/AllProfiles.jsx`)
- Notifications → Firebase client: uses Firebase
- Support tickets → Firebase client: reads records (evidence: `src/pages/TicketingSupport.jsx`)
- Session feedback → Firebase client: reads / deletes (evidence: `src/pages/SessionFeedbacks.jsx`)
- Activity logs → Firebase client: uses Firebase (evidence: `src/pages/ActivityLogs.jsx`)
- Admin dashboard → Access control: checks access (evidence: `src/pages/AdminDashboard.jsx`)
- Admin dashboard → Idle logout: starts timer (evidence: `src/pages/AdminDashboard.jsx`)
- User dashboard → Idle logout: starts timer (evidence: `src/pages/UserDashboard.jsx`)
- Idle logout → Activity logger: records logout (evidence: `src/hooks/useAutoLogout.js`)
- Activity logger → Firebase client: writes logs (evidence: `src/utils/logActivity.js`)
- Admin action logger → Firebase client: writes logs (evidence: `src/utils/logAdminAction.js`)
- Session feedback → Admin action logger: records deletion (evidence: `src/pages/SessionFeedbacks.jsx`)
- Firebase client → Firestore: connects (evidence: `src/firebase/firebase.js`)
