A modern Android application designed to streamline the management of university clubs, events, and memberships. Built with the latest Android technologies, the app emphasizes user experience, real-time interaction, and clean architecture.
- Google Sign-In with Firebase Authentication
- Club management: Browse, join, and explore university clubs
- Event system: View, participate in, and track club events
- Real-time group chat for each club using WebSockets
- Push notifications via Firebase Cloud Messaging
- Offline mode for clubs and events list using Room Database
- Role-based access control for administrative actions
- Persistent login via Jetpack DataStore
- Language: Kotlin
- UI Framework: Jetpack Compose
- Architecture: MVVM with StateFlows
- Networking: Retrofit (HTTP) + Ktor WebSocket
- Authentication & Session: Firebase Authentication + Jetpack DataStore
- Database: Azure PostgreSQL and MongoDB (cloud) + Room (local caching)
- Image Loading: Coil
- Serialization: kotlinx.serialization
- Clean separation of concerns across UI, domain, and data layers
- Uses repository pattern for data access
- Firebase ID tokens are attached to requests for secure communication
- Efficient caching of clubs and events
- Offline-first design (currently for clubs and events lists): Loads instantly from Room cache and syncs fresh data from the server in the background.
- Built-in support for contacting club admins and event heads via gmail intent
- Backend: Ktor Backend Server with Firebase Auth verification, Azure PostgreSQL, and MongoDB
ClubApp v1.2 introduces controlled club access, structured membership requests and offline-first support for clubs and events lists using Room. The update also improves UI responsiveness, error handling, and overall backend stability.
- Club access control – Creators can open or close clubs, controlling whether new requests are allowed
- Join requests – Users can request to join open clubs; creators and moderators can accept or reject them
- Offline Mode – Clubs and Events lists are available even without internet connectivity, thanks to local caching via Room
- Event–club link – Events now show their parent club name, with quick navigation back to the club page
- Error handling – Error screen redesigned with a retry button for faster recovery
- Responsive UI – Member status updates (club or event) now reflect instantly, with smoother caching and state handling
- Backend – Database migrated to Supabase for improved testing
This project is licensed under the Apache License 2.0.
