-
Our thumbnail!
-
The landing page, enabling users to sign in via Google OAuth paired with Supabase Auth.
-
The feed, where posts are displayed, having likes, comments, and expandable restaurant views.
-
The profile dashboard, having various counts, the bio, and the opportunity to view a user's posts.
-
The map view, visualising restaurants near your location where a user has visited.
What are our motivations for edible.?
Living in London, a city filled with culture and known for the hustle and bustle, we've heard countless restaurant details, recommendations and reviews scattered across various sources -- Instagram, TikTok, Snapchat, and even word-of-mouth.
At some point, we need a real system for storing this information -- the notes, the random screenshots and and the saved posts on social media that you barely ever look back on no longer seem to work. This is why we've developed an app that combines all of these features and more into one.
What is edible.?
edible. enables you to to post about your own culinary experiences with a personalised review and rating. In these posts, you can select the restaurant you ate at, and pick what meal it was -- breakfast, lunch, dinner, or even just a simple snack.
But, the keyword here is social. Users can explore other people's profiles, and can request to follow them. Privacy is always important, and so users can feel free to make their pages private -- not everyone wants their eating habits out there! On your feed, you'll see posts from people you follow, and can like them, leave comments, or save them for later. Moreover, you will be able to receive personal recommendations for public posts based on how your eating patterns are analysed by our backend, easing the experience of finding your next dine.
On your profile, you can see your bio, and a grid of all your posts, but beyond that, we have a map view tab, where you can view all the restaurants near your location that the user whose profile you're on has visited. This makes it unimaginably easier to look for a nearby open restaurant -- we all know that one of the worst feelings is finding a restaurant you like and seeing that it's closed, or ages away.
One of our favourite features here is called 'groups'. Users can form these with friends, and this brings a novel aspect of gamification to eating out, as members of groups will have their own leaderboards, driven by our ranking systems. Members will be measured and ranked according to a series of metrics, whether it be based on who eats out the most, or who is the most sociable eater. We think this brings a little more fun to the hub, and gives a little more incentive to share your experiences for other enthusiasts who would be interested in the restaurants you've already been to!
We believe that our demographic is, if not unlimited, extremely widespread! Eating a great meal is an experience we'd all like to relive, and this app facilitates all the hard work for you (besides transport!).
How did we build edible.?
Our frontend was built on the Flutter framework, surrounding Dart. This is partially because of the great versatility with both iOS and Android, but also because we wanted to set ourselves a real challenge. We thought that there was little point in us using a language that we knew inside-out, and took this hackathon as an opportunity to learn some more about other tech stacks. While going down the alternative route may have resulted in more progress, we couldn't have had more fun or learned more than what we did in the past 26 hours.
Our backend was built on Flask, where we use flask_restful to handle CRUD operations, combined with a future-proof Prisma schema linked to Supabase BaaS. Prisma's Python client enabled us to make complex queries to our backend with ease, whilst the robust schema streamlined our developer experience with Prisma's type-safety. Thanks to Supabase's BaaS, we were able to combine user authentication and DBMS into one service, and this sped up our progress even further.
What challenges did we face?
One of our major issues was due to us not being students at this university, leading to some trouble connecting to the University Wi-Fi we were provided. So, we relied on Eduroam for the bulk of our time here, and unfortunately that connection did not support our database connection -- something we were trying to outline for 7 hours, and which consequently brought our progress to a standstill. Thankfully, after hours of codebase scrutiny, we were able to outline that the network was the issue, and had to work for the remaining time connected to our own hotspots instead.
Moreover, we ran into occasional issues in developing the RESTful API backend. One of the major potholes was figuring out how to serialise more complex objects into JSON; objects containing other objects, which could even then contain more objects. By pivoting on Pydantic's model properties, we were able to resolve the issue towards the end of the hackathon, leaving us enough time to make as much progress as possible.
What did we learn?
However cliché the phrase, it was profound that communication is key to success in a collaborative project. The reason we were able to make this much progress, despite a 7-hour delay, is our focus on team chemistry, collaborative management of our product backlog, and most importantly, maintaining a high morale when we encountered problems. Thanks to these things, the 26 hours we had exceeded any expectations, whether it be in our learning experience, the thrill, or even the food.
In terms of technologies, we became familiar with mobile development in Flutter -- both of which none of us have any experience in, and similarly, none of us have comprehensive experience in both Prisma and Supabase, making it genuinely rewarding to produce a functional application with this stack.
Another extremely useful skill that we refined was working with version control systems -- Git and GitHub in particular. Whilst we were all aware of general Git functionality, we became notably more comfortable in dealing with VCS in collaborative environments after dealing with uncountable merge conflicts under the the time pressure.
What's next for edible.?
Thanks to our future-proof backend, we have significant leeway to build even further on our functionality. The public release is still to be determined, but, regardless, we will definitely continue to work on this product!
Built With
- amazon-web-services
- dart
- flask
- flutter
- oauth
- postgresql
- prisma
- python
- supabase
- yelp



Log in or sign up for Devpost to join the conversation.