An Android app for photo challenges between friends. You pick a theme, both of you take a picture, and you each vote on whose is better.
I built it to practice a clean single-activity architecture in Kotlin, with a real backend and a multi-step flow between two users.
| Home | Challenges | Start a challenge |
|---|---|---|
![]() |
![]() |
![]() |
- You pick a friend and a challenge (from the list, or a random one), take your photo and send it.
- Your friend accepts, takes their own photo and sends it back.
- The recipient votes between the two photos, then the challenger does.
- Both votes are in, the winner is shown, and the challenge is done.
In the code this is a status string on the challenge in Firebase: sent, open, voteRecipient, voteChallenger, result, done. The home screen sorts challenges into Received and Sent depending on whose turn it is.
Other things it does: Google sign-in, a friends list, and a daily reminder notification at 13:00 that survives a reboot.
- Kotlin, single activity with the Navigation Component, ViewBinding
- One
MainViewModelwith LiveData, Firebase listeners feed it - Firebase Auth (Google), Realtime Database and Storage for challenges and photos
AlarmManagerand a boot receiver for the reminder, Glide for images- minSdk 26
- Clone the repo.
- Create your own Firebase project and put its
google-services.jsonintoapp/. - Open in Android Studio and run.
MIT, see LICENSE.


