# priyabattula211/attendanceportal architecture

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

- Interactive diagram: https://gitdiagram.com/priyabattula211/attendanceportal
- Repository: https://github.com/priyabattula211/attendanceportal

## Overview

MITRA is an institute portal with student/admin sign-in, role-based workspaces, event browsing and registration, and an attendance dashboard. The sampled dashboard stores attendance records in browser local storage; it does not show attendance being submitted to the API. The backend event workflow is clearer: routes apply authorization where required and dispatch to handlers that read or write Supabase. Some frontend pages and the API service were not sampled, so their internal wiring is left out.

Main entry points: [`frontend/src/App.jsx`](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/App.jsx) (Routes and access), [`frontend/src/context/AuthContext.jsx`](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/context/AuthContext.jsx) (Auth context), [`backend/src/routes/eventRoutes.js`](https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/routes/eventRoutes.js) (Event routes), [`frontend/src/main.jsx`](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/main.jsx) (React entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Portal frontend"]
  node_entry["React entry<br/>[main.jsx]"]
  node_app["Routes and access<br/>[App.jsx]"]
  node_home["Home page<br/>[Home.jsx]"]
  node_login["Login page<br/>[Login.jsx]"]
  node_register["Registration page<br/>[Register.jsx]"]
  node_eventcard["Event card<br/>[EventCard.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and profiles"]
  node_auth_context["Auth context<br/>[AuthContext.jsx]"]
  node_firebase_client["Firebase client<br/>[firebaseClient.js]"]
end

subgraph group_events["Event API"]
  node_express_app["Express app<br/>[app.js]"]
  node_event_routes["Event routes<br/>[eventRoutes.js]"]
  node_auth_middleware["API authorization<br/>[authMiddleware.js]"]
  node_event_controller["Event handlers<br/>[eventController.js]"]
end

subgraph group_attendance["Attendance workspace"]
  node_dashboard["Role dashboard<br/>[Dashboard.jsx]"]
  node_browser_storage[("Browser local storage")]
end

node_visitor(("Student or admin"))
node_firebase[("Firebase Auth and Firestore")]
node_supabase[("Supabase auth and data")]

node_visitor -->|"opens portal"| node_entry
node_entry -->|"renders"| node_app
node_app -->|"provides auth"| node_auth_context
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_register
node_app -->|"guards and routes"| node_dashboard
node_auth_context -->|"uses"| node_firebase_client
node_firebase_client -->|"initializes"| node_firebase
node_auth_context -->|"reads profile and auth state"| node_firebase
node_dashboard -->|"reads and writes records"| node_browser_storage
node_home -.->|"renders events"| node_eventcard
node_api_client -.->|"API requests"| node_express_app
node_express_app -->|"mounts at /api/events"| node_event_routes
node_event_routes -->|"protects selected routes"| node_auth_middleware
node_event_routes -->|"dispatches handlers"| node_event_controller
node_auth_middleware -->|"verifies tokens and reads profiles"| node_supabase
node_event_controller -->|"reads and writes events and registrations"| node_supabase

click node_entry "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/main.jsx"
click node_app "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/App.jsx"
click node_home "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Home.jsx"
click node_login "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Login.jsx"
click node_register "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Register.jsx"
click node_eventcard "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/components/EventCard.jsx"
click node_api_client "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/services/api.js"
click node_auth_context "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/context/AuthContext.jsx"
click node_firebase_client "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/services/firebaseClient.js"
click node_dashboard "https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Dashboard.jsx"
click node_express_app "https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/app.js"
click node_event_routes "https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/routes/eventRoutes.js"
click node_auth_middleware "https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/middleware/authMiddleware.js"
click node_event_controller "https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/controllers/eventController.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_entry,node_app,node_home,node_login,node_register,node_eventcard,node_api_client toneBlue
class node_auth_context,node_firebase_client,node_firebase,node_supabase toneAmber
class node_express_app,node_event_routes,node_auth_middleware,node_event_controller toneMint
class node_dashboard,node_browser_storage toneRose
class node_visitor toneIndigo
```

## Components

### Portal frontend

- [React entry](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [Routes and access](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Home page](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [Login page](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Registration page](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Register.jsx): `frontend/src/pages/Register.jsx`
- [Event card](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/components/EventCard.jsx): `frontend/src/components/EventCard.jsx`
- [API client](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Identity and profiles

- [Auth context](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Firebase client](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/services/firebaseClient.js): `frontend/src/services/firebaseClient.js`

### Event API

- [Express app](https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/app.js): `backend/src/app.js`
- [Event routes](https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/routes/eventRoutes.js): `backend/src/routes/eventRoutes.js`
- [API authorization](https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/middleware/authMiddleware.js): `backend/src/middleware/authMiddleware.js`
- [Event handlers](https://github.com/priyabattula211/attendanceportal/blob/main/backend/src/controllers/eventController.js): `backend/src/controllers/eventController.js`

### Attendance workspace

- [Role dashboard](https://github.com/priyabattula211/attendanceportal/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- **Browser local storage**

### Other components

- **Student or admin**
- **Firebase Auth and Firestore**
- **Supabase auth and data**

## Connections

- Student or admin → React entry: opens portal
- React entry → Routes and access: renders
- Routes and access → Auth context: provides auth
- Routes and access → Home page: routes to
- Routes and access → Login page: routes to
- Routes and access → Registration page: routes to
- Routes and access → Role dashboard: guards and routes
- Auth context → Firebase client: uses
- Firebase client → Firebase Auth and Firestore: initializes
- Auth context → Firebase Auth and Firestore: reads profile and auth state
- Role dashboard → Browser local storage: reads and writes records
- Home page → Event card: renders events
- API client → Express app: API requests
- Express app → Event routes: mounts at /api/events
- Event routes → API authorization: protects selected routes
- Event routes → Event handlers: dispatches handlers
- API authorization → Supabase auth and data: verifies tokens and reads profiles
- Event handlers → Supabase auth and data: reads and writes events and registrations
