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), 49-sticker 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
49 stickers across rarity tiers (Common to Legendary), 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 23 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.
49 Stickers, 32 Achievements, Infinite Motivation
A full gamification system built from scratch. 49 stickers across five rarity tiers (Common, Uncommon, Rare, Epic, Legendary) 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. 20 background cron jobs handle weather backfill, Spotify enrichment, streak calculations, achievement evaluation, trip detection, push notifications, and sticker rule processing. OPcache tuning, connection pooling, and query optimization keep response times under 200ms.
We Didn't Stop There
The five-day sprint proved the concept. But shipping fast only matters if the product holds up. Over the following weeks, the platform kept growing: new features, a full mobile redesign, and the kind of polish that separates a demo from something you actually want to use every day.
Mobile Redesign
Category emojis on every screen, tier-colored sticker rings, redesigned card layouts, and a bento-grid stats dashboard. The kind of UI details you only get from living with an app daily.
Social Network
Public profiles, followers and following, a friends feed with likes, and social feed segments so you can see what your people are up to. Not just a personal tool anymore.
Gamification v2
XP and leveling system, a sticker picker that suggests contextually relevant stickers, achievement progress tracking, and Mayor badges that show up right on your feed cards.
Native OS Integration
iOS WidgetKit and Android home screen widgets for one-tap check-ins. Dual-source venue discovery pulling from both Google Places and Foursquare. Weather and Spotify data on every check-in.
Android Wear OS
Full native watch companion app in Kotlin Compose. Nearby venues on your wrist, tap to confirm, haptic success pattern on check-in. Auth bridged from phone via the Wearable Data Layer, no separate login.
44 database migrations, 129 React components, ~72K lines of code and counting. This is what vibe-coding looks like when you stick with it past the demo.
We Kept Going
The sprint shipped the platform. The weeks after shipped the depth. Every session added something that moved Haunts.io further from "personal project" and closer to the app Swarm should have become.
Points & XP Engine
Per-checkin scoring with sticker multipliers, first-visit bonuses, milestone rewards, and content contribution XP. Each check-in shows a tier breakdown so you know exactly what you earned and why.
Friends v2
Full social graph: search by username, QR code invites, phone contact import, outgoing request tracking, and a follows-you badge. Friends layer on the map and proximity push when someone checks in nearby.
Swarm Parity
Tags, share pages, check-in reminders, public/private visibility per check-in, and photo uploads to past check-ins. The features Swarm stopped adding, shipped in a single week of sessions.
Review Summaries
AI-generated visit summaries tied to each venue, backed by a Google Places ID backfill across the full check-in history. Contextual insight on every place you've ever been.
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.
Atlas in Your Pocket
On the Wrist
On the Wrist
The watch companion shipped earlier in the year, and the work since has been to make it feel like an extension of the phone instead of a second app to log into. The watch now signs in through the phone automatically, falls back to the last known location when the GPS is slow to settle, and recovers cleanly when the connection 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.
What This Round of Work Would Cost on Its Own
Building the flights surface alone through a traditional agency would mean assembling a different team than the one that shipped the original platform. A mapping engineer who knows how to draw flights the way they actually fly. A mobile developer to wire the destination prompt into the check-in flow without breaking everything else. An AI engineer to pull the airline and flight number out of a free-text post at the gate. A backend developer for the share tokens and the visibility model. A designer for the share card. A QA pass to make sure the half-flight completion does not corrupt anyone’s history.
The watch app polish runs on a separate track because the engineer who knows Android also has to know the watch toolkit, and the two skill sets together are uncommon. At 2025 US agency rates over eight to ten weeks, the math for this round of work lands somewhere in the $200,000 to $400,000 range, on top of what the original platform already cost.
Vibe-coding shipped the same scope in nine calendar days, with the same architect and the same AI tooling that built the platform in the first place. The cost was a fraction of the agency number, and the work is already in production.
The Vibe-Coding Advantage
React web app, React Native iOS and Android, Wear OS companion, PHP REST API, XP scoring engine, full social graph, gamification, and 23 background jobs. Four platforms, 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. 70+ 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 eleven specialists and keeping them coordinated for the better part of a year. 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 widgets and Apple sign-in. An Android specialist who also knows the watch toolkit, which is a rare hire on its own. A mapping engineer who knows how to draw flights the way they actually fly. An AI engineer for the airline extraction, the trip summaries, and the venue review write-ups. 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, a watch app, more than seventy REST API endpoints, twenty-three 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, share tokens that turn any trip into a public preview link, image share cards rendered for iMessage and X, and forty-four database migrations to hold it all together. About 100K lines of production code across the stack. At 2025 US agency rates of $175–$300/hour per specialist over twelve to fifteen months, the math lands at: $1.4M to $2.5M.
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 has kept growing since.
Ready to Build Something Extraordinary?
Let MDPSync bring your vision to life with vibe-coding. From concept to production in record time.