The App I Loved Stopped Growing. So I Built a New One.
Foursquare was great until they split it into two apps. Most people I knew never made the jump to Swarm, and over time the community thinned out. Lately Swarm feels like a product in maintenance mode: no real new features, no momentum, just coasting.
Over 6,700 check-ins spanning 15 years of travel, dining, and daily life, all sitting in a data export ZIP file. No app on the market preserves the full Swarm experience: the gamification (stickers, mayors, streaks), the interactive maps, the searchable history, the social features. Everything available is either a stripped-down check-in tool or a location-sharing app that misses the point entirely.
Building a proper replacement traditionally would require a backend team, a React frontend team, a mobile team, a designer, and months of coordination. The scope is massive: REST API with authentication, dual-database architecture, interactive maps, a gamification engine, social features, third-party integrations (Spotify, weather, Foursquare Places), push notifications, home screen widgets, and an admin dashboard. The traditional estimate: 4-6 months and $400K or more.
One Architect, AI Tools, Five Days
MDPSync’s vibe-coding methodology: a senior architect making every design decision, with AI handling execution at 10x velocity.
Day 1: Full web application and entire backend API launched. History feed, venue pages, interactive world heatmap, stats dashboard, gamification system with stickers and achievements, lists, trips, Spotify integration, and weather backfill for all 6,700+ imported check-ins.
Day 2: Native mobile app shipped with check-in flow, MapLibre maps, stats, and push notifications. Landing page redesign with floating screenshots.
Days 3-4: Social features (comments, leaderboard, coincidence detector), sticker system overhaul with rarity tiers, Foursquare Places API migration, data import/export, iOS WidgetKit and Android home screen widgets.
Day 5: Venue notes and custom tags, achievement nudges, countries collection, revisit queue, trip enrichment with photos and first-visit tracking.
A Complete Check-In Platform
Check-In System
Search nearby venues, check in with notes, photos, and tags. Auto-detect trips when traveling 100+ km from home. Full Foursquare Swarm data import.
Interactive World Heatmap
MapLibre-powered heatmap with year slider to watch your travel history unfold. Country collection tracking and trip route visualization.
Gamification Engine
57 stickers across rarity tiers (Common to Legendary, plus flight and road sets), 32 achievements with XP progression, mayor system, streaks, and competitive leaderboards.
History Feed
Searchable check-in history with filters by date, city, country, category, and tags. Full Foursquare/Swarm import of 6,700+ check-ins with venue details.
Native Mobile App
React Native + Expo SDK 54 with 42 screens, nearby venue picker, MapLibre maps, push notifications, and iOS/Android home screen widgets.
Spotify Integration
Automatically captures what song was playing at each check-in time via Spotify API OAuth connection. A soundtrack for every place you’ve been.
Weather Backfill
Historical weather data retroactively applied to every check-in, including all 6,700+ imported ones. Temperature, conditions, and icons on every card.
Social Features
Follow friends, comment on check-ins, coincidence detector (same venue, same day), feed broadcasts for unlocks, and shared venue lists.
Stats & Analytics
Personal stats dashboard with totals, streaks, XP progression, venue frequency, city breakdowns, and “on this day” memories from previous years.
Lists & Collections
Bucket list, revisit queue (places not visited in 90+ days), custom venue lists, countries collection with progress tracking and first-visit dates.
Admin Dashboard
Analytics, user management, cron job monitoring, venue moderation, system health checks, and audit logging for the entire platform.
Theme & Privacy
Full light/dark theme support across web and mobile, granular privacy controls, profile visibility toggles, and complete data export at any time.
See It in Action
Your Check-In History, Fully Searchable
Every check-in you have ever made, imported from Foursquare Swarm and enriched with weather data, Spotify context, and venue details. Filter by year, city, country, category, or custom tags. Each card shows the venue, timestamp, photos, sticker earned, distance from home, and what song was playing. 15 years of location history, instantly accessible.
Your World on a Map
An interactive MapLibre heatmap that visualizes every place you have been. Drag the year slider to watch your travel history unfold over time. Clustered venue pins with zoom detail, country collection tracking with first-visit dates, and auto-detected trip routes when you travel 100+ km from home. The map tells the story of where you have been and how your world has expanded.
57 Stickers, 32 Achievements, Infinite Motivation
A full gamification system built from scratch. 57 stickers across rarity tiers (Common, Rare, Epic, Legendary) plus dedicated flight and road sets are automatically assigned based on venue category, time of day, and visit frequency. 32 achievements with XP progression unlock as you explore. Compete for mayor crowns at your favorite spots, maintain check-in streaks, and climb the leaderboard. Post-check-in nudges celebrate firsts and alert you when achievements are within reach.
Stats That Tell Your Story
A bento-grid stats dashboard with totals for check-ins, unique venues, cities, states, countries, photos, and mayorships. Track your streaks, view venue frequency charts, and relive past years with the year-in-review recap. The “on this day” feature surfaces memories from previous years, and the leaderboard adds friendly competition with week, month, and all-time tabs.
Check In From Anywhere
A native React Native and Expo mobile app with nearby venue search, MapLibre maps, a 3D Mapbox globe view, push notifications, and home screen widgets for quick check-ins. Everything syncs instantly with the web app, and an airport check-in now turns into a saved flight on its own.
Feed
Where To?
Globe
Stats
Saved
Profile
Technology Stack
Backend & API
Web Application
Mobile Application
Production Infrastructure
A dedicated web server running Apache with PHP-FPM, a separate MySQL 9.6 database server, Cloudflare for DNS and security, and Fastly CDN for photo delivery. 30+ background cron jobs handle weather backfill, Spotify enrichment, streak calculations, achievement evaluation, trip and road detection, video transcoding, AI recap generation, push notifications, and sticker rule processing. OPcache tuning, connection pooling, and query optimization keep response times under 200ms.
Then We Perfected It
The five-day sprint shipped the platform. The two months after shipped the product. Same architect, same AI tooling, every session turning a working demo into something solid enough to live in every day. Social depth, travel surfaces, media, and the hardening that only comes from using an app daily and fixing what annoys you.
Pulse Social Feed
The feed became a live dashboard: standings with rank deltas, trending venues your friends are visiting, a collapsible map of where everyone is right now, and filter chips by kind, category, and person.
Road Trips
Declare a drive and the route snaps to real roads on the map with distance and states crossed. Shared road trips draw a colored line per driver, rank everyone on miles, and award road-specific stickers.
Trip Albums
Photo and video albums on every trip, with resumable large-video upload and async transcoding. Shared trips let companions contribute, and everything is readable as a public recap page.
Points & XP Engine
Per-checkin scoring with sticker multipliers, first-visit bonuses, and milestone rewards. Each check-in shows a tier breakdown so you know exactly what you earned and why.
Friends & Social Graph
Search by username, QR invites, contact import, and a unified activity inbox for requests. A public profile atlas mirrors the web, so anyone can browse your trips, flights, and photos.
Live Swarm Sync
Beyond the one-time import: an ongoing, rate-capped connection that keeps pulling new Swarm check-ins into Haunts automatically, deduped against what you have already, with a reconnect path when it stalls.
AI Recaps & Reviews
Claude Sonnet and Haiku write trip recaps, suggest trip titles, and summarize the reviews on a venue. Contextual narrative on every place and journey, with no one typing a word.
Platform Maturity
A 30-day trash bin recovers deleted trips, photos, and check-ins. An accessibility pass, a performance pass, and green test suites across web and mobile turned the sprint demo into a product that holds up.
110 database migrations, 350+ components across web and mobile, 250K+ lines of code and counting. This is what vibe-coding looks like when you stick with it past the demo.
From Check-In to Saved Flight, Without Lifting a Finger
The first time you check in at the gate and watch the app save your flight before you have boarded, the feature stops being software and starts feeling like a travel companion that was paying attention. That is the moment the new flights surface in Haunts is built around.
Every airport check-in is the start of a journey instead of a pin on a list, and by the time the plane lands the route is already on the map, the distance is already calculated, the airline and flight number have already been pulled from the post you wrote at the gate, and the leg is already grouped into a trip with a title the app suggested for you.
Every Flight, On One Map
Open the flights page on the web and every leg you have ever flown is drawn as a single arc on a dark world map. The arcs follow the curve of the earth, which is what flights actually do, so a long route across the Pacific reads correctly instead of bending back through the wrong half of the world. A counter across the top tracks how many flights you have taken, how many airports you have passed through, and how many countries you have reached by air. A row of year chips below the map lets you scope the view to a single year without losing the rest of the picture.
Year Filters, Totals, Tap-to-Detail
Tap any year and the totals shift to that window, the arcs thin out to that window, and the list underneath rebuilds itself in chronological order. Tap any flight in the list and a single-arc detail card opens with edit, share, visibility, and delete actions in one row, plus links back to the check-ins on either end of the leg. Share a flight from that card and you get a token-protected link anyone can open in a browser. They do not need an account, they do not need to install Haunts, and the preview that shows up when the link gets pasted into iMessage carries a real card with the route on it.
Saved as LAX to JFK
On mobile the headline is the check-in flow itself. Walk up to the gate at LAX, open the app, tap check in, and the airport venue appears with one extra field at the bottom asking where you are going. Pick JFK from the typeahead and the work is done. By the time the feed loads on the next screen the flight card is already there, the arc is already drawn, the distance reads 2,475 miles, and a small confirmation line shows the flight was saved as LAX to JFK. If you forgot to check in at the destination, a half-flight completion flow lets you pick the missing endpoint after the fact, and the picker works in either direction so a stray check-in at FRA can become an origin or a destination depending on how you remember the leg.
Trips That Tell the Whole Story
A trip page goes further. A parent trip with several legs and several cities renders the arc map for the flights and a regional sub-trip atlas underneath, with numbered pins dropped on the cities you visited in chronological order, a dashed journey line stitching them together, and a recap rail to the right counting days, distance, cities, countries, and flights for the trip as a whole. Trips with one flight read like a single leg. Trips with twelve read like a story you can scroll.
The Page That Writes Itself
Every trip auto-titles itself from the cities it touches,
picks up its own arc map, and gets a story written from the
check-ins, the venues, and the timeline of the legs. Mint a
share token from the trip detail page and the same page
becomes a public link. A guest who has never installed
Haunts can open it, read the trip end to end, see the flight
arcs and the sub-trip atlas, and read the AI-generated
recap, all without an account, all served from
/t/{token} with proper Open Graph previews so
the link carries a real card when it gets pasted into
iMessage. The one below is a real trip, twenty-two days
through Amsterdam, Gouda, and Delft, written and rendered
without anyone typing a word.
On the Wrist
Haunts ships on both wrists: a native Apple Watch app in SwiftUI and a native Wear OS app in Kotlin. The work since launch has been to make each feel like an extension of the phone instead of a second app to log into. The watch signs in through the phone automatically, falls back to the last known location when GPS is slow to settle, and recovers cleanly when the link between the two devices stalls. Walk up to a venue, raise your wrist, tap to confirm, feel the haptic pattern, done. No typing, no logging in, no second account to manage.
In Your Car
Haunts runs on your car's display through Android Auto. Your route traces in real time as you drive, nearby places sit one tap away, and you can start, pause, or end a road trip right from the dash without reaching for your phone. CarPlay is on the way.
The Vibe-Coding Advantage
React web app, React Native iOS and Android, native Apple Watch and Wear OS companions, PHP REST API, XP scoring engine, full social graph, gamification, and 30+ background jobs. Five surfaces, one architect, a fraction of what an agency would charge.
5 Days, Not 5 Months
Ship a complete check-in platform with web app, mobile app, gamification, and social features in under a week. AI handles the execution while the architect focuses on design decisions that matter.
Production Quality
Not a prototype. 120+ API endpoints, Firebase authentication, push notifications, native home screen widgets, data import/export, and a full admin dashboard. Every pattern reviewed by a senior architect.
Full Stack, One Architect
Backend API, React web frontend, React Native mobile app, background jobs, third-party integrations, infrastructure setup: all designed and shipped by one person with AI assistance.
What the Whole Stack Would Cost the Traditional Way
Building everything Haunts has become through a traditional agency would mean assembling a team of a dozen specialists and keeping them coordinated for the better part of two years. A senior backend engineer for the API and the cron pipelines. A web frontend lead for the React app. A mobile lead for the React Native app. An iOS specialist for the widgets, Apple sign-in, and the Apple Watch app. An Android specialist who also knows Wear OS, a rare pairing on its own. A mapping engineer who knows how to draw flights the way they actually fly and snap road trips to real roads. An AI engineer for the airline extraction, the trip summaries, and the venue review write-ups. A media engineer for the chunked video pipeline and the transcoding workers. A DevOps engineer for the servers and the CDN tuning. A designer for the light and dark themes, the sticker rarity tiers, and the share cards. A QA engineer to keep the seams from leaking. A project manager to keep the rest from stepping on each other.
The scope adds up to a real product. A web app, a native mobile app, two watch apps, more than a hundred and twenty REST API endpoints, thirty-plus background jobs, a full social graph with username search and contact import, a points and XP engine with sticker multipliers and milestone bonuses, AI-driven trip summaries and venue review write-ups, a flight atlas that draws every leg as an arc across a world map, road trips that snap to real roads with per-driver routes, photo and video trip albums with a transcoding pipeline, a live Swarm sync that keeps pulling new check-ins, share tokens that turn any trip into a public preview link, image share cards rendered for iMessage and X, and a hundred and ten database migrations to hold it all together. About 250K lines of production code across the stack. At 2025 US agency rates of $175–$300/hour per specialist over eighteen to twenty-four months, the math lands at: $2M to $4M.
Vibe-coding delivered the same result with one architect, AI tooling that handled the execution, and a fraction of the cost. The platform shipped in a five-day sprint and was perfected over the two months since.
Ready to Build Something Extraordinary?
Let MDPSync bring your vision to life with vibe-coding. From concept to production in record time.