SnapEvent

Meeting up with friends should be fun, not a scheduling nightmare.

Inspiration

As we move into our second year of university, we realized how difficult it becomes to meet up with old friends. High school classmates and hometown friends are now scattered across different universities, often hours apart.

Planning a simple gathering suddenly feels complicated. It’s hard to quickly compare everyone’s bus or transit schedules, to check whether it’s even possible for the whole group to reach a location in a reasonable amount of time.

On top of that, finding something fun to do isn’t always easy. After a while, the same familiar places can feel stale, and discovering new events or activities takes effort most of us don’t have during busy semesters.

This is where SnapEvent comes in: making it effortless to bring people together by solving the logistics, finding events, and ensuring every meetup feels both possible and exciting.

What it does

SnapEvent takes the hassle out of planning meetups with friends. You create an event with a title, time window, and destination, then invite your friends. The app automatically generates personalized door-to-door travel schedules for each participant, showing outbound and return trips with step-by-step instructions, distances, ETAs, and transit icons.

Everyone can set their own starting location through an embedded map without affecting anyone else’s plan. Participants see a focused view of each event to update their details and check their schedule, while event creators retain the ability to edit full event details. To keep the experience fast and reliable, SnapEvent caches schedules and refreshes them automatically when necessary.

How we built it

We developed SnapEvent as a mobile app using Expo + React Native (TypeScript). For map interactions, we integrated react-native-maps, and designed clean modal flows for creating, editing, and viewing events. The EventSchedule component renders per-user tabs with step-by-step routes and transit icons.

On the backend, we built a Node.js + Express server exposing REST endpoints for events, participants, starting locations, and travel schedules. We used the Google Directions API for routing (driving, transit, etc.), along with Geocoding and Places APIs for reverse geocoding and place details. To optimize performance, we added a cache layer for event travel schedules with targeted invalidation when users update their starting locations.

For authentication, we implemented Passport (Google OAuth) with protected routes for mutating actions. Data is stored in DynamoDB, where each event document keeps participants, the time window, destination, and per-user starting locations.

Challenges we ran into

One of the hardest challenges was modeling per-user starting locations that allowed for users to start their navigation at different places, but end up in the same place at a given point in time. Another challenge was designing sync and cache invalidation logic so that we only regenerated schedules when truly necessary, such as when a participant changed the starting point of their navigation. This was necessary to keep the app fast and responsive. We also had to work through a number of Google Directions API edge cases, such as missing routes, time-dependent transit changes, and quota limits. On the mobile side, we faced issues around location permissions, map gestures, and clearly communicating app states like loading or recalculating. We spent a significant portion of our time wrangling with Google's OAuth2 on mobile, but eventually it worked. Designing intuitive invite flows proved tricky as well, especially around participant counts and button visibility for different roles. We also integrated agentic AI with tool calls to assist with planning, which brought its own challenges in coordinating backend responses. On top of all this, we built the project as a team of just two developers, which meant careful prioritization on what tasks need to get done. Getting Google OAuth to work reliably on mobile and rendering maps efficiently across devices were additional hurdles we had to overcome.

Accomplishments

We are especially proud of integrating agentic AI to make event planning smarter and more flexible. Our end-to-end per-user starting location flow “just works,” handling both creators and invitees seamlessly. We also managed to design travel schedules that are clear, readable, and easy to compare, with step-by-step details and icons. Building a smart caching system with automatic refresh on the right triggers was another accomplishment that significantly improved usability. Beyond the technical depth, we maintained a solid, strongly typed codebase with a clean separation of concerns between the mobile UI and service logic. Finally, we polished the participant experience so invited users can fine-tune their routes without ever needing to touch event settings.

What we learned

Throughout development, we learned that the gap between “possible to build” and “pleasant to use” lies in thoughtful UX design, especially around permissions and roles. We discovered that cache invalidation is not just a technical problem but a product one, and that tying it to user actions and domain events made the app both faster and more predictable. We found that designing APIs to mirror real user flows, such as choosing between body or URL parameters for per-user updates, dramatically reduced client complexity. We also came to appreciate how noisy geospatial and transit data can be, and why resilient fallbacks and thorough logging are essential for debugging. Finally, we learned that small guardrails, such as never allowing a creator to unselect themselves from an event, can remove surprising amounts of user friction.

What’s next for SnapEvent

Looking ahead, we want SnapEvent to go beyond basic scheduling into smart discovery and planning. We envision suggesting nearby events and venues by integrating with services like Eventbrite, Ticketmaster, and Google Places. We also plan to introduce “meet in the middle” functionality that automatically proposes fair meeting points based on everyone’s travel time. Polling and voting features will help groups finalize times and locations collaboratively, while real-time updates via WebSockets and push notifications will keep participants informed when schedules change. Calendar integration with Google and Apple, as well as saved preferences like home or campus defaults, will make SnapEvent even more seamless. We also aim to expand support for multimodal trips, improve live transit handling, and add stronger privacy controls and richer user profiles. In the longer term, we see opportunities for multi-location events, live status updates for late or on-time arrivals, and even hotel or overnight booking integration, turning SnapEvent into the go-to platform for effortless group planning.

Share this project:

Updates