Inspiration

We've all experienced the group chat graveyard, endless "we should hang out!" messages that never turn into actual plans. Coordinating schedules, budgets, and preferences across a friend group is exhausting. We wanted to build something that removes that friction entirely and makes spontaneous hangouts as easy as opening an app.

What it does

Villager turns your friend group into a village. You connect your Google Calendar, join a village with friends, and the app finds your golden hours, the exact windows when everyone is free. It then uses Google Gemini to suggest nearby activities ranked by the whole group's preferences, budgets, and planning styles. Anyone can send an invite that the village accepts or declines in one tap, and accepted events are automatically added to your calendar.

How we built it

We built Villager as a React Native app using Expo and NativeWind for the frontend. Firebase handles authentication and our Firestore database. Google Gemini powers our group compatibility engine — reasoning across multiple people's conflicting preferences simultaneously to rank activities. Google Calendar API syncs everyone's availability. Google Places API surfaces real nearby venues. FireBase secures the identity of every invite request.

Challenges we ran into

The hardest problem was the golden window algorithm, computing overlapping free time across multiple people's calendars in real time while accounting for different planning horizons and timezones. We also couldn't read other real users' Google Calendars without storing their tokens server-side, so we had to design a smart fallback system. Getting Firebase Auth, Firestore security rules, and Google OAuth scopes to all play nicely together took more debugging than expected.

Accomplishments that we're proud of

We're proud that Villager actually works end-to-end as a solo build in under 24 hours. The golden hour algorithm correctly identifies overlapping free windows across real and demo users. The Gemini integration goes beyond a simple chatbot, it genuinely reasons about group dynamics and explains its suggestions in plain language. The pixel forest theme and loading screen give it a personality that stands out from typical hackathon projects.

What we learned

We learned that the hardest part of a social app isn't the UI, it's the data model. Getting shared state across village members, real-time Firestore listeners, and calendar sync to all stay in sync required careful architecture. We also learned that Gemini is most impressive when used as a reasoning engine with structured JSON output rather than a freeform chatbot.

What's next for Villager

The immediate next step is push notifications so villagers get alerted the moment an invite lands. Beyond that we want to add recurring village hangouts, a history of past activities, and a smart nudge system that proactively suggests plans when it detects a golden window opening up. Long term, Villager could expand to neighborhoods, college campuses, and coworking spaces, anywhere people want to move from digital connection to real world community.

Built With

Share this project:

Updates