A conference management platform with:
- a Kotlin Multiplatform mobile app (
composeApp+iosApp) - a React admin portal (
event-manager) - a Supabase backend (Postgres + Auth + Edge Functions)
- Kotlin Multiplatform + Compose Multiplatform
- Reads conference data from Supabase (GraphQL + PostgREST)
- Stores local favorites/received notifications via SQLDelight
- Uses Firebase Cloud Messaging (FCM) for Android push delivery
- Native iOS shell for the shared KMP UI
- Handles APNS/FCM registration and subscribes users to targeting topics
- React + MUI + Supabase JS
- Supabase Google OAuth +
authorized_usersallowlist - CRUD for conference dates, events, locations, and resources
- Sends broadcast notifications through Supabase Edge Function
- Supports sending to environment/version/custom topics
- Supports event-level reminder toggles with configurable lead minutes
- Postgres tables for conference/domain data and notification logs
- Edge Function:
send-notification - Edge Function:
send-event-reminders(automatic event reminder dispatch) - Edge Function forwards notification payloads to FCM HTTP v1
- Clients subscribe to topic
GENERAL, plus:- environment topic:
APP_ENV_DEBUGorAPP_ENV_PROD - version topic:
APP_VERSION_<normalized-version>(example:APP_VERSION_8_0)
- environment topic:
- Admin creates a notification in the portal.
- Admin invokes Supabase Edge Function (
send-notification-v2with fallback tosend-notification). - Edge Function sends data message to the selected FCM topic.
- Android app receives and persists/displays the notification.
- Admin enables
Send reminder before this eventand sets lead minutes. - Scheduled job invokes Supabase Edge Function
send-event-remindersevery minute. - Edge Function finds due event reminders, deduplicates per event/start-time, and sends to topic
GENERAL. - Delivery and reminder-attempt records are stored in Supabase.
├── composeApp/ # Kotlin Multiplatform attendee app
├── iosApp/ # iOS host app for shared UI
├── event-manager/ # React admin portal
├── supabase/ # Supabase functions/config
└── shared/ # Shared KMP utilities/models
- Kotlin/Gradle toolchain (for mobile)
- Android Studio (Android)
- Xcode (iOS)
- Node.js + npm (admin portal)
- Supabase project with required schema/auth setup
- Firebase project for FCM delivery credentials
./gradlew :composeApp:assembleDebugOpen iosApp/iosApp.xcodeproj in Xcode and run.
cd event-manager
npm ci --legacy-peer-deps
npm start- Legacy Ktor/Azure server was decommissioned.
- Backward compatibility with legacy REST server endpoints is intentionally not maintained.