How rakenduste-programmeerimine-2026/school-device-booking-app-for-teachers works
This is a teacher-facing school-device booking app. Teachers choose a date and lesson or custom time, inspect live device availability, then submit a booking; the server converts Tallinn local times and delegates booking creation to Supabase. The database enforces capacity and access rules and records booking history. The README also documents recurring-date generation and admin-managed school calendars, lessons, devices, and access. Those documented capabilities are included, though their UI or SQL implementations were not sampled; edges are limited to shown or documented relationships.
Main entry points: page.tsx Availability page · actions.ts Booking action · migrations Booking database · server.ts Session client
Components 19
Identity and access
- Login page
frontend/app/login/page.tsx - Auth callback
frontend/app/auth/callback/route.ts - Session client
frontend/lib/supabase/server.ts
Availability browsing
- Availability page
frontend/app/page.tsx - Device picker
frontend/app/device-picker.tsx - Booking refresh
frontend/app/refresh-on-booking-change.tsx - Browser client
frontend/lib/supabase/client.ts
Booking workflow
- Booking list
frontend/app/broneeringud/page.tsx - New booking page
frontend/app/broneeringud/uus/page.tsx - Booking form
frontend/app/broneeringud/uus/booking-form.tsx - Booking action
frontend/app/broneeringud/actions.ts - Tallinn time
frontend/lib/tallinn-time.ts - Series dates
frontend/lib/series-dates.ts
Booking operations
- Booking database
supabase/migrations - Admin configuration
supabase/migrations - Change history
supabase/migrations - Realtime feed
Other components
- Teacher
- Admin
Connections 24
- Teacher → Login page: signs in
README.md - Login page → Auth callback: starts auth
README.md - Auth callback → Session client: exchanges code
frontend/app/auth/callback/route.ts - Teacher → Availability page: chooses range
frontend/app/page.tsx - Availability page → Session client: loads data
frontend/app/page.tsx - Availability page → Device picker: renders
frontend/app/page.tsx - Device picker → Availability page: updates range
frontend/app/device-picker.tsx - Availability page → Booking database: requests availability
frontend/app/page.tsx - Teacher → Booking list: views bookings
README.md - Teacher → New booking page: starts booking
README.md - New booking page → Session client: loads choices
frontend/app/broneeringud/uus/page.tsx - New booking page → Booking form: renders
frontend/app/broneeringud/uus/page.tsx - Booking form → Booking action: submits
frontend/app/broneeringud/uus/booking-form.tsx - Booking action → Session client: checks session
frontend/app/broneeringud/actions.ts - Booking action → Tallinn time: converts times
frontend/app/broneeringud/actions.ts - Booking action → Booking database: calls create_booking
frontend/app/broneeringud/actions.ts - Booking database → Change history: records changes
README.md - Series dates → Tallinn time: converts dates
frontend/lib/series-dates.ts - Admin → Admin configuration: manages settings
README.md - Admin → Change history: reads history
README.md - Booking refresh → Browser client: subscribes
frontend/app/refresh-on-booking-change.tsx - Realtime feed → Booking refresh: refreshes page
README.md - Booking database → Realtime feed: publishes changes
README.md - Availability page → Booking refresh: renders
frontend/app/page.tsx