# youbhoy/final-final-project-g architecture

> Architecture diagram of the GitHub repository youbhoy/final-final-project-g, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/youbhoy/final-final-project-g
- Repository: https://github.com/youbhoy/final-final-project-g

## Overview

SPARTAN-G is a student wellbeing platform with web and mobile experiences for students and facilitators, plus a web-only administrator portal. The user journey spans account access, assessments, appointment booking, messaging, and support resources; facilitators monitor students and risk alerts, while administrators manage users, campuses, privacy, resources, and statistics. Shared services provide Firebase-backed data access, and cloud functions handle selected booking and assessment workflows. Source excerpts show some internal calls; unsampled feature connections are omitted where their wiring cannot be verified.

Main entry points: [`spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx) (Admin Routes), [`spartan-g/packages/shared-services/src/services/assessment.service.ts`](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/assessment.service.ts) (Assessment Service), [`spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx`](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx) (Web Portal Routes), [`spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx`](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx) (Facilitator Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Portals"]
  node_web_routes["Web Portal Routes"]
  node_facilitator_routes["Facilitator Routes"]
  node_admin_routes["Admin Routes"]
  node_auth_hook["Web Authentication<br/>[useAuth.tsx]"]
end

subgraph group_support["Student Support"]
  node_web_assessment["Assessment Wizard"]
  node_appointment_booking["Appointment Booking"]
  node_facilitator_risk["Risk Alerts"]
  node_resources["Resource Library"]
  node_messaging["Messaging"]
end

subgraph group_admin["Administration"]
  node_admin_stats["Platform Statistics"]
  node_admin_privacy["Privacy Management"]
  node_admin_users["User Administration<br/>[AdminUsersPage.tsx]"]
end

subgraph group_services["Shared Services"]
  node_assessment_service["Assessment Service"]
  node_booking_window["Booking Window Rules<br/>[bookingWindow.ts]"]
  node_auth_service["Authentication Service<br/>[auth.service.ts]"]
  node_user_repo["User Repository<br/>[user.repository.ts]"]
  node_assessment_repo["Assessment Repositories"]
  node_response_repo["Assessment Response Repository"]
  node_base_repo["Repository Base<br/>[base.repository.ts]"]
  node_storage_service["File Storage Service<br/>[storage.service.ts]"]
end

subgraph group_backend["Firebase Backend"]
  node_firestore[("Firestore Access<br/>[firestore.ts]")]
  node_firebase_app["Firebase App<br/>[app.ts]"]
  node_firebase_storage["Firebase Storage Access<br/>[storage.ts]"]
  node_assessment_summary["Assessment Summary Function"]
end

node_student(("Student"))
node_facilitator(("Facilitator"))
node_administrator(("Administrator"))

node_student -->|"uses portal"| node_web_routes
node_facilitator -->|"uses portal"| node_facilitator_routes
node_administrator -->|"uses portal"| node_admin_routes
node_web_routes -->|"routes to"| node_web_assessment
node_web_routes -->|"routes to"| node_resources
node_facilitator_routes -->|"routes to"| node_facilitator_risk
node_facilitator_routes -->|"routes to"| node_resources
node_admin_routes -->|"routes to"| node_admin_stats
node_admin_routes -->|"routes to"| node_admin_privacy
node_admin_routes -->|"routes to"| node_admin_users
node_auth_hook -.->|"uses auth logic"| node_auth_service
node_assessment_service -->|"reads and writes"| node_assessment_repo
node_assessment_service -->|"reads and writes"| node_response_repo
node_assessment_service -->|"reads user"| node_user_repo
node_appointment_booking -->|"checks window"| node_booking_window
node_assessment_summary -.->|"uses scoring"| node_assessment_service
node_auth_service -->|"reads and writes"| node_user_repo
node_auth_service -.->|"uses Firebase auth"| node_firestore
node_assessment_repo -.->|"inherits"| node_base_repo
node_response_repo -->|"inherits"| node_base_repo
node_base_repo -->|"reads and writes"| node_firestore
node_firestore -->|"initializes from"| node_firebase_app
node_firebase_storage -->|"initializes from"| node_firebase_app
node_storage_service -->|"uploads and deletes"| node_firebase_storage

click node_web_routes "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx"
click node_facilitator_routes "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx"
click node_admin_routes "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx"
click node_auth_hook "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/hooks/useAuth.tsx"
click node_web_assessment "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/assessment/AssessmentWizardPage.tsx"
click node_assessment_service "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/assessment.service.ts"
click node_appointment_booking "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/appointmentBooking.ts"
click node_booking_window "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/bookingWindow.ts"
click node_facilitator_risk "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/facilitator/FacilitatorRiskAlertsPage.tsx"
click node_resources "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/components/resources/ResourcesBrowsePage.tsx"
click node_messaging "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/messaging/StudentMessagesPage.tsx"
click node_admin_stats "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminStatisticsPage.tsx"
click node_admin_privacy "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminPrivacyPage.tsx"
click node_admin_users "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminUsersPage.tsx"
click node_auth_service "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/auth.service.ts"
click node_user_repo "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/user.repository.ts"
click node_assessment_repo "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/assessment.repository.ts"
click node_response_repo "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/assessment-response.repository.ts"
click node_base_repo "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/base.repository.ts"
click node_firestore "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/firestore.ts"
click node_firebase_app "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/app.ts"
click node_firebase_storage "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/storage.ts"
click node_storage_service "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/storage.service.ts"
click node_assessment_summary "https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/assessmentSummary.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_web_routes,node_facilitator_routes,node_admin_routes,node_auth_hook toneBlue
class node_web_assessment,node_appointment_booking,node_facilitator_risk,node_resources,node_messaging toneAmber
class node_admin_stats,node_admin_privacy,node_admin_users toneMint
class node_assessment_service,node_booking_window,node_auth_service,node_user_repo,node_assessment_repo,node_response_repo,node_base_repo,node_storage_service toneRose
class node_firestore,node_firebase_app,node_firebase_storage,node_assessment_summary,node_student,node_facilitator,node_administrator toneIndigo
```

## Components

### Access and Portals

- [Web Portal Routes](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx): `spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx`
- [Facilitator Routes](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx): `spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx`
- [Admin Routes](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx): `spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`
- [Web Authentication](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/hooks/useAuth.tsx): `spartan-g/apps/web/src/hooks/useAuth.tsx`

### Student Support

- [Assessment Wizard](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/assessment/AssessmentWizardPage.tsx): `spartan-g/apps/web/src/pages/assessment/AssessmentWizardPage.tsx`
- [Appointment Booking](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/appointmentBooking.ts): `spartan-g/firebase/functions/src/appointmentBooking.ts`
- [Risk Alerts](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/facilitator/FacilitatorRiskAlertsPage.tsx): `spartan-g/apps/web/src/pages/facilitator/FacilitatorRiskAlertsPage.tsx`
- [Resource Library](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/components/resources/ResourcesBrowsePage.tsx): `spartan-g/apps/web/src/components/resources/ResourcesBrowsePage.tsx`
- [Messaging](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/messaging/StudentMessagesPage.tsx): `spartan-g/apps/web/src/pages/messaging/StudentMessagesPage.tsx`

### Administration

- [Platform Statistics](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminStatisticsPage.tsx): `spartan-g/apps/web/src/pages/admin/AdminStatisticsPage.tsx`
- [Privacy Management](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminPrivacyPage.tsx): `spartan-g/apps/web/src/pages/admin/AdminPrivacyPage.tsx`
- [User Administration](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/apps/web/src/pages/admin/AdminUsersPage.tsx): `spartan-g/apps/web/src/pages/admin/AdminUsersPage.tsx`

### Shared Services

- [Assessment Service](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/assessment.service.ts): `spartan-g/packages/shared-services/src/services/assessment.service.ts`
- [Booking Window Rules](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/bookingWindow.ts): `spartan-g/firebase/functions/src/bookingWindow.ts`
- [Authentication Service](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/auth.service.ts): `spartan-g/packages/shared-services/src/services/auth.service.ts`
- [User Repository](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/user.repository.ts): `spartan-g/packages/shared-services/src/repositories/user.repository.ts`
- [Assessment Repositories](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/assessment.repository.ts): `spartan-g/packages/shared-services/src/repositories/assessment.repository.ts`
- [Assessment Response Repository](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/assessment-response.repository.ts): `spartan-g/packages/shared-services/src/repositories/assessment-response.repository.ts`
- [Repository Base](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/repositories/base.repository.ts): `spartan-g/packages/shared-services/src/repositories/base.repository.ts`
- [File Storage Service](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/services/storage.service.ts): `spartan-g/packages/shared-services/src/services/storage.service.ts`

### Firebase Backend

- [Firestore Access](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/firestore.ts): `spartan-g/packages/shared-services/src/firebase/firestore.ts`
- [Firebase App](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/app.ts): `spartan-g/packages/shared-services/src/firebase/app.ts`
- [Firebase Storage Access](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/packages/shared-services/src/firebase/storage.ts): `spartan-g/packages/shared-services/src/firebase/storage.ts`
- [Assessment Summary Function](https://github.com/youbhoy/final-final-project-g/blob/main/spartan-g/firebase/functions/src/assessmentSummary.ts): `spartan-g/firebase/functions/src/assessmentSummary.ts`

### Other components

- **Student**
- **Facilitator**
- **Administrator**

## Connections

- Student → Web Portal Routes: uses portal (evidence: `spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx`)
- Facilitator → Facilitator Routes: uses portal (evidence: `spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx`)
- Administrator → Admin Routes: uses portal (evidence: `spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`)
- Web Portal Routes → Assessment Wizard: routes to (evidence: `spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx`)
- Web Portal Routes → Resource Library: routes to (evidence: `spartan-g/apps/web/src/navigation/StudentPortalRoutes.tsx`)
- Facilitator Routes → Risk Alerts: routes to (evidence: `spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx`)
- Facilitator Routes → Resource Library: routes to (evidence: `spartan-g/apps/web/src/navigation/FacilitatorPortalRoutes.tsx`)
- Admin Routes → Platform Statistics: routes to (evidence: `spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`)
- Admin Routes → Privacy Management: routes to (evidence: `spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`)
- Admin Routes → User Administration: routes to (evidence: `spartan-g/apps/web/src/navigation/SuperAdminPortalRoutes.tsx`)
- Web Authentication → Authentication Service: uses auth logic
- Assessment Service → Assessment Repositories: reads and writes (evidence: `spartan-g/packages/shared-services/src/services/assessment.service.ts`)
- Assessment Service → Assessment Response Repository: reads and writes (evidence: `spartan-g/packages/shared-services/src/services/assessment.service.ts`)
- Assessment Service → User Repository: reads user (evidence: `spartan-g/packages/shared-services/src/services/assessment.service.ts`)
- Appointment Booking → Booking Window Rules: checks window (evidence: `spartan-g/firebase/functions/src/appointmentBooking.ts`)
- Assessment Summary Function → Assessment Service: uses scoring
- Authentication Service → User Repository: reads and writes (evidence: `spartan-g/packages/shared-services/src/services/auth.service.ts`)
- Authentication Service → Firestore Access: uses Firebase auth
- Assessment Repositories → Repository Base: inherits
- Assessment Response Repository → Repository Base: inherits (evidence: `spartan-g/packages/shared-services/src/repositories/assessment-response.repository.ts`)
- Repository Base → Firestore Access: reads and writes (evidence: `spartan-g/packages/shared-services/src/repositories/base.repository.ts`)
- Firestore Access → Firebase App: initializes from (evidence: `spartan-g/packages/shared-services/src/firebase/firestore.ts`)
- Firebase Storage Access → Firebase App: initializes from (evidence: `spartan-g/packages/shared-services/src/firebase/storage.ts`)
- File Storage Service → Firebase Storage Access: uploads and deletes (evidence: `spartan-g/packages/shared-services/src/services/storage.service.ts`)
