← Back to Projects
SFU Scavenger Hunt
GamesAndroid

SFU Scavenger Hunt

A mobile scavenger hunt app I built to help SFU students explore campus and connect with each other. Create hunts, join with friends, and compete in real-time as you discover cool spots around campus!

πŸ”— Links

πŸ’‘ My Inspiration

As a 3rd year student at SFU, I wanted to create something that would help bring our campus community together. I've always thought that orientation and campus exploration could be way more fun and engaging, so I came up with the idea of a scavenger hunt app! The goal was to make it easy for students to discover cool spots around campus while competing with friends in real-time. Whether you're new to SFU or have been here for years, there's always something new to find, and I wanted to gamify that experience.

πŸ› οΈ Tech Stack

KotlinJetpack ComposeMaterial Design 3Firebase AuthFirebase StorageGoogle Maps SDKMVVM ArchitectureCoroutines

✨ Key Features

Core Gameplay

  • Create and join real-time scavenger hunts with location-based tasks
  • Support for different task types: photo submissions, QR codes, text answers, and geolocation check-ins
  • Team up with friends and track your progress together in real-time
  • Interactive map showing where teams are, task locations, and where people have submitted
  • Host controls to create games, manage tasks, and approve/reject submissions

Social Features

  • Add friends by username and see their profiles
  • Customize your profile with a picture and display name
  • Chat with your team during games to coordinate
  • Live leaderboard to see who's winning

Game Management

  • Browse available games and filter by status
  • Create custom hunts with multiple tasks and set start/end times
  • Lobby system where players can join teams before the game starts
  • View your game history and search through past games
  • Automatic tracking of which games you've participated in

🎯 Technical Challenges

  • Learning Firebase from scratch - this was my first time working with Firebase and its real-time database features
  • Connecting different accounts with each other through membership
  • Updates from the firebase
  • Performance issues

πŸ“š What I Learned

This is my of my biggest Android projects, so I got more comfortable using Kotlin and Jetpack Compose. The MVVM architecture pattern was also new to me, especially making components lifecycle-aware. This was also my first time working with Firebase, and I learned about querying Firestore databases, and how it was easy to connect to the Firebase database.