EventPass UG is a Kotlin app for event discovery and mobile ticketing in Uganda. Attendees can browse events, buy tickets, and use QR codes, while organizers create events, view dashboards, and scan tickets. Simple navigation for both roles makes event management seamless.
# EventPassUG — Android
Native **Android** event discovery & management app for Uganda — attendees find and buy
tickets; organizers create events, sell tickets, and scan attendees at the door. Built with
**Kotlin** and **Jetpack Compose**.
---
## Quick start
```bash
cd android
# JDK 17 is required (the toolchain does not support JDK 21+/25)
JAVA_HOME=$(/usr/libexec/java_home -v 17) ./gradlew :app:assembleDebug
```
Open the `android/` directory in **Android Studio** (Giraffe+), let Gradle sync, then Run
`app` on an emulator or device (min SDK **24 / Android 7.0**).
## Tech stack
- **UI:** Jetpack Compose, Material 3, Material Icons Extended
- **Architecture:** MVVM + Clean Architecture, unidirectional data flow (`StateFlow`)
- **DI:** Hilt
- **Navigation:** Navigation Compose (single-Activity)
- **Async:** Kotlin Coroutines + Flow
- **Local:** DataStore (preferences); Room (planned)
- **Media/Camera:** Coil, CameraX + ML Kit Barcode (QR scanning)
- **Maps:** Maps Compose / Play Services Maps
## Module layout
```text
android/
├── app/ # single Activity, navigation host, DI, mock repos, VMs
├── core/ (common, design, ui, domain, data)
└── feature/ (onboarding, auth, attendee, organizer, profile, become-organizer, notifications)
```
## Documentation
- **EventPassUG_Android_Documentation.md** — the
complete technical specification (architecture, navigation, design tokens, features, data
models, repositories).
- **IMPLEMENTATION_GAPS.md** — current implementation status vs. the
spec (what's done, partial, or missing).
## Status
Actively under construction. The UI for the core flows (onboarding, auth, attendee home/
tickets, profile, the full Become-an-Organizer flow, organizer home/dashboard, create-event
wizard, QR scanner) is in place, running on **mock in-memory data**. See
IMPLEMENTATION_GAPS.md for what remains.