public RibitProjectBreakdown( ) {
//After college in 2018, I decided I create the first good idea that came to my mind because I wanted to learn full-stack mobile development. See a demo of the full MVP in the video on the left or the link above
bool _alsoWorkingFullTime = true;
public int NumberGithubCommits = 189;
List<Features> _tooBigToCount = new List<Features>( ); //Should have thought simpler haha
Idea( ){
•What if you could get a little nudge to meet someone while at a concert or a bar in person...
•A map-based social/dating app solved for this use case
•A user can drop a pin at their location (feel free to move a safe distance from your pin) then discover people in your local area
•Browse their profile's pictures and drop a like on their profile. If they also like you, then its a match! Get started chatting and meet up once you're comfortable
}
//TODO: Figure out how to indent this with bullet points lol, sorry in advance
Execution( ){
•I chose to build the entire front end for the app in Flutter because it allows for android and ios asynchronous development; and chose to use a firebase DB for user and image data backend because it integrates best with Flutter
//I learned a ton about how to break features into small projects trackable in a larger roadmap. For a project this size I needed to piecemeal everything
If ( FEATURES || ARCHITECTURE ){
•LOGIN - I built a fully functional user login with email and SMS authentication front to back end, with working forgot password functionality
•ONBOARDING - I created a profile customization funnel, where users add: their name, DOB (with age verification), a bio, profile pictures, gender, and what they are looking for. I also created a profile page where users can customize their profile at any later time
•MAP VIEW - I center the google maps view on the user's current location, but built a map marker hot reload functionality based on the screen view to world coordinates so if the user scrolls around they can see other users in that area
•RIBIT! - Central to the map view is the Ribit button to place a discoverable marker at the users current location. This was a challenging feature to make safe for all users, but encouraging the user to not leave their marker location but stay in the area is a safe functional compromise because the public marker does not follow the user
•MAP TRINKETS - Also built into the map view is a zoom slider, center on user button, and filters for what type of people/markers the user wants to see
•DISCOVER - When a user clicks on a marker a flexable popup for that persons profile photo pops up with a prompt to see their profile
•PROFILES - The public-facing profile page is built differently with a scroll view of profile images and a floating "Like" button
•MATCHING - On like, the match logic is run to check if the other user also liked you back then they are inserted into your chat view (all saved and referenced in the DB)
•CHATTING - The final tab is the chat page that saves the profiles- for who liked you, who liked you, and your matches. I built simple chat functionality with text, image sending, chat deleting, chat reporting
•SAFETY - Because of the nature of the app, I built a fully functional report feature throughout people's profiles that send reports to my DB where they could be dealt with by admins
•MONETIZATION - For "Likes" I created a cron job to give users 3 Likes a day. If you run out of Likes I created a Likes purchase page to refill Likes or get Unlimited Likes
}
}
Tools( ){
•Flutter - Google's Multi-platform SDK
•Firebase - Google's cloud-based database manager
•Firestore- database manager
•Firebase Auth
•Google Maps - Geolocation with map marker management
}
Conclusion( ){
//Finished a Minimum Viable Product for this project in the beginning of 2021 then started a new project...
//TODO: Maybe pick this project up again someday or if you want to buy it lmk ;)
}
}