Inspiration
Choosing somewhere to eat or something to do often takes longer than the activity itself. Search engines provide endless results, review platforms prioritize generic ratings, and recommendations from friends are scattered across messages and social media.
We created OutThere to make deciding where to go personal, useful, and social. Instead of showing everyone the same popular places, OutThere combines real place information, personal preferences, rankings, saved plans, and recommendations from people you trust.
Some of OutThere’s features were inspired by apps we love.
- Beli - Ranking System
- Tinder - Swipe based discovery experience
- Strava - Social Feed
What it does
OutThere is a social discovery app that helps you find nearby food spots and activities that match your taste, and friends to enjoy them with. Discover places, build personal rankings, and turn shared interests into real plans.
Key Features
- Swipe-based discovery — Explore nearby food spots and activities with recommendations shaped by your preferences.
- Location-aware search — Find places with autocomplete and filters for category, distance, price, rating, and opening status.
- Personal rankings — Compare places head-to-head and build your own ranked lists.
- Saved places — Keep a bucket list of restaurants and activities you want to try.
- Social feed — Share outings, discover friends’ experiences, and interact through likes and comments.
- Profiles and activity history — Showcase your past outings, rankings, and activity statistics.
- Following and private profiles — Connect with other users and manage follow requests.
- Friend invitations — Invite friends to places and accept or decline invitations.
- In-app notifications — Stay updated on social interactions, follow requests, and invitations.
- Place details and maps — View photos, opening hours, addresses, and locations, with links for directions, websites, and calls.
- Pro membership prototype — Explore membership purchases and restoration through RevenueCat’s Test Store.
How we built it
OutThere is a cross-platform mobile application built with React Native, Expo 57, TypeScript, and Expo Router. We first designed an interactive prototype in Figma to map out the user flows and refine the interface before building the app.
We used Supabase for authentication, PostgreSQL data storage, profile management, social relationships, notifications, and Row Level Security. Private profile images are stored securely and delivered through expiring signed URLs.
Real place search is powered by the Google Places API through protected Supabase Edge Functions. API credentials remain on the server, while the app receives normalized place results. Search includes autocomplete, location-aware results, filters, pagination, and resilient loading and error states.
The recommendation experience distributes nearby results across multiple geographic search zones and category queues. This produces a more varied set of suggestions instead of repeatedly showing places concentrated in one area or category.
The app also includes a RevenueCat Test Store integration for experimenting with membership flows, entitlement checks, restoration, Paywalls, and Customer Center without processing real payments.
We organized the code by feature so each major screen has its own components, services, state, and tests. This allowed different team members to work on Discover, Search, Rankings, Social, and Profile with fewer conflicts.
Challenges we ran into
Our biggest challenge was building the discovery system. Google Places API requests returned a limited set of up to 20 results, and repeating the same search tended to return the same places. This made it difficult to create a varied discovery feed, especially in areas with many options. To address this, we divided the surrounding area into multiple geographic search zones and used weighted preference-tier queues to select recommendations. This helped us balance places that match a user’s interests with opportunities to explore something different, instead of repeatedly showing the same suggestions.
Another major challenge was turning third-party place data into a fast and dependable mobile experience. Search responses can arrive out of order, place information may be incomplete, and photos or opening hours can fail independently. We added debouncing, request invalidation, pagination limits, normalized data contracts, and recoverable error states to keep the interface responsive.
Social privacy was another challenge. Private profiles, follow requests, post visibility, blocking, comments, and notifications all interact with one another. We enforced these rules in the database using Row Level Security rather than relying only on what the interface hides.
Native development also introduced challenges. Location, maps, image selection, liquid-glass effects, and RevenueCat require native modules, CocoaPods, and development builds. Keeping those dependencies compatible with Expo 57 required careful native configuration and simulator testing.
Finally, we had to balance functionality with simplicity. Place search, rankings, recommendations, profiles, and social features contain significant state and data logic, but the user should experience them as one clear journey.
Accomplishments that we're proud of
We are proud that OutThere supports a complete discovery loop:
- Find a genuine place
- Review useful details
- Save or visit it
- Rank and rate the experience
- Share it with friends
- Use those interactions to make future discovery more meaningful
We also built genuine place-name autocomplete, detailed filters, personalized discovery queues, comparison-based rankings, private social profiles, follow requests, likes, comments, notifications, and mutual place activity within one coherent application.
The project includes protected authentication flows, secure backend policies, feature-based architecture, error handling, and automated tests for important ranking, discovery, search, authentication, profile, social, and subscription behavior.
What we learned
We learned that a simple recommendation interface depends on careful decisions about data quality, concurrency, privacy, and failure handling.
We also learned that privacy should be part of the database design from the beginning. Interface checks improve the experience, but secure Row Level Security policies are what protect user data.
Working with live place data taught us to design for missing and delayed information. A useful app must remain understandable when a photo fails, a request times out, a venue disappears, or the user changes their search midway through a response.
Most importantly, we learned to build around a complete user journey. Individual features become much more valuable when discovery, saving, ranking, and sharing all reinforce one another.
What's next for OutThere
Our next step is to test OutThere with more users and measure whether its recommendations help people decide faster and discover places they would otherwise miss.
We also plan to improve recommendation quality, accessibility, offline behavior, content moderation, and external push notifications. Before any public release, we would complete production security reviews, store configuration, privacy documentation, and broader device testing.
Built With
- expo.io
- reactnative
- supabase
Log in or sign up for Devpost to join the conversation.