# raoof128/syllabus-sync architecture

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

- Interactive diagram: https://gitdiagram.com/raoof128/syllabus-sync
- Repository: https://github.com/raoof128/syllabus-sync

## Overview

Syllabus Sync is a Macquarie University student platform for organizing academic work, finding campus destinations, and supporting engagement. Students authenticate, then use the dashboard and calendar to manage units, deadlines, events, and todos; map tools support campus search and routing, while gamification and notifications reinforce activity. The app’s API routes mediate access to Supabase and external services. README capabilities inform the high-level branches; sampled source confirms selected route, storage, profile, session, and navigation behavior, but not every feature’s wiring.

Main entry points: [`app/api/units/route.ts`](https://github.com/raoof128/syllabus-sync/blob/main/app/api/units/route.ts) (Academic APIs), [`features/map/components/MapClient.tsx`](https://github.com/raoof128/syllabus-sync/blob/main/features/map/components/MapClient.tsx) (Campus map), [`app/api/navigate/route.ts`](https://github.com/raoof128/syllabus-sync/blob/main/app/api/navigate/route.ts) (Route planning), [`app/api/auth`](https://github.com/raoof128/syllabus-sync/tree/main/app/api/auth) (Auth APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_planning["Academic planning"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_calendar["Academic calendar"]
  node_academicapi["Academic APIs<br/>[route.ts]"]
  node_academicstores["Academic stores"]
  node_profiles["Profile management"]
  node_feed["Events feed"]
end

subgraph group_campus["Campus services"]
  node_campusmap["Campus map<br/>[MapClient.tsx]"]
  node_navigation["Route planning<br/>[route.ts]"]
  node_mapsapi["Maps APIs"]
end

subgraph group_engagement["Engagement"]
  node_gamification["XP and streaks"]
  node_gamificationapi["Gamification API<br/>[route.ts]"]
  node_notifications["Notifications"]
  node_notificationapi["Notification APIs<br/>[route.ts]"]
end

subgraph group_platform["Platform services"]
  node_authui["Sign-in and MFA<br/>[page.tsx]"]
  node_authapi["Auth APIs"]
  node_authservice["Supabase Auth<br/>[server.ts]"]
  node_database[("Supabase database")]
  node_security["Security controls"]
  node_preferences["Settings and preferences"]
end

node_student(("Student"))
node_googlemaps["Google Maps"]

node_student -->|"signs in"| node_authui
node_authui -->|"requests auth"| node_authapi
node_authapi -->|"exchanges credentials"| node_authservice
node_authservice -->|"reads auth state"| node_database
node_student -->|"views"| node_dashboard
node_dashboard -->|"opens planning"| node_calendar
node_calendar -->|"loads academic data"| node_academicapi
node_academicapi -->|"reads and writes"| node_database
node_academicapi -->|"returns data"| node_academicstores
node_student -->|"manages profile"| node_profiles
node_profiles -->|"persists changes"| node_database
node_student -->|"browses events"| node_feed
node_student -->|"searches campus"| node_campusmap
node_campusmap -->|"searches places"| node_mapsapi
node_campusmap -->|"requests routes"| node_navigation
node_navigation -.->|"requests routing"| node_googlemaps
node_student -->|"checks progress"| node_gamification
node_gamification -->|"fetches progress"| node_gamificationapi
node_gamificationapi -->|"reads and updates"| node_database
node_student -->|"receives alerts"| node_notifications
node_notifications -->|"loads notifications"| node_notificationapi
node_notificationapi -->|"reads and updates"| node_database
node_authapi -->|"applies controls"| node_security
node_academicapi -->|"applies controls"| node_security
node_navigation -->|"checks access and limits"| node_security
node_student -->|"changes settings"| node_preferences
node_preferences -->|"persists preferences"| node_database

click node_authui "https://github.com/raoof128/syllabus-sync/blob/main/app/login/page.tsx"
click node_authapi "https://github.com/raoof128/syllabus-sync/tree/main/app/api/auth"
click node_authservice "https://github.com/raoof128/syllabus-sync/blob/main/lib/supabase/server.ts"
click node_dashboard "https://github.com/raoof128/syllabus-sync/blob/main/app/home/page.tsx"
click node_calendar "https://github.com/raoof128/syllabus-sync/tree/main/features/calendar"
click node_academicapi "https://github.com/raoof128/syllabus-sync/blob/main/app/api/units/route.ts"
click node_academicstores "https://github.com/raoof128/syllabus-sync/tree/main/lib/store"
click node_profiles "https://github.com/raoof128/syllabus-sync/tree/main/app/manage-profiles"
click node_feed "https://github.com/raoof128/syllabus-sync/tree/main/features/feed"
click node_campusmap "https://github.com/raoof128/syllabus-sync/blob/main/features/map/components/MapClient.tsx"
click node_navigation "https://github.com/raoof128/syllabus-sync/blob/main/app/api/navigate/route.ts"
click node_mapsapi "https://github.com/raoof128/syllabus-sync/tree/main/app/api/maps"
click node_gamification "https://github.com/raoof128/syllabus-sync/tree/main/features/gamification"
click node_gamificationapi "https://github.com/raoof128/syllabus-sync/blob/main/app/api/gamification/route.ts"
click node_notifications "https://github.com/raoof128/syllabus-sync/blob/main/lib/services/notificationService.ts"
click node_notificationapi "https://github.com/raoof128/syllabus-sync/blob/main/app/api/notifications/route.ts"
click node_security "https://github.com/raoof128/syllabus-sync/tree/main/lib/security"
click node_preferences "https://github.com/raoof128/syllabus-sync/tree/main/features/settings"

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_dashboard,node_calendar,node_academicapi,node_academicstores,node_profiles,node_feed toneBlue
class node_campusmap,node_navigation,node_mapsapi toneAmber
class node_gamification,node_gamificationapi,node_notifications,node_notificationapi toneMint
class node_authui,node_authapi,node_authservice,node_database,node_security,node_preferences toneRose
class node_student,node_googlemaps toneIndigo
```

## Components

### Academic planning

- [Dashboard](https://github.com/raoof128/syllabus-sync/blob/main/app/home/page.tsx): `app/home/page.tsx`
- [Academic calendar](https://github.com/raoof128/syllabus-sync/tree/main/features/calendar): `features/calendar`
- [Academic APIs](https://github.com/raoof128/syllabus-sync/blob/main/app/api/units/route.ts): `app/api/units/route.ts`
- [Academic stores](https://github.com/raoof128/syllabus-sync/tree/main/lib/store): `lib/store`
- [Profile management](https://github.com/raoof128/syllabus-sync/tree/main/app/manage-profiles): `app/manage-profiles`
- [Events feed](https://github.com/raoof128/syllabus-sync/tree/main/features/feed): `features/feed`

### Campus services

- [Campus map](https://github.com/raoof128/syllabus-sync/blob/main/features/map/components/MapClient.tsx): `features/map/components/MapClient.tsx`
- [Route planning](https://github.com/raoof128/syllabus-sync/blob/main/app/api/navigate/route.ts): `app/api/navigate/route.ts`
- [Maps APIs](https://github.com/raoof128/syllabus-sync/tree/main/app/api/maps): `app/api/maps`

### Engagement

- [XP and streaks](https://github.com/raoof128/syllabus-sync/tree/main/features/gamification): `features/gamification`
- [Gamification API](https://github.com/raoof128/syllabus-sync/blob/main/app/api/gamification/route.ts): `app/api/gamification/route.ts`
- [Notifications](https://github.com/raoof128/syllabus-sync/blob/main/lib/services/notificationService.ts): `lib/services/notificationService.ts`
- [Notification APIs](https://github.com/raoof128/syllabus-sync/blob/main/app/api/notifications/route.ts): `app/api/notifications/route.ts`

### Platform services

- [Sign-in and MFA](https://github.com/raoof128/syllabus-sync/blob/main/app/login/page.tsx): `app/login/page.tsx`
- [Auth APIs](https://github.com/raoof128/syllabus-sync/tree/main/app/api/auth): `app/api/auth`
- [Supabase Auth](https://github.com/raoof128/syllabus-sync/blob/main/lib/supabase/server.ts): `lib/supabase/server.ts`
- **Supabase database**
- [Security controls](https://github.com/raoof128/syllabus-sync/tree/main/lib/security): `lib/security`
- [Settings and preferences](https://github.com/raoof128/syllabus-sync/tree/main/features/settings): `features/settings`

### Other components

- **Student**
- **Google Maps**

## Connections

- Student → Sign-in and MFA: signs in
- Sign-in and MFA → Auth APIs: requests auth
- Auth APIs → Supabase Auth: exchanges credentials
- Supabase Auth → Supabase database: reads auth state
- Student → Dashboard: views
- Dashboard → Academic calendar: opens planning
- Academic calendar → Academic APIs: loads academic data
- Academic APIs → Supabase database: reads and writes
- Academic APIs → Academic stores: returns data
- Student → Profile management: manages profile
- Profile management → Supabase database: persists changes
- Student → Events feed: browses events
- Student → Campus map: searches campus
- Campus map → Maps APIs: searches places
- Campus map → Route planning: requests routes
- Route planning → Google Maps: requests routing
- Student → XP and streaks: checks progress
- XP and streaks → Gamification API: fetches progress
- Gamification API → Supabase database: reads and updates
- Student → Notifications: receives alerts
- Notifications → Notification APIs: loads notifications
- Notification APIs → Supabase database: reads and updates
- Auth APIs → Security controls: applies controls
- Academic APIs → Security controls: applies controls
- Route planning → Security controls: checks access and limits
- Student → Settings and preferences: changes settings
- Settings and preferences → Supabase database: persists preferences
