Muhamed Isabegovic
All projects

hunt.rubyconf.at

A treasure hunt across Vienna for RubyConf Austria 2026, where every clue unlocks only near its real place. Now open source, so any conference can run its own.

Role
I built it, for the conference I co-organised
Event
RubyConf Austria 2026, Vienna, 29 to 31 May 2026: two hunts, 39 clues
Built with
Rails 8.1, Hotwire, Tailwind, Solid Queue, PostgreSQL; Kamal or Railway
Tests
419 tests, 89% line coverage
License
MIT, Ruby Austria
The landing page: Hunt for treasure across Vienna. Two hunts crafted for RubyConf Austria attendees; one ends at a 3,000 euro treasure chest.A clue in progress: The Hidden City, clue 8 of 19, The Drawn Curtains, with a hint button and a Check if I'm close button.
The landing page and a clue in progress, on demo data.

A conference that spills into the city.

At RubyConf Austria 2026, attendees explored Vienna in teams, solving clues that only make sense where they stand.

The city is the board. Each clue is a riddle about a real place, and it unlocks only when the team is there. Two routes ran across the three days of the conference; one ended at a treasure chest.

What it does.

  1. Clues that unlock where they stand.

    A team checks its position, and the app answers cold, closer, warm or hot, until it is close enough to claim the clue. The check runs on the server, against the clue’s own location.

    A clue screen with the message Getting closer! Keep going.A clue screen with the message You're very close! Time to claim! and a green Claim the clue button.
    Getting closer, then close enough to claim.
  2. Hints on a cooldown, teams on a leaderboard.

    A stuck team can reveal a hint, and the next one waits thirty minutes. Teams share their progress, and a live leaderboard shows every route, so the hunt stays a race to the end.

    A revealed hint and a countdown: next hint in 29 minutes 58 seconds.The leaderboard: teams on two routes with their progress, the player's own team marked You.
    A revealed hint with its cooldown, and the standings.
  3. Rebrand it in one file.

    Everything about the event, from its name and city to its dates, colour and logo, lives in one file. Hunts and clues are built in the admin or as seed files, and the RubyConf Austria hunts ship as a worked example. It deploys with Kamal or Railway; for a few hundred phones, a small box is enough.

    config/conference.yml

    # Conference branding — the single place to rebrand the app for your event.
    # Everything here is safe to change; no code edits needed.
    conference:
      name: "RubyConf Austria 2026"
      short_name: "RubyConf Treasure Hunt"
      city: "Vienna"
      dates: "May 29–31, 2026"
      theme_color: "#e30818"
      logo_asset: "rubyconf_logo.svg"
      website_url: "https://rubyconf.at"
  • An admin for the organisers.

    Hunts, clues, locations, attendees and teams are managed in one admin, with bulk entry for attendees.

  • A web app you install.

    It installs to the home screen as a progressive web app, with an offline page when the signal drops in an old city centre. Clues are checked and claimed online.

  • Tested, and kept that way.

    419 tests run with every change, alongside Brakeman, RuboCop and the ERB lint in CI. The public history starts from one fresh commit of the finished platform.

What it shows about how I work.

I build the thing the event needs, run it live for the people in the room, and then make it useful for the next person: documented, configurable in one place, tested, and open. Organising a conference and shipping its software in the same months is the kind of ownership I bring to a team.

Building something?

Tell me what you are building, and I will tell you honestly whether I can help.

Get in touch

Want a second opinion?

Start with an architecture review. Fixed scope, one to two weeks, and a plan your team can act on.

About the review

Or email info@muhamed.at