Inspiration
When people in a friend group have different preferences, allergies and dietary restrictions, food decisions can be hard. Our inspiration came from our experience of spending too much time trying to find a restaurant that works for everyone in the friend group. We wanted to build a tool that simplifies this process by automatically identifying the best match restaurant that satisfies the needs for everyone in the group. Our goal is to help people to reduce the stress and time spent deciding where to eat and instead focus on enjoying the meal with friends.
What it does
DishCover is a mobile web app that takes the stress out of group dining by making sure everyone has something they can eat. Users input their dietary requirements, allergies and food preferences and DishCover uses that information to recommend local restaurants that cater to their needs. When dining with friends, colleagues, or family, finding a restaurant that works for everyone can be a challenge — especially when the group has a mix of dietary restrictions, allergies and preferences. DishCover solves this by letting users form groups, combining each member's requirements to surface restaurants where the whole table can eat comfortably and confidently. Each restaurant recommendation is ranked based on how well it fits the group's collective needs, so no one has to compromise. Whether it's a vegan, someone with a gluten intolerance or a halal diner, DishCover ensures every meal out is inclusive, stress-free and enjoyable for everyone at the table.
How we built it
We built DishCover as a full-stack web application using Next.js, React, TypeScript, Tailwind CSS, and Supabase, deployed on Vercel.
We chose Next.js and React to quickly build a modern, responsive interface with strong support for component-based development and fast iteration during the hackathon. TypeScript improves reliability by adding type safety across both frontend logic and API interactions.
For the backend, Supabase allowed us to rapidly implement authentication, database, and real-time functionality without managing our own infrastructure. Its built-in email/password and Google OAuth authentication, along with PostgreSQL and Row Level Security (RLS), provided secure and scalable user data management while keeping development lightweight.
Our database schema centers on three core entities: Profiles – user identity and dietary data (allergies, intolerances, preferences) Groups – shared dining groups with membership stored in group_members Friends – optional social connections via friend_edges
We also implemented PostgreSQL triggers to automatically create profiles on signup and keep emails synced with the auth system. Custom RPC functions (check_username_available and lookup_user_for_group) enable secure username validation and user lookup without exposing sensitive profile data.
On the frontend, Tailwind CSS enabled rapid UI development with a consistent design system, while React hooks power the recommendation engine so results update instantly when group members change.
Challenges we ran into
One challenge that we ran into was figuring out how to integrate restaurants into the app. Initially, our approach was to manually add restaurant menus into the system so our recommendation algorithm could analyse them and find best-matches for each group. However, this method would require constantly updating the menus and collecting a large amount of data, which could be time consuming. To solve this problem, we designed the system to allow individual restaurants to sign up and add their own menu items and tags. This enables the information on our website to be up to date and accurate, as well as making the system easier to maintain.
Accomplishments that we're proud of
We are proud of delivering a clean and engaging user interface that organises different features such as groups, recommendations and profiles in an appealing way. By structuring the interface around the most common user actions, such as adding friends, creating groups, and viewing restaurant suggestions, we were able to design an experience that feels both streamlined and user-friendly. We are also proud that we successfully built a working system that allows users to create profiles, add friends, form groups and personalise recommended restaurants. Instead of simply filtering restaurants based on a single restriction, the algorithm evaluates menus using a combination of strict dietary limitations, softer preferences, and foods that users enjoy. This approach allows the system to rank restaurants in a way that is both practical and flexible, helping groups find options that satisfy as many members as possible.
What we learned
Throughout this hackathon, we consolidated our skills in developing a full-stack web application that focuses on user interactions. We gained hands-on skills of building a frontend web platform as well as integrating Supabase for authenticating and database management. We also strengthened our understanding in the database design, for example how to design the relationship between profiles, friend connections and groups to support a social application.
What's next for DishCover
We plan to expand DishCover with several new features so that it could make group dining decisions quicker and more interactive.
One improvement is to sort the recommended restaurants according to distance to the group. This would help the group to find restaurants quickly based on dietary needs and location.
We also plan to integrate a map that allows users to view the restaurant location and navigate to the place. This would simplify the process after the food decision is fixed.
Another feature we would like to include is to add a poll system within each group, where group members can vote on their preferred option once the restaurant recommendation has been generated by the system, helping the group to reach a decision quicker and fairer.
We would also like to introduce a favourite restaurant feature, allowing users to save places that they enjoyed, which could then affect future recommendation, and can be easily revisited when eating out with the same group again.
Built With
- next.js
- react
- supabase
- tailwind
- vercel
Log in or sign up for Devpost to join the conversation.