# imansoleiman/unify architecture

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

- Interactive diagram: https://gitdiagram.com/imansoleiman/unify
- Repository: https://github.com/imansoleiman/unify
- Video tour (about a minute): https://gitdiagram.com/imansoleiman/unify/video

## Overview

UniFy is a university academic-workflow platform spanning role-based dashboards, attendance, lecture processing, task planning, collaboration, and institution onboarding. The main user journey is through the React app into role-specific workspaces; the documented lecture path transcribes recorded audio and then summarizes the transcript. Source excerpts confirm the app routing, auth state, lecture-task steps, attendance session requests, and access-request calls. Other product capabilities are represented from the README and tree, but their internal wiring is not inferred where source was not sampled.

Main entry points: [`frontend/src/components/ProtectedRoute.jsx`](https://github.com/imansoleiman/unify/blob/main/frontend/src/components/ProtectedRoute.jsx) (Role guards), [`frontend/src/features/dashboards/StudentDashboard/Student.jsx`](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/Student.jsx) (Student workspace), [`frontend/src/features/dashboards/InstructorDashboard/Instructor.jsx`](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/Instructor.jsx) (Instructor workspace), [`backend/accounts/tasks.py`](https://github.com/imansoleiman/unify/blob/main/backend/accounts/tasks.py) (Audio transcription)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["App routing<br/>[App.jsx]"]
  node_auth["Auth state<br/>[AuthContext.jsx]"]
  node_protected["Role guards<br/>[ProtectedRoute.jsx]"]
  node_student["Student workspace<br/>[Student.jsx]"]
  node_instructor["Instructor workspace<br/>[Instructor.jsx]"]
  node_admin["Admin workspaces<br/>[Admin.jsx]"]
  node_superadmin["Super-admin workspace<br/>[SuperAdmin.jsx]"]
end

subgraph group_academic["Academic workflows"]
  node_attendance["Live attendance"]
  node_attendance_records["Attendance records"]
  node_lecture_ui["Lecture summaries"]
  node_tasks["Task planner<br/>[TaskManagement.jsx]"]
  node_collaboration["Student collaboration"]
  node_assistant["Student AI assistant<br/>[AiAssistant.jsx]"]
  node_classwork["Course classwork"]
end

subgraph group_institution["University administration"]
  node_university_admin["University management<br/>[AllCourses.jsx]"]
  node_access_request["Access requests<br/>[RequestAccess.jsx]"]
end

subgraph group_services["Backend services"]
  node_transcription["Audio transcription<br/>[tasks.py]"]
  node_summarization["Transcript summarization<br/>[tasks.py]"]
  node_records[("Academic records<br/>[models.py]")]
  node_api["Accounts API<br/>[views.py]"]
  node_celery["Background tasks<br/>[celery.py]"]
end

subgraph group_integrations["External integrations"]
  node_redis["Redis broker"]
  node_whisper["faster-whisper"]
  node_ollama["Ollama Llama 3"]
  node_mysql[("MySQL")]
  node_email["Demo email"]
  node_university_lookup["University lookup"]
end

node_user(("University user"))

node_user -->|"uses"| node_app
node_app -->|"provides auth"| node_auth
node_app -->|"guards routes"| node_protected
node_protected -->|"routes students"| node_student
node_protected -->|"routes instructors"| node_instructor
node_protected -->|"routes admins"| node_admin
node_protected -->|"routes super-admins"| node_superadmin
node_instructor -->|"starts sessions"| node_attendance
node_attendance -->|"sends requests"| node_api
node_instructor -->|"manages lectures"| node_lecture_ui
node_celery -->|"runs task"| node_transcription
node_transcription -->|"transcribes audio"| node_whisper
node_transcription -->|"saves transcript"| node_records
node_transcription -->|"dispatches task"| node_summarization
node_summarization -->|"reads transcript"| node_records
node_summarization -->|"requests summary"| node_ollama
node_summarization -->|"saves summary"| node_records
node_instructor -->|"manages tasks"| node_tasks
node_student -->|"manages tasks"| node_tasks
node_student -->|"collaborates"| node_collaboration
node_student -->|"gets study help"| node_assistant
node_student -->|"accesses classwork"| node_classwork
node_admin -->|"manages university"| node_university_admin
node_user -->|"requests access"| node_access_request
node_access_request -->|"submits request"| node_api
node_access_request -.->|"looks up universities"| node_university_lookup
node_api -.->|"sends review request"| node_email
node_api -->|"persists records"| node_mysql
node_celery -->|"uses broker"| node_redis

click node_app "https://github.com/imansoleiman/unify/blob/main/frontend/src/App.jsx"
click node_auth "https://github.com/imansoleiman/unify/blob/main/frontend/src/context/AuthContext.jsx"
click node_protected "https://github.com/imansoleiman/unify/blob/main/frontend/src/components/ProtectedRoute.jsx"
click node_student "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/Student.jsx"
click node_instructor "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/Instructor.jsx"
click node_admin "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/AdminDashboard/Admin.jsx"
click node_superadmin "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/SuperAdminDashboard/SuperAdmin.jsx"
click node_attendance "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/InstructorCourseDetailed/InstructorSession.jsx"
click node_attendance_records "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/AttendanceRecords/AttendaceRecords.jsx"
click node_lecture_ui "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/LectureSummary/LectureSummaries.jsx"
click node_transcription "https://github.com/imansoleiman/unify/blob/main/backend/accounts/tasks.py"
click node_summarization "https://github.com/imansoleiman/unify/blob/main/backend/accounts/tasks.py"
click node_records "https://github.com/imansoleiman/unify/blob/main/backend/accounts/models.py"
click node_tasks "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/TaskMangement/TaskManagement.jsx"
click node_collaboration "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/TaskManagement/CollaborationBoard.jsx"
click node_assistant "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/AiAssistant/AiAssistant.jsx"
click node_classwork "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/CourseDetail/StudentClasswork.jsx"
click node_university_admin "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/AdminDashboard/ManageCourses/AllCourses.jsx"
click node_access_request "https://github.com/imansoleiman/unify/blob/main/frontend/src/features/auth/RequestAccess.jsx"
click node_api "https://github.com/imansoleiman/unify/blob/main/backend/accounts/views.py"
click node_celery "https://github.com/imansoleiman/unify/blob/main/backend/backend/celery.py"

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,node_auth,node_protected,node_student,node_instructor,node_admin,node_superadmin,node_user toneBlue
class node_attendance,node_attendance_records,node_lecture_ui,node_tasks,node_collaboration,node_assistant,node_classwork toneAmber
class node_university_admin,node_access_request toneMint
class node_transcription,node_summarization,node_records,node_api,node_celery toneRose
class node_redis,node_whisper,node_ollama,node_mysql,node_email,node_university_lookup toneIndigo
```

## Components

### Web application

- [App routing](https://github.com/imansoleiman/unify/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/imansoleiman/unify/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Role guards](https://github.com/imansoleiman/unify/blob/main/frontend/src/components/ProtectedRoute.jsx): `frontend/src/components/ProtectedRoute.jsx`
- [Student workspace](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/Student.jsx): `frontend/src/features/dashboards/StudentDashboard/Student.jsx`
- [Instructor workspace](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/Instructor.jsx): `frontend/src/features/dashboards/InstructorDashboard/Instructor.jsx`
- [Admin workspaces](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/AdminDashboard/Admin.jsx): `frontend/src/features/dashboards/AdminDashboard/Admin.jsx`
- [Super-admin workspace](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/SuperAdminDashboard/SuperAdmin.jsx): `frontend/src/features/dashboards/SuperAdminDashboard/SuperAdmin.jsx`

### Academic workflows

- [Live attendance](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/InstructorCourseDetailed/InstructorSession.jsx): `frontend/src/features/dashboards/InstructorDashboard/InstructorCourseDetailed/InstructorSession.jsx`
- [Attendance records](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/AttendanceRecords/AttendaceRecords.jsx): `frontend/src/features/dashboards/InstructorDashboard/AttendanceRecords/AttendaceRecords.jsx`
- [Lecture summaries](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/LectureSummary/LectureSummaries.jsx): `frontend/src/features/dashboards/InstructorDashboard/LectureSummary/LectureSummaries.jsx`
- [Task planner](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/InstructorDashboard/TaskMangement/TaskManagement.jsx): `frontend/src/features/dashboards/InstructorDashboard/TaskMangement/TaskManagement.jsx`
- [Student collaboration](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/TaskManagement/CollaborationBoard.jsx): `frontend/src/features/dashboards/StudentDashboard/TaskManagement/CollaborationBoard.jsx`
- [Student AI assistant](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/AiAssistant/AiAssistant.jsx): `frontend/src/features/dashboards/StudentDashboard/AiAssistant/AiAssistant.jsx`
- [Course classwork](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/StudentDashboard/CourseDetail/StudentClasswork.jsx): `frontend/src/features/dashboards/StudentDashboard/CourseDetail/StudentClasswork.jsx`

### University administration

- [University management](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/dashboards/AdminDashboard/ManageCourses/AllCourses.jsx): `frontend/src/features/dashboards/AdminDashboard/ManageCourses/AllCourses.jsx`
- [Access requests](https://github.com/imansoleiman/unify/blob/main/frontend/src/features/auth/RequestAccess.jsx): `frontend/src/features/auth/RequestAccess.jsx`

### Backend services

- [Audio transcription](https://github.com/imansoleiman/unify/blob/main/backend/accounts/tasks.py): `backend/accounts/tasks.py`
- [Transcript summarization](https://github.com/imansoleiman/unify/blob/main/backend/accounts/tasks.py): `backend/accounts/tasks.py`
- [Academic records](https://github.com/imansoleiman/unify/blob/main/backend/accounts/models.py): `backend/accounts/models.py`
- [Accounts API](https://github.com/imansoleiman/unify/blob/main/backend/accounts/views.py): `backend/accounts/views.py`
- [Background tasks](https://github.com/imansoleiman/unify/blob/main/backend/backend/celery.py): `backend/backend/celery.py`

### External integrations

- **Redis broker**
- **faster-whisper**
- **Ollama Llama 3**
- **MySQL**
- **Demo email**
- **University lookup**

### Other components

- **University user**

## Connections

- University user → App routing: uses
- App routing → Auth state: provides auth
- App routing → Role guards: guards routes
- Role guards → Student workspace: routes students
- Role guards → Instructor workspace: routes instructors
- Role guards → Admin workspaces: routes admins
- Role guards → Super-admin workspace: routes super-admins
- Instructor workspace → Live attendance: starts sessions
- Live attendance → Accounts API: sends requests
- Instructor workspace → Lecture summaries: manages lectures
- Background tasks → Audio transcription: runs task
- Audio transcription → faster-whisper: transcribes audio
- Audio transcription → Academic records: saves transcript
- Audio transcription → Transcript summarization: dispatches task
- Transcript summarization → Academic records: reads transcript
- Transcript summarization → Ollama Llama 3: requests summary
- Transcript summarization → Academic records: saves summary
- Instructor workspace → Task planner: manages tasks
- Student workspace → Task planner: manages tasks
- Student workspace → Student collaboration: collaborates
- Student workspace → Student AI assistant: gets study help
- Student workspace → Course classwork: accesses classwork
- Admin workspaces → University management: manages university
- University user → Access requests: requests access
- Access requests → Accounts API: submits request
- Access requests → University lookup: looks up universities
- Accounts API → Demo email: sends review request
- Accounts API → MySQL: persists records
- Background tasks → Redis broker: uses broker
