Home
All projects

How Many Beers

Open. Snap. Confirm. +1.

Three screens from the beer tracker side by side: a Groups screen headed "Beer is better with friends.", a Stats screen with most-common beer, lifetime counts and a twelve-month chart, and a public profile with beer counts, achievements and a photo history.
Status
LiveShipped and publicly available.
Started
Updated
Role
Product Design, Architecture, Development Orchestration, Validation Planning
Built with
  • React Native
  • Expo
  • TypeScript
  • Expo Router
  • Swift
  • Apple Vision
  • Supabase
  • PostgreSQL
  • Jest

Overview

How Many Beers is an iPhone-only social beer tracker built around one intentionally small interaction: take a fresh photo of a beer, confirm what you are drinking, and add one to your history.

Traditional beer apps often ask for ratings, tasting notes, ABV, search, or detailed metadata. I wanted the opposite. The target loop is closer to camera → photo → confirm → +1. A repeated order can be logged through “Same as Last,” while each photo gradually builds a visual beer history, personal statistics, group activity, and a global count across the service.

The How Many Beers home screen: a running count of beers logged, tiles for today and all time, a large Log a Beer button, a
The home screen is the loop. One primary action, a one-tap repeat for the same order, and the photo history building up underneath.

Product Choices

The first concept included beer-drinking leaderboards. I removed them early. Tracking consumption is fundamental to the product, but ranking people by how much they drink would create the wrong incentive. The social layer stayed; achievements and shared statistics shifted toward variety, discovery, and participation instead of high-volume drinking.

Two How Many Beers screens: a Groups screen with featured and joined groups, and a Stats screen showing most common beer, lifetime and weekly counts, style breakdown and a twelve-month chart.
What replaced the leaderboard: groups to drink with, and statistics about variety and discovery rather than volume.

I made a similar choice around photo verification. The product does not need to solve fraud. A system that rejects a legitimate draft beer because it cannot distinguish a stout from a Coke is worse than one that occasionally allows an ambiguous drink through.

Recognition therefore provides evidence rather than pretending to be perfect proof.

On-Device Recognition

How Many Beers uses a custom Swift Expo module around Apple Vision instead of calling an LLM or cloud vision API for every photo.

VNRecognizeTextRequest reads visible packaging text, while VNClassifyImageRequest provides general image labels. OCR results are matched locally against a bundled 141-beer catalog using brand and product aliases, normalization for common OCR mistakes, space-insensitive matching, and fuzzy edit distance.

Strong packaging text can suggest a specific beer. An unlabeled glass can soft-pass and let the user choose a recent beer or “Same as Last.” Only clearly contradictory images are intended to trigger a retake.

That architecture keeps recognition fast, local, and free of a per-photo AI bill.

Two How Many Beers screens: a settings screen with a Public profile toggle, blocked accounts, privacy policy and support links, and a public profile showing beer counts, achievements and a photo history.
What leaves the phone is a user decision: the public profile is a single toggle, and the profile it produces is the whole of what other people can see.

Privacy and Backend Boundaries

Supabase is the shared backend for authentication, profiles, beer logs, groups, reports, and image storage.

Privacy rules live in Row Level Security and storage authorization rather than only in the interface. Profiles are private by default, and private beer-photo access follows the visibility of the associated beer log.

Age verification is also designed to minimize retained identity data: the application sends a date of birth to a database function that determines 21+ eligibility without requiring the exact birthdate to remain part of the long-term profile.

Building the Baseline

The initial implementation produced a substantial V1 codebase: 24 routes, a 141-beer catalog, nine Supabase migrations, the native Vision bridge, and a 174-test suite.

The toolchain itself became one of the harder problems. Jest/Expo skew, Babel configuration, React Native presets, and a Supabase typing issue all produced failures that looked unrelated at first. One shell-parsing mistake even reported a false clean TypeScript state while real errors remained.

I froze the baseline only after authoritative Jest, TypeScript, ESLint, Prettier, Expo Doctor, and native-module autolinking checks passed.

Current State

How Many Beers is live on the App Store, published as a free iPhone download on 19 August 2026.

Getting there meant closing out the work the source baseline could not prove on its own. The custom Swift module had to be compiled and exercised on a physical iPhone, recognition thresholds had to be tuned against real beer photos rather than catalog images, and the RLS policies had to hold up against a live Supabase project with more than one account in it.

The shipped V1 covers the full loop: camera-first logging, on-device recognition against the bundled catalog, personal history and statistics, profiles, groups, and shared activity.

What is interesting now is not whether the app runs but how it behaves in a bar. Recognition quality against dim lighting, wet labels and half-finished glasses is the kind of thing only real logging exposes, and it is where the next round of tuning will come from.

Milestones

  1. Product concept defined

    Reduced beer tracking to a camera-first Open → Snap → Confirm → +1 loop.

  2. Local Apple Vision architecture selected

    Rejected per-photo cloud AI in favor of on-device OCR and image classification.

  3. V1 source baseline completed

    Reached a validated Windows-side baseline with the app, backend schema, native bridge, and automated test suite in place.

  4. Released on the App Store

    How Many Beers 1.0 was published as a free iPhone download after device validation of the native Vision module and the live Supabase backend.