How shoaaibtaimur/unify-client works
UNIFY is a role-based academic activity portal. Students select a class to browse schedules, activity details, and a monthly calendar; class representatives and teachers manage activities and import CSVs; administrators manage institution-wide activities, organization structure, and users. Routes render feature screens, shared state handles authentication and cached API data, and the frontend communicates with a credentialed backend. Several feature implementations are unsampled, so those nodes reflect documented capabilities and only evidenced route/API relationships are drawn.
Main entry points: api.ts API query layer · (dashboard) Role dashboards · DashboardContent.tsx CR / teacher dashboard · layout.tsx Root layout
Components 28
Routes and layouts
- Root layout
app/layout.tsx - Login route
app/(auth)/login/page.tsx - Public routes
app/(public) - Role dashboards
app/(dashboard)
Public activity discovery
- Activity overview
components/features/home/HomeContent.tsx - Class selection
components/features/class-selection/ClassSelectionDialog.tsx - Activity directory
components/features/activities/ActivitiesContent.tsx - Monthly calendar
components/features/calendar/CalendarContent.tsx - Activity details
components/features/activities/ActivityDetailsDialog.tsx
Activity operations
- CR / teacher dashboard
components/features/dashboard/DashboardContent.tsx - Activity editor
components/features/activities/ActivityForm.tsx - Activity management
components/features/activities/ManageActivitiesTable.tsx - CSV import
components/features/activities/CsvImportDialog.tsx
Administration
- Admin overview
components/features/admin/AdminOverviewContent.tsx - Admin activities
components/features/admin/AdminActivitiesContent.tsx - Organization management
components/features/admin/AdminOrganizationContent.tsx - User administration
components/features/admin/AdminUsersContent.tsx
State and services
- Sign in
components/features/auth/LoginContent.tsx - Auth and app state
lib/state.tsx - Authentication client
lib/auth-client.ts - API query layer
lib/api.ts - Activity domain types
types/activity.ts - Academic domain types
types/academic.ts - Authentication types
types/auth.ts - Class selection state
lib/session.ts
Other components
- Portal user
- UNIFY backend
- Live update stream
Connections 39
- Portal user → Root layout: opens portal
app/layout.tsx - Root layout → Login route: renders routes
- Root layout → Public routes: renders routes
- Root layout → Role dashboards: renders routes
- Login route → Sign in: renders
app/(auth)/login/page.tsx - Public routes → Activity overview: renders
app/(public)/page.tsx - Public routes → Activity directory: renders
app/(public)/activities/page.tsx - Public routes → Monthly calendar: renders
app/(public)/calendar/page.tsx - Role dashboards → CR / teacher dashboard: renders
app/(dashboard)/cr/page.tsx - Role dashboards → CR / teacher dashboard: renders
app/(dashboard)/teacher/page.tsx - Role dashboards → Admin overview: renders
app/(dashboard)/admin/page.tsx - Role dashboards → Admin activities: renders
app/(dashboard)/admin/activities/page.tsx - Role dashboards → Organization management: renders
app/(dashboard)/admin/organization/page.tsx - Role dashboards → User administration: renders
app/(dashboard)/admin/users/page.tsx - Sign in → Auth and app state: submits credentials
components/features/auth/LoginContent.tsx - Auth and app state → Authentication client: verifies session
lib/state.tsx - Authentication client → UNIFY backend: auth requests
lib/auth-client.ts - Activity overview → Class selection: offers selection
components/features/home/HomeContent.tsx - Activity overview → Class selection state: reads class
components/features/home/HomeContent.tsx - Activity overview → API query layer: loads activities
components/features/home/HomeContent.tsx - Monthly calendar → API query layer: loads calendar
components/features/calendar/CalendarContent.tsx - Monthly calendar → Class selection: offers selection
components/features/calendar/CalendarContent.tsx - Monthly calendar → Activity details: opens details
components/features/calendar/CalendarContent.tsx - Activity directory → API query layer: loads activities
- CR / teacher dashboard → API query layer: loads dashboard
components/features/dashboard/DashboardContent.tsx - CR / teacher dashboard → Activity editor: opens editor
components/features/dashboard/DashboardContent.tsx - CR / teacher dashboard → Activity management: renders management
components/features/dashboard/DashboardContent.tsx - CR / teacher dashboard → CSV import: opens import
components/features/dashboard/DashboardContent.tsx - Activity editor → API query layer: writes activity
components/features/activities/ActivityForm.tsx - API query layer → UNIFY backend: queries and mutates
lib/api.ts - API query layer → Authentication client: uses authenticated fetch
lib/api.ts - Auth and app state → API query layer: stores query state
lib/state.tsx - Auth and app state → Live update stream: subscribes to updates
lib/state.tsx - Live update stream → API query layer: invalidates cached data
- Activity editor → Activity domain types: uses activity types
components/features/activities/ActivityForm.tsx - API query layer → Activity domain types: uses activity types
lib/api.ts - API query layer → Academic domain types: uses academic types
lib/api.ts - Authentication client → Authentication types: uses auth types
lib/auth-client.ts - Class selection state → Academic domain types: uses class type
lib/session.ts