$ cd /projects/bpckr
2026-03-09

← back

bpckr.com — The Backpacker's Companion

GitHub: github.com/dabooze/bpckr (private)


PRE — Idea · Setup · Build

Goal: Build a travel diary app for backpackers that turns check-ins
into stories and broadcasts your adventures to friends via Facebook.

Australia, 2011. Every hostel had a "computer room" — a row of ancient PCs where backpackers sat hunched over Facebook, laboriously uploading photos and typing status updates to let friends and family back home know they were still alive. The same ritual, every hostel, every night.

I watched this for weeks and thought: this needs to be mobile. An app where you check in at locations, attach photos, write diary entries, and it automatically creates a beautiful trip timeline — shareable with everyone back home without the nightly Facebook ritual.

The killer feature: Facebook's API in 2011 was wide open. You could post directly into other people's feeds via check-ins. So every time you checked into "Ratu Kini's Backpackers Hostel, Mana Island (Fiji)" — all your friends saw it. Free viral distribution. Every check-in was an ad for the app.

The idea came purely from observing backpackers in Australian hostels.

Stack:
  - Ruby on Rails 3.1
  - Bootstrap (one of the first CSS frameworks with mobile rendering)
  - MySQL
  - Facebook API (Koala + Mogli + mini_fb — three FB gems, deep integration)
  - Google Maps API (gmaps4rails — forked to my own GitHub for customization)
  - AWS S3 + Paperclip (photo uploads)
  - Geokit + Geocoder (location services)
  - Devise (authentication)
  - delayed_job (background processing for Facebook wall posts)
  - Capistrano (deployment)
  - Heroku (secondary deployment)

The Data Model

The app was organized around Trips and Events. A trip was a journey (like "Australia / Fiji 2011"), and events were everything that happened along the way. Seven event types covered the full backpacker experience:

Event types:
  - Start trip at home airport
  - Airport stop while en-route
  - Reached airport at overnight location
  - Check-in at overnight location
  - Visit sightseeing attraction
  - Sports activity
  - Back at home airport

Each event had GPS coordinates, a date, optional diary text, and a photo gallery. The app rendered Google Maps static images for every check-in and uploaded them to S3 — those map thumbnails appeared in the Facebook wall posts alongside your location.

Trip status tracked automatically: Planned, Ongoing, or Completed. Facebook messages adapted accordingly — "I am currently travelling on my trip" vs "I just added some memories to my finished trip." The background job queue fired off wall posts asynchronously so the UI stayed snappy.

The Viral Loop (And Why Facebook Killed It)

The entire viral strategy was built on Facebook's open Graph API. Three types of automated wall posts:

  1. Trip created → "Dan is planning to go on a backpacking trip"
  2. Event check-in → "Trip diary update" + Google Maps thumbnail
  3. Photos added → "Added 6 new photo(s) for 'Scubadiving at GBR'"

Every post included an "actions" link: "Go backpacking with bpckr.com" pointing back to the Facebook Canvas app. The idea was simple: your friend in rainy Hamburg sees "Dan arrived at Paradise Beach, Fiji" in their feed, clicks through, and signs up out of curiosity.

POST — Learnings · Afterthoughts · Timeline

What happened:

Built it before leaving for New Zealand. Used it actively on a 6-week trip across both islands over New Year's 2011/2012, plus the earlier Australia/Fiji trip — 34 events logged on one trip alone. Scuba diving at the Great Barrier Reef, hostels in Fiji, airports across the Pacific. The app worked exactly as designed.

Users: zero. Just me.

The product worked. The distribution didn't. Every check-in triggered an automated wall post to everyone I knew. "Dan arrived at Paradise Beach, Fiji" — while they sat in German winter. Subtle it was not.

Then Facebook started locking down the API. You could no longer post into other people's feeds. Facebook began curating feeds, restricting third-party app visibility. The entire viral loop — which was 100% of the growth strategy — evaporated overnight. And honestly, fair enough. The API was being abused by every app on the platform, including mine.

The server ran until January 2014. Last commit: "latest prod db dump added before tearing down live server." Even saved the database before pulling the plug. 345 commits in total.

Learnings:
  - Building on someone else's platform is renting, not owning.
    Facebook giveth the viral API, Facebook taketh away. The
    entire product died because one company changed one policy.
  - Zero users doesn't mean the product was bad. It means the
    distribution was bad. The app itself worked great — I used
    it daily for months. But "works for the builder" and "grows
    organically" are completely different problems.
  - Bootstrap in 2011 was revolutionary. One of the first CSS
    frameworks that made mobile-responsive design accessible to
    solo developers. The mobile web app screenshots still look
    clean 15 years later.
  - Solo travel + solo development = the ultimate dogfooding
    experience. I was simultaneously the developer, the user, the
    QA team, and the marketing department. Debugging check-in
    issues from a hostel WiFi in Fiji at 2 AM.
  - The Facebook API era (2008-2013) was a golden age for
    indie developers. The platform was open, the reach was free,
    and if you had an idea, you could ship it and find users
    overnight. That world is gone.

Timeline:
  - 2011-06: Australia/Fiji trip. Observed the hostel computer
    room ritual. The idea crystallized.
  - 2011-09-12: First commit. Rails 3.1, Facebook integration,
    Google Maps, the works.
  - 2011-12 to 2012-02: New Zealand trip. 6 weeks, both islands.
    Active daily use. 34 events on one trip alone.
  - 2012-2013: Continued development. 345 total commits.
    Heroku deployment alongside main server.
  - 2014-01-07: Last commit. Database dumped, server torn down.
    The Facebook API had changed too much to be viable.

Status: Dead. The code survives in ~/Arbeit/railsprojects/bpckr
  (345 commits). The database dump is there too. The domain is
  gone. Facebook's API is locked down. But somewhere in S3,
  there might still be Google Maps thumbnails of Fijian hostels
  with a red pin labeled "1".