Three Zuyp app screens: a map, a list of upcoming events and a hangout detail

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.

Zuyp on GitHub Gallery (10)

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