π‘ 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.