This project is submitted for the TECHNATION and the SummerHacks (main) tracks.
Inspiration
Interning this summer, each one of us realized something ridiculous: our closest friends were sometimes a 10-minute walk away, and we had no idea. Between co-op schedules, different internship start dates, and everyone moving between cities every few months, keeping track of who is actually nearby has become a logistical problem in itself. There is an old saying that if you want a village, you have to be a villager. But being a villager first requires knowing who else is in the village. That gap is what we built this to close.
What it does
Beacon is a trust-first friend network and map app for people whose location changes frequently - co-op students, interns, and anyone rotating between cities.
Each user gets a unique friend code on signup. You add friends by code rather than searching or browsing, so the network grows only through existing relationships.
Once connected, friends can share check-ins that appear as overlays on your map, along with place recommendations. If someone’s activity is too much for your main view, you can move them to a watchlist so they stop appearing in the shared map without removing the friendship.
Beacon also includes a calendar flow for publishing events to friends, RSVP tracking, and photo sharing. We built a live explore page too, but it only shows aggregate regional activity counts like check-ins, friend adds, and event joins - never names, photos, or exact locations.
The most playful part of the project is Bump: two people can open Bump Mode, shake near the same time and place, and get paired into a durable shared connection without manually typing a code.
A successful bump unlocks a shared album for that pair: each person draws a pixel-art cover, and together they build a collaborative receipt for the next 24 hours - three songs each, photos added in pairs, and an optional shared note, with both people seeing everything live as it's added. When the window closes, it locks into a keepsake: a Receiptify-style paper receipt, a photobooth strip, and an exportable Spotify playlist of everyone's picks.
How we built it
Beacon is a TypeScript monorepo built with npm workspaces.
- Frontend: Vite, React 19, React Router, Leaflet, and react-leaflet for the interactive map experience.
- Backend: Hono running as a local Node dev server and as serverless functions on Vercel.
- Shared types: a
packages/sharedpackage with reusable Zod schemas and constants. - Database: Neon serverless Postgres with Drizzle ORM.
- Auth: Neon Auth, verified server-side with JWTs using
jose. - Storage: Vercel Blob for uploaded images like avatars, check-in photos, event photos, and photobooth-style exports.
- Music: Spotify API for song search and playlist export on locked receipts. Geolocation: Vercel edge geo headers for city/region/country/lat-lng, used for map placement, bump matching, and the public tally.
- Deployment: Vercel, with a local dev server that mirrors the same Hono API for fast iteration.
Challenges we ran into
The hardest part was making the social graph feel private and intentional while still being easy to use. We had to balance friend-code onboarding, watchlisting, event fan-out, and map visibility rules so the same relationship could behave differently depending on context.
Another challenge was making Bump reliable enough to feel magical. Matching two devices based on motion and timing had to work without long-lived connections, so we built it as a short-lived server-side rendezvous that resolves into a durable session.
Accomplishments that we're proud of
We’re proud that Beacon does more than track location. It creates a layered system of trust: friend codes, watchlists, event access, and a public page that shows only aggregate activity.
We’re also proud of the product feel. The app combines a practical map-and-calendar workflow with a memorable bump interaction, so the social graph feels lightweight instead of invasive.
What we learned
We learned how much product design matters when the underlying feature is sensitive. For location-adjacent features, the details around consent, visibility, and trust are just as important as the map itself.
We also learned a lot about building a full-stack TypeScript app with shared types, serverless deployment, and a database-backed API that still works well in local development.
What's next for Beacon
Next, we’d like to improve check-in discovery, make the map more expressive, and expand the social side with richer event and photo experiences. We’d also like to keep refining Bump so it works even faster and more reliably across devices.
Built With
- drizzle-orm
- figma
- hono
- leaflet.js
- neon
- postgresql
- react
- spotify
- typescript
- vercel
- vite
Log in or sign up for Devpost to join the conversation.