A week in Lisbon, told the way Haunts records it, one check-in at a time (1:51).
At Launch
120+
API Endpoints
89
Stickers & Achievements
80+
Total Screens
250K+
Lines of Code
5
Day Sprint
The Outcome

Haunts went from a five-day prototype to a live product in both app stores, with more than 100 daily active users and over a million check-ins, built and run by one architect. The test suites and review process behind it make up the methodology MDPSync now teaches client teams, and the six-month follow-up covers how.

The Challenge

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, with no new features.

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.

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 covers a 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. A traditional estimate puts that scope at 4-6 months and $400K or more.

The Solution

One Architect With AI Tools in Five Days

A senior architect made every design decision while AI handled execution at 10x velocity, which is what MDPSync calls its vibe-coding methodology.

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.

Haunts.io History Feed
What We Built

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.

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.

Platform Showcase

See It in Action

Haunts.io history feed with venue cards, weather, and Spotify context

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. The feed reaches back through 15 years of location history.

Haunts.io World Heatmap

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.

Haunts.io sticker book showing collectible stickers across Legendary, Epic, and Rare tiers

57 Stickers and 32 Achievements

Stickers are assigned automatically from venue category, time of day, and visit frequency, and there are 57 of them across rarity tiers (Common, Rare, Epic, Legendary) plus dedicated flight and road sets. 32 achievements with XP progression unlock as you explore, and you can compete for mayor crowns at your favorite spots, maintain check-in streaks, and climb the leaderboard. Post-check-in nudges mark firsts and flag when an achievement is within reach.

Haunts.io Stats Dashboard

Your Stats at a Glance

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.

iOS & Android

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.

Haunts.io mobile feed with check-in cards, Mayor badges, and weather Feed
Haunts.io airport check-in compose with destination prompt asking where you are going Where To?
Haunts.io 3D Mapbox globe view of every check-in Globe
Haunts.io stats dashboard with XP level, streaks, and leaderboard Stats
Haunts.io post-checkin confirmation showing the saved flight from LAX to JFK Saved
Haunts.io profile screen with the flights tab open Profile
Under the Hood

Technology Stack

Backend & API

PHP 8.x MySQL 9.6 Firebase Auth REST API (120+ endpoints) Cron Jobs (30+) Cloudflare Fastly CDN

Web Application

React 19 TypeScript Vite Tailwind CSS MapLibre GL Zustand TanStack Query Framer Motion

Mobile Application

React Native Expo SDK 54 MapLibre Native Firebase Auth Push Notifications iOS WidgetKit Android Widgets Apple Watch (SwiftUI) Wear OS (Kotlin)
Beyond the Code

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.

Built in 5 Days and Perfected Over Two Months

Then We Perfected It

After the sprint, the same architect and AI tooling spent every session adding social depth, travel surfaces, media, and the hardening that only comes from using an app daily and fixing what annoys you, which turned a working demo into something solid enough to live in every day.

Pulse Social Feed

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 turn the feed into a live dashboard.

Road Trips

A declared drive 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.

Platform Maturity

A 30-day trash bin recovers deleted trips, photos, and check-ins, and the app has had an accessibility pass, a performance pass, and green test suites across web and mobile.

110 database migrations, 350+ components across web and mobile, 250K+ lines of code.

Travel, Mapped

From Airport Check-In to Saved Flight

The first time you check in at the gate, the app saves your flight before you have boarded. The new flights feature in Haunts is built around that moment.

By the time the plane lands, the route is on the map, the distance is calculated, the airline and flight number have been pulled from the post you wrote at the gate, and the leg is grouped into a trip with a title the app suggested for you.

Haunts.io trip recap rail counting days, distance, cities, countries, and flights
Haunts.io world atlas with great-circle flight arcs across the globe

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, as flights 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 flights taken, airports passed through, and countries 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.

Haunts.io flights atlas filtered to a single year with the chronological list below

Year Filters, Totals, Tap-to-Detail

Choosing a year narrows the totals and arcs to that window and rebuilds the list underneath in chronological order. A single-arc detail card opens from any flight in the list, with edit, share, visibility, and delete actions in one row, plus links back to the check-ins on either end of the leg. Sharing from that card produces a token-protected link that anyone can open in a browser without an account or a Haunts install, and when the link gets pasted into iMessage, the preview carries a card with the route on it.

Haunts.io flight detail card showing the LAX to JFK arc with edit, share, visibility, and delete actions

Saved as LAX to JFK

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, so picking JFK from the typeahead finishes the job. 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.

Haunts.io trip page with arc map, regional sub-trip atlas, numbered chronological pins, and recap rail

The Trip Page

A parent trip with several legs and several cities renders the arc map for the flights, with a regional sub-trip atlas underneath. Numbered pins mark the cities you visited in chronological order and a dashed journey line joins them, while a recap rail to the right counts days, distance, cities, countries, and flights for the trip as a whole.

Live Haunts trip share page for a 22-day Amsterdam, Gouda, and Delft trip with auto-generated recap, sub-trip city grid, flights table, and great-circle arc map, served at /t/{token} with no account required.

Shareable Trip Pages

Haunts titles every trip from the cities it touches, adds an arc map, and writes a recap from the check-ins, the venues, and the timeline of the legs. A share token minted from the trip detail page turns the same page into 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 without an account. The page is served from /t/{token} with Open Graph previews, so the link carries a 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.

View the live trip →

Haunts.io web trip page showing trip details, recap, and route map
On the Web
Haunts.io mobile flights tab showing the atlas one tap away
In Your Pocket
Haunts.io Apple Watch showing nearby venues list
On the Wrist
Haunts.io on Android Auto showing road trip stops and live map
In Your Car
Watch Companion

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. At a venue, you raise your wrist and tap to confirm, with no typing.

Haunts.io Apple Watch showing nearby venues list
Haunts.io Apple Watch check-in prompt with venue and buttons
Haunts.io Apple Watch showing XP earned after check-in
Car Companion

In Your Car

Haunts runs on your car’s display through Android Auto and CarPlay. On 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.

Haunts.io Android Auto home screen with no active trip and Start trip button
Haunts.io Android Auto showing road trip stop list alongside the live map
Haunts.io Android Auto tracking an active road trip with Pause and End controls
Results & Why It Worked

The Vibe-Coding Advantage

120+
API Endpoints
80+
Total Screens
30+
Background Jobs
110
Database Migrations

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, with all five surfaces from one architect.

5 Days Instead of 5 Months

Ship a complete check-in platform with web app, mobile app, gamification, and social features in under a week.

Production Quality

120+ API endpoints, Firebase authentication, push notifications, native home screen widgets, data import/export, and a full admin dashboard, with 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.

The Math

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. The team would start with a senior backend engineer for the API and the cron pipelines, a web frontend lead for the React app, and a mobile lead for the React Native app. An iOS specialist would handle the widgets, Apple sign-in, and the Apple Watch app, alongside an Android specialist who also knows Wear OS, a rare pairing on its own. The team would also include a mapping engineer who knows how to draw flights the way they fly and snap road trips to real roads, an AI engineer for the airline extraction, the trip summaries, and the venue review write-ups, and a media engineer for the chunked video pipeline and the transcoding workers. The remaining four are 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, and a project manager to keep the rest from stepping on each other.

The scope starts with a web app, a native mobile app, two watch apps, more than a hundred and twenty REST API endpoints, and thirty-plus background jobs. On top of those sit 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, and a live Swarm sync that keeps pulling new check-ins. The travel side adds 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, and photo and video trip albums with a transcoding pipeline. Share tokens turn any trip into a public preview link, and image share cards are rendered for iMessage and X. A hundred and ten database migrations hold it all together, and the whole stack adds up to about 250K lines of production code. At 2025 US agency rates of $175–$300/hour per specialist over eighteen to twenty-four months, the math lands at $2M to $4M, while one architect with AI tooling delivered the same result by shipping the platform in a five-day sprint and perfecting it over the two months since.

Traditional Agency
18–24 months
Backend Engineer Web Frontend Lead Mobile Lead iOS / Apple Watch Specialist Android / Wear OS Specialist Mapping Engineer AI Engineer Media Engineer DevOps Engineer UI/UX Designer QA Engineer Project Manager
$2M – $4M
Vibe-Coding with MDPSync
5-day sprint + 2 months of sessions
Senior Architect + AI
A fraction of the cost

Tell Us What You Want Built

You have just seen five surfaces, a flight atlas, and 250K lines of production code from one architect, and a few lines about your project are enough for us to tell you what it takes.


Or call us directly: 703.996.3037