Inspiration
We first came up with this idea during our trip to Hacklytics. Often, we have the mindset of wanting to meet new people, but we hesitate to take action, worrying that we might not find someone compatible. This project aims to make it easier for individuals to connect with others who share similar hobbies—people they might not have met otherwise.
Our goal is to encourage the use of “third spaces,” such as cafes, libraries, and parks. In today’s fast-paced world, we tend to focus on optimizing time rather than building meaningful relationships. Many people isolate themselves, and sometimes even families and friends drift apart, missing opportunities to strengthen bonds. We hope this project fosters community building and helps people form more genuine connections.
What it does
Proximity is a social app where we match you with users in your area with similar hobbies and interests. Whether it be the gym, an art studio, an ice skating rink, or more, we'll recommend locations near you where you'll be able to spend time meeting new people and making new friends :)
How we built it
We built a social proximity based platform with a clean separation of concerns between identity, state, and matching logic. Firebase is used only for authentication on the frontend, issuing ID tokens that are validated by a FastAPI backend, while all application state: profiles, groups of four, chats, ratings, and matching decisions, lives in Postgres. The backend exposes versioned REST APIs for group lifecycle actions (create, accept, decline, leave), group-only chats, discover signals, and profile reads, while the frontend (Expo/React Native) is wired directly to these endpoints via a lightweight API client. Tabs and navigation were restructured to reflect the product loop, Matches, Discover, Chats, Profile, with Matches centered on group meetups rather than individual swipes or social graphs.
On the intelligence side, we focused on getting strong signals in place before introducing embeddings. Users generate real preference data by rating nearby restaurants in Discover, selecting controlled hobbies from a normalized catalog, and implicitly expressing neighborhood affinity. These signals are ingested into the backend and used immediately by a heuristic group-generation service that scores compatibility across hobby overlap, shared restaurant tastes, and location context. In parallel, we implemented a versioned preference profile builder that deterministically composes all user signals into structured metadata and embedding-ready text, keeping the system provider-agnostic and future-proof. This means the platform already improves group quality through learned preferences today, while being fully prepared to plug in Gemini embeddings and a vector database as a retrieval layer next. The result is a production-grade foundation where better matching is an incremental upgrade—not a rewrite—built on top of a robust, test-covered core.
Core Architecture (based on our vision)
- Firebase Auth = identity only (frontend sign-in/sign-up, ID tokens)
- FastAPI + Postgres = source of truth for profiles, groups, chats, ratings, matching logic
- External vector DB (Actian) = retrieval/index layer only, behind FastAPI
- Group meetup matching is the primary product loop, not friend/follow mechanics
Challenges we ran into
We tried to implement a variety of APIs. However, we faced technical problems in multiple ways. Often, we ran into debugging issues that required deep investigation and creative problem-solving. In some cases, we were unable to even obtain an API key due to external restrictions or access limitations, which delayed our progress. Additionally, integrating multiple APIs together sometimes caused unexpected conflicts, and handling data inconsistencies across different sources proved to be more challenging than anticipated.
What we learned
One of the biggest lessons we learned is the power of collaboration. When working together, people with different backgrounds and skill sets can take a complex idea and make it achievable. We also realized the importance of planning for technical roadblocks—knowing how to troubleshoot, adapt, and find alternatives is crucial. Finally, we learned that even when things don’t work perfectly, the process of experimenting, iterating, and problem-solving provides valuable experience that strengthens both the project and the team.
What's next for Proximity
We'd like to implement some of the other screens in our Figma design as well as real time messaging!
Built With
- actian
- expo-router
- expo.io
- fast-api
- firebase
- google-maps
- node.js
- postgresql
- python
- react
- react-native
- sqlalchemy
- typescript
Log in or sign up for Devpost to join the conversation.