The Memelify app is designed to bring the hottest memes to users by providing an easy to use interface that allows users to connect to a subreddit. No signup required. By analyzing images with a powerful machine learning model, Memelify selects only the coolest memes from posts. That is why that with a quick tap, as soon as Memelify is opened, the meme magic begins!
- Share memes and Memelify with friends.
- Get notified about the hottest memes and the "Meme of the day"
- Don't like white and bright apps? Switch to our amazing Dark Mode!
- Save your favorite memes to your phone.
- Choose between a list of trending or the latest memes.
-
Kauana:
- Created launch screen, logo, and all memes displayed on the app. Added the 'awesome face' app icon, but did not create it. Created UI for Settings Controller. Implemented Settings Controller features: Dark Mode, Rate our App, About Us.
- Created the UI for Tab View Controllers: Home, Trending and Favorite controllers. Also, created the UI for Memetile (stack view with a row for image plus another for buttons).
- Created the Navigation Bar for all screens.
- Implemented empty tableView set feature. When the user has no favorite memes, we show an image to let the user know.
- Implemented the Reddit API calls on Home and Trending view controllers and how the API response should be displayed.
-
Will:
- Created the MemeTile and MemeObject class and implemented the functionality of saving the favorite to the user's device
- Added functionality to the Home/Trending/Favorites views so that they displayed the memes with the correct favorites icon and popularity score synced up across the different views instantaneously
- Added the pull-down to refresh feature in home/trending views
- Added the infinite scrolling to home/trending views
- Added the invite friends to Settings View
-
Dat:
- Handled all the backend and API service.
- Succesfully deployed to heroku.
- Applied Machine Learning for meme classification task.
- Implemented Meme Sharing Feature.
- Implemented 'Meme of The Day' Notification Service.
- We are using Heroku's free plan to store our API. The issue with this plan is that the VMs sleep after 30 minutes of inactivity. Therefore, if the app hasn't been used in 30 minutes, the first time you open the app, it may take a bit longer to get the memes because the VMs need to resume their work. However, subsequent calls should be pretty quick.
- Implementing the dark mode was an involved feature that used the observer pattern to know when to change colors across views
- saving information to the device can only be done in certain ways and takes time if you want to save custom objects so that part had to be retrofitted in order to give the user the best experience without lag and buffering
- Reddit API
- Alamofire
- Survey Monkey SDK
- DZNEmptyDataSet
The app uses Heroku to host the Reddit API calls and Alamofire for the networking library to make HTTP requests, wait for response and parse JSON.
- UIImageView meme: the actual image of the meme
- Int karma: this just keeps track of the karma number for posts
- bool favorite: whether or not the user has marked the meme as a favorite meme
- UIButtons: favorite (heart icon) and share (square with arrow icon)
- UILabel: up arrow to indicate karma count.
- id: post id
- date: "created_at" date
- title: post title
- likes: post likes
- image: post image
- navigationController: UINavigationController allows navigation modifications for DarkMode
- tabBarController: UITabBarController allows tabBar modifications for DarkMode
- Used to implement the Dark Model feature. It allows app to know what to do with labels when Dark Mode is enabled or not.
- Home (Latest): Shows a list of memes that have the most karma on Reddit during the week.
- Trending: Shows the latest memes that were posted.
- Favorites: Shows the user's favorite memes (user default).
- Settings: Allows the user to change Display, Notifications, and General settings.
- About Us: Contains some information about Memelify. Accessed through the Settings controller.
Users have the option of rating Memelify by going to Settings and clicking on "Rate our App". Another view controller will show up containing a Survey Monkey survey that asks users general questions about their experience and feedback. Once the user clicks on "done" the information is sent to our API where we can examine the results gathered.