How lordverton/sikaschool-website works
SikaSchool is a tutoring platform with public lead capture and separate student, tutor, and admin portals. A lead or account enters through the public/auth flows; learners and tutors then manage sessions, learning, messaging, and payments through role-specific portals and APIs. The README documents Supabase for identity and product data, Mercure for realtime signals, LiveKit for video, Stripe for payments, and Sika AI for student assistance. Sampled routes support the booking, dashboard, messaging, and payment edges shown; some broader portal-to-API connections follow documented capabilities.
Main entry points: supabase.ts Supabase database · route.ts Session booking API · auth.ts Session helpers · index.tsx Booking experience
Components 27
Public and acquisition
- Public site
app/(site)/page.tsx - Booking experience
components/Booking/index.tsx - Lead intake
app/api/leads/route.ts - First-session slots
app/api/leads/first-session-slots/route.ts
Identity and access
- Sign-in and signup
app/(site)/auth/signin/page.tsx - Authentication API
app/api/auth/[...nextauth]/route.ts - Session helpers
lib/auth.ts - Account management
lib/user-management.ts
Tutoring and learning
- Student portal
app/student/page.tsx - Student dashboard API
app/api/student/dashboard/route.ts - Tutor portal
app/tutor/page.tsx - Tutor dashboard API
app/api/tutor/dashboard/route.ts - Session booking API
app/api/sessions/route.ts - Live class experience
components/LiveClass.tsx - LiveKit token API
app/api/livekit/token/route.ts - LiveKit service
Realtime and assistance
- Sika AI agent
lib/ai-tutor/agent.ts - AI conversations API
app/api/student/ai-tutor/conversations/route.ts - Student messaging API
app/api/student/messages/route.ts - Mercure publishing
lib/mercure.ts - Mercure hub
Administration and payments
- Admin portal APIs
app/api/admin/users/route.ts - Student payments API
app/api/student/payments/checkout/route.ts - Stripe webhook
app/api/webhooks/stripe/route.ts - Supabase database
lib/supabase.ts - Stripe
Other components
- Prospective learner
Connections 33
- Prospective learner → Public site: visits
- Public site → Booking experience: opens booking
- Booking experience → First-session slots: requests slots
- Booking experience → Lead intake: submits lead
- Lead intake → Account management: creates account
- Lead intake → Supabase database: reads and writes
- First-session slots → Supabase database: checks availability
- First-session slots → Session booking API: creates session
- Sign-in and signup → Authentication API: authenticates
- Authentication API → Session helpers: uses sessions
- Authentication API → Supabase database: checks identity
- Student portal → Student dashboard API: loads dashboard
- Student dashboard API → Session helpers: checks session
- Student dashboard API → Supabase database: reads learning data
- Tutor portal → Tutor dashboard API: loads dashboard
- Tutor dashboard API → Session helpers: checks session
- Tutor dashboard API → Supabase database: reads session data
- Session booking API → Session helpers: checks session
- Session booking API → Supabase database: writes session
- Session booking API → Mercure publishing: publishes update
- Mercure publishing → Mercure hub: dispatches signal
- Live class experience → LiveKit token API: requests token
- LiveKit token API → LiveKit service: issues access
- Student portal → AI conversations API: opens AI chat
- AI conversations API → Sika AI agent: runs agent
- AI conversations API → Supabase database: stores conversations
- Student messaging API → Supabase database: reads and writes
- Student messaging API → Mercure publishing: publishes message signal
- Admin portal APIs → Supabase database: manages records
- Student payments API → Stripe: starts checkout
- Student payments API → Supabase database: reads payment data
- Stripe → Stripe webhook: sends events
- Stripe webhook → Supabase database: updates payments and credits