A cute new photo encountered! Save it or pick another one?
Successfully uploaded photo
Click and explore exciting new photo
User Sign-in/Create Account
Three options of functionality: view gallery,"pick" photo, take photo
Saved photos-gallery of user
Now the photo is yours!
We got this idea from both Pokemon Go and Snapchat. We all take some random photos everyday that get buried in our phone. They may be too trivial to post on your Facebook or Instagram, but you still still want some people to see it. That sashimi lunch you had the other day, the impressionist painting in your office, or just some clouds that look like fish.
That’s where strangers come into the picture. We want to share photos with people who won’t judge us for posting the most random of stuff. We walk from places to places everyday but you never know if something amazing is going on in your neighbors day to day. It will be great if there’s a way to have some connections with them through photo sharing. Pick up is an app where you can leave random photos for others close to you to , you guessed it “pick up”.
What it does
Photo Crush! “Pick up” nearby photos dropped by strangers.
SHARE THE MOMENT: a place for you to drop the adorable photos that u are excited to share but just don’t feel like posting on social media. Surely someone here would be glad to see it! A tasty lunch, a scenic spot, or just a selfie!
DISCOVER: Explore nearby photos and collect your favorites.
MEMORIES: look back on all the photos you collected by browsing Gallery at anytime. Once you grab a photo, it’s yours to keep and no one else’s.
How we built it
Platform: iOS Language: Swift
We used Xcode IDE to develop our iOS mobile App from scratch. We used Github to collaborate.
- Used storyboard to make an outline of different screens of App and visualize flow
- Constructed classes for view controllers
- Added callback functions to interact with server
- UI Design
- Firebase Real-Time Database: User and Picture Metadata
- Firebase FIle Storage: Storing the actual photos the users upload.
The Firebase Real-Time database is used to store the URLs of user uploaded photos. User Login information is also stored here. For each geographic location, the photos uploaded are stored under branch in the JSON tree structure. When a user picks up a photo, that image is moved from the location branch into their own branch. The Firebase Storage is used to store the pictures that the users upload. When the user accesses their gallery or tries to pick up a new photo, they actually load the files in Firebase Storage.
Challenges we ran into
- Some of us have never written Swift Code or Done IOS Development. But we
learned from each other and learn some Swift basics overnight.
- Firebase Realtime Database has a file size limit of 10MB. At first we wanted to store our images all on realtime database, but we realized that there was a size limit, so pivoted to only storing image URLs on the realtime database.
- Find a way to use UICollectionView to display an array of images effectively. Store array of URLs instead of images, and use async calls to download images when feed in cells.
Accomplishments that we're proud of
- The icons are customized for this project.
- We had very minimal Firebase and Google Cloud experience going in, but we were able to learn the APIs for Real Time database and Firebase Storage in a very short amount of time.
- We were able to debug and prototype very efficiently. At one point we did like 7 builds in 15 minutes, definitely one of the highlights of the weekend.
What we learned
- Learned swift code and how to develop an App end to end.
- Learned how to use Storage for firebase in addition to database.
- Learned that coding is not always the hard part, system design, concept analysis and code merging take significant efforts.
What's next for Photo Crush
- We can enable more details about the photos, for example, photographer, description, etc.
- Enable picking more than one photo at a time
- Viewed photos should be reserved and users can decided if they want to see the viewed photos or not
- Better UI interfaces
- Enable radius selection for searching photos around you
- Add “share” feature to enable sharing picked photos on social media platforms
- Enable photo editing with caption and fun filters/stickers
- Report illegal photos
- Enable users to login from other social media platform
- Enable video sharing
- Allow users to drop album photos.
- Notification when your photo has been picked up.