Inspiration

Everyone has hot takes, but there's rarely an easy way to see how those opinions stack up against the rest of the world. I wanted to build a tiny daily ritual around that curiosity: a single, simple question, a slider instead of a button, and an instant look at where you land on the spectrum of human opinion. As a solo, first-time iOS developer, I set out to turn that idea into a fully polished, production-ready app.

What it does

Gauge is a daily opinion polling app. Four times a day (morning, midday, afternoon, evening) a new topic unlocks. You drag a 0-100 slider to rate how you feel, then instantly see how your answer compares to the live global vote distribution. Over time, Gauge builds a personality profile out of your voting history, sorting you into "tribes" like Contrarian, Diplomat, Firebrand, Populist, or Independent, and surfaces contradictions in your own opinions with an "Opinion Mirror" feature.

Under the hood there are 17 behavioral-psychology mechanics driving engagement: curiosity gaps, loss-aversion streaks, a ~15% chance variable-ratio mystery reward on any given vote, social proof via live vote counters, anchoring effects, a prediction game, achievements, daily/weekly challenges, a GitHub-style voting calendar, and weekly leagues. A home screen widget, an interactive quick-vote widget, and a Control Center toggle let you vote without even opening the app.

How I built it

Gauge is built entirely in SwiftUI targeting iOS 18+, using Swift concurrency throughout. Supabase powers the backend: Apple Sign In for auth, real-time vote syncing, and leaderboards. Persistence is handled with SwiftData behind a custom migration layer. Subscriptions (monthly $1.99 / yearly $14.99) and a tip jar run on StoreKit 2, with a freemium model spanning 12 Pro features, soft paywalls, and a milestone trial offer at a 7-day streak. Users can personalize their experience with 8 app icons (3 free, 5 Pro) and 6 color themes.

Content is never a bottleneck: 365 days of topics are seeded across 8 categories, and a Claude Haiku-powered edge function auto-generates new daily topics going forward. Claude Code was used throughout development to help design, implement, and debug the app. The stack is rounded out with content moderation, crash reporting, and server-side analytics, plus a full Privacy Policy and Terms of Service.

Challenges I ran into

Balancing 17 different behavioral mechanics so the app feels delightful rather than manipulative was the hardest design problem, every reward system was tuned and re-tuned to encourage a daily habit without feeling exploitative. Building a reliable time-locked voting window system (four unlock times per day, synced against real-time global results) required careful handling of state, caching, and edge cases around timezones and connectivity. Doing all of this solo, as a first iOS app, while also standing up a real subscription business with StoreKit 2 and a Supabase backend, meant wearing every hat: design, backend, growth, and legal (privacy policy and terms included).

Accomplishments that I'm proud of

Shipping a fully-featured, monetized, production-quality iOS app (widgets, real-time backend, subscriptions, gamification, and all) as a solo developer's first app. Getting an AI content pipeline (Claude Haiku) reliably generating fresh daily topics on top of 365 days of hand-seeded content across 8 categories.

What I learned

How much thoughtful, ethical design work goes into gamification and behavioral hooks so that they build a genuine daily habit instead of feeling manipulative. A huge amount about SwiftData migrations, real-time Supabase sync, and orchestrating StoreKit 2 subscriptions alongside a tip jar. Also how much Claude Code and Claude Haiku can accelerate a solo developer's ability to design, build, and populate a complex app.

What's next for Gauge

Expanding the topic categories and community voting tribes, deepening the personality-profile and prediction-game mechanics, and growing Gauge's daily ritual into a broader social layer around shared opinions.

Built With

  • 18
  • claude
  • code
  • concurrency
  • haiku
  • ios
  • storekit
  • supabase
  • swift
  • swiftdata
  • swiftui
  • widgetkit
Share this project:

Updates