How otonar/adviser-shift-app-public works
This is a staff shift-management PWA for a university co-op team. Staff submit availability for targeted shift slots, then administrators create slots, auto-assign roles, adjust assignments, and publish confirmed roles for sharing. The product also covers products and inventory, member settings, surveys, suggestions, and LINE notifications. The graph distinguishes UI, route handlers, domain helpers, and Supabase state. Edges are limited to README-described capabilities and relationships visible in sampled source or the source index; unsampled UI-to-API wiring is left unverified.
Main entry points: admin Admin console · supabase.ts Supabase database · dashboard Staff dashboard · assignments Assignment APIs
Components 21
People and UI
- Staff dashboard
src/app/dashboard - Admin console
src/app/admin
Shift operations
- Shift submission
src/components/dashboard/StaffShifts.tsx - Shift APIs
src/app/api/shifts - Assignment APIs
src/app/api/assignments - Role assignment
src/lib/role-assignment.ts - Assignment changes
src/lib/assignment-change.ts - Absence handling
src/lib/absence.ts
Staff features
- Products and stock
src/app/api/products - Member management
src/app/api/users - Surveys and analytics
src/app/api/surveys - Suggestions
src/app/api/suggestions - LINE notifications
src/app/api/notifications/route.ts - LINE webhook
src/app/api/line/webhook/route.ts
Server platform
- Authentication
src/lib/auth.ts - Route authorization
src/lib/middleware.ts - Staff queries
src/lib/staff-queries.ts - Supabase database
src/lib/supabase.ts
Other components
- Staff
- Administrators
- LINE Messaging API
Connections 30
- Staff → Staff dashboard: uses
- Administrators → Admin console: uses
- Staff dashboard → Shift submission: submits availability
- Admin console → Shift APIs: manages slots
- Admin console → Assignment APIs: manages assignments
- Assignment APIs → Role assignment: computes roles
src/app/api/assignments/route.ts - Assignment APIs → Supabase database: reads and saves
src/app/api/assignments/route.ts - Assignment APIs → Assignment changes: records changes
src/app/api/assignments/[shiftId]/swap/route.ts - Shift APIs → Absence handling: checks absence window
src/app/api/shifts/route.ts - Shift APIs → Supabase database: reads and writes
src/app/api/shifts/route.ts - Shift submission → Absence handling: uses
src/components/dashboard/StaffShifts.tsx - Staff dashboard → Products and stock: browses products
- Admin console → Products and stock: manages inventory
- Admin console → Member management: manages members
- Staff dashboard → Surveys and analytics: views and answers
- Admin console → Surveys and analytics: manages surveys
- Staff dashboard → Suggestions: posts suggestions
- Admin console → Suggestions: manages suggestions
- Admin console → LINE notifications: sends notifications
- LINE notifications → LINE Messaging API: sends messages
- LINE webhook → LINE Messaging API: receives events
- Shift APIs → Route authorization: authenticates requests
src/app/api/shifts/route.ts - Assignment APIs → Route authorization: authenticates requests
src/app/api/assignments/route.ts - Route authorization → Authentication: verifies tokens
src/lib/middleware.ts - Staff queries → Supabase database: queries staff data
src/lib/staff-queries.ts - Staff queries → Staff dashboard: provides dashboard data
- Surveys and analytics → Supabase database: reads and writes
src/app/api/surveys/[id]/route.ts - Products and stock → Supabase database: reads and writes
src/app/api/products/route.ts - Suggestions → Supabase database: reads and writes
src/app/api/suggestions/route.ts - LINE notifications → Supabase database: records logs
src/app/api/notifications/route.ts