Zuyp
An Android app for nights out: plan the hangout, split the bill, get everyone home. Built solo for the Device Development course at Howest.
Technologies
- Kotlin
- Jetpack Compose
- Hilt
- Room
- DataStore
- Retrofit
- Mapbox
- RabbitMQ
- WorkManager
- JUnit
- MockK
- Clean Architecture
- MVVM
Architecture
- Layers
- Clean Architecture with MVVM: ui, domain and data layers, wired with Hilt.
- State
- ViewModels expose immutable state. Kotlin Flow carries data from the database to the screen.
- Storage
- Room for app data, DataStore for settings. Seeded demo data lets it run without a backend.
- Messaging
- RabbitMQ on CloudAMQP, with separate channels for updates and urgent alerts. A foreground service keeps it connected when the app is closed.
- Location
- Mapbox with live location, and geofences around events.
- Security
- Broker credentials stored in a KeyVault.
- Testing
- Unit tests for use cases. Instrumented tests for DAOs, screens and navigation.
Features
Hangouts
Compose · Room · Accelerometer · Geofencing
- Create an event with date, time and address search
- Feed of public hangouts and private ones you are in
- Invite friends and groups in the app, or share a deep link
- Shake your phone to join
- Arriving checks you in (alert to owner) and starts hydration reminders every 30 minutes
- Weather check that suggests what to wear
- Shared expenses: who paid, a receipt photo, equal or custom splits, live balances and settle-up
Discover
Mapbox
- Map of nearby hangouts with your live location
- Markers open a preview that links to the event
- Addresses open in your maps app
Alerts
RabbitMQ · Foreground service
- Zuyp Alert: a full-screen alarm with a flashing torch and one-tap join
- Regular updates on a separate, quieter channel