# jalikoa/mau architecture

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

- Interactive diagram: https://gitdiagram.com/jalikoa/mau
- Repository: https://github.com/jalikoa/mau

## Overview

MAU EDUSPACE is a university learning community for asking and answering questions, sharing study materials, and managing student accounts. The principal flow is a student browsing questions, opening a question, and contributing an answer or comment; a separate materials flow supports browsing and submitting resources, with pending materials exposed to administrators for moderation. Account, activity, and administration features are also represented. Source excerpts confirm some question, authentication, and material-preview behavior; other route capabilities are inferred from the repository tree and API route catalog, so uncertain wiring is omitted.

Main entry points: [`lib/api.ts`](https://github.com/jalikoa/mau/blob/main/lib/api.ts) (API facade), [`app/questions/page.tsx`](https://github.com/jalikoa/mau/blob/main/app/questions/page.tsx) (Question browsing), [`app/question/[id]/page.tsx`](https://github.com/jalikoa/mau/blob/main/app/question/%5Bid%5D/page.tsx) (Question discussion), [`app/materials/page.tsx`](https://github.com/jalikoa/mau/blob/main/app/materials/page.tsx) (Material library)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_community["Q&amp;A Community"]
  node_question_browse["Question browsing<br/>[page.tsx]"]
  node_question_detail["Question discussion<br/>[page.tsx]"]
  node_ask_question["Ask question<br/>[page.tsx]"]
  node_tags_departments["Tags and departments<br/>[page.tsx]"]
  node_personal_activity["Personal activity<br/>[page.tsx]"]
end

subgraph group_materials["Study Materials"]
  node_material_browse["Material library<br/>[page.tsx]"]
  node_department_materials["Department materials<br/>[page.tsx]"]
  node_material_submit["Submit material<br/>[page.tsx]"]
  node_material_preview["PDF preview"]
end

subgraph group_accounts["Accounts"]
  node_auth["Authentication state<br/>[auth-provider.tsx]"]
  node_account_routes["Account and profile<br/>[page.tsx]"]
  node_settings["Account settings<br/>[page.tsx]"]
  node_notifications["Notifications<br/>[notifications.ts]"]
end

subgraph group_operations["Administration"]
  node_admin_routes["Admin console<br/>[page.tsx]"]
  node_material_moderation["Material moderation<br/>[page.tsx]"]
end

node_student(("Student"))
node_api_facade["API facade<br/>[api.ts]"]
node_api_routes["API route map<br/>[apiClient.ts]"]
node_backend{{"EDUSPACE API"}}

node_student -->|"browses"| node_question_browse
node_question_browse -->|"opens question"| node_question_detail
node_student -->|"submits question"| node_ask_question
node_student -->|"browses"| node_material_browse
node_material_browse -->|"previews PDF"| node_material_preview
node_student -->|"submits resource"| node_material_submit
node_student -->|"signs in"| node_auth
node_auth -->|"calls auth"| node_api_facade
node_question_detail -->|"loads and updates"| node_api_facade
node_api_facade -->|"uses routes"| node_api_routes
node_api_routes -->|"targets API"| node_backend
node_student -->|"manages profile"| node_account_routes
node_student -->|"updates settings"| node_settings
node_student -->|"views activity"| node_personal_activity
node_student -->|"discovers topics"| node_tags_departments
node_student -->|"browses by department"| node_department_materials
node_admin_routes -->|"reviews pending"| node_material_moderation
node_material_moderation -->|"moderates materials"| node_api_facade

click node_question_browse "https://github.com/jalikoa/mau/blob/main/app/questions/page.tsx"
click node_question_detail "https://github.com/jalikoa/mau/blob/main/app/question/%5Bid%5D/page.tsx"
click node_ask_question "https://github.com/jalikoa/mau/blob/main/app/ask/page.tsx"
click node_tags_departments "https://github.com/jalikoa/mau/blob/main/app/tags/page.tsx"
click node_personal_activity "https://github.com/jalikoa/mau/blob/main/app/activity/page.tsx"
click node_material_browse "https://github.com/jalikoa/mau/blob/main/app/materials/page.tsx"
click node_department_materials "https://github.com/jalikoa/mau/blob/main/app/departments/%5Bid%5D/materials/page.tsx"
click node_material_submit "https://github.com/jalikoa/mau/blob/main/app/submit-material/page.tsx"
click node_material_preview "https://github.com/jalikoa/mau/blob/main/components/material-preview.tsx"
click node_auth "https://github.com/jalikoa/mau/blob/main/components/auth-provider.tsx"
click node_account_routes "https://github.com/jalikoa/mau/blob/main/app/profile/page.tsx"
click node_settings "https://github.com/jalikoa/mau/blob/main/app/settings/page.tsx"
click node_notifications "https://github.com/jalikoa/mau/blob/main/lib/notifications.ts"
click node_admin_routes "https://github.com/jalikoa/mau/blob/main/app/admin/page.tsx"
click node_material_moderation "https://github.com/jalikoa/mau/blob/main/app/admin/materials/pending/page.tsx"
click node_api_facade "https://github.com/jalikoa/mau/blob/main/lib/api.ts"
click node_api_routes "https://github.com/jalikoa/mau/blob/main/lib/apiClient.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_question_browse,node_question_detail,node_ask_question,node_tags_departments,node_personal_activity toneBlue
class node_material_browse,node_department_materials,node_material_submit,node_material_preview toneAmber
class node_auth,node_account_routes,node_settings,node_notifications,node_api_facade,node_api_routes,node_backend toneMint
class node_admin_routes,node_material_moderation toneRose
class node_student toneIndigo
```

## Components

### Q&A Community

- [Question browsing](https://github.com/jalikoa/mau/blob/main/app/questions/page.tsx): `app/questions/page.tsx`
- [Question discussion](https://github.com/jalikoa/mau/blob/main/app/question/%5Bid%5D/page.tsx): `app/question/[id]/page.tsx`
- [Ask question](https://github.com/jalikoa/mau/blob/main/app/ask/page.tsx): `app/ask/page.tsx`
- [Tags and departments](https://github.com/jalikoa/mau/blob/main/app/tags/page.tsx): `app/tags/page.tsx`
- [Personal activity](https://github.com/jalikoa/mau/blob/main/app/activity/page.tsx): `app/activity/page.tsx`

### Study Materials

- [Material library](https://github.com/jalikoa/mau/blob/main/app/materials/page.tsx): `app/materials/page.tsx`
- [Department materials](https://github.com/jalikoa/mau/blob/main/app/departments/%5Bid%5D/materials/page.tsx): `app/departments/[id]/materials/page.tsx`
- [Submit material](https://github.com/jalikoa/mau/blob/main/app/submit-material/page.tsx): `app/submit-material/page.tsx`
- [PDF preview](https://github.com/jalikoa/mau/blob/main/components/material-preview.tsx): `components/material-preview.tsx`

### Accounts

- [Authentication state](https://github.com/jalikoa/mau/blob/main/components/auth-provider.tsx): `components/auth-provider.tsx`
- [Account and profile](https://github.com/jalikoa/mau/blob/main/app/profile/page.tsx): `app/profile/page.tsx`
- [Account settings](https://github.com/jalikoa/mau/blob/main/app/settings/page.tsx): `app/settings/page.tsx`
- [Notifications](https://github.com/jalikoa/mau/blob/main/lib/notifications.ts): `lib/notifications.ts`

### Administration

- [Admin console](https://github.com/jalikoa/mau/blob/main/app/admin/page.tsx): `app/admin/page.tsx`
- [Material moderation](https://github.com/jalikoa/mau/blob/main/app/admin/materials/pending/page.tsx): `app/admin/materials/pending/page.tsx`

### Other components

- **Student**
- [API facade](https://github.com/jalikoa/mau/blob/main/lib/api.ts): `lib/api.ts`
- [API route map](https://github.com/jalikoa/mau/blob/main/lib/apiClient.ts): `lib/apiClient.ts`
- **EDUSPACE API**

## Connections

- Student → Question browsing: browses
- Question browsing → Question discussion: opens question
- Student → Ask question: submits question
- Student → Material library: browses
- Material library → PDF preview: previews PDF
- Student → Submit material: submits resource
- Student → Authentication state: signs in
- Authentication state → API facade: calls auth
- Question discussion → API facade: loads and updates
- API facade → API route map: uses routes
- API route map → EDUSPACE API: targets API
- Student → Account and profile: manages profile
- Student → Account settings: updates settings
- Student → Personal activity: views activity
- Student → Tags and departments: discovers topics
- Student → Department materials: browses by department
- Admin console → Material moderation: reviews pending
- Material moderation → API facade: moderates materials
