Inspiration

Australian recreational fishing rules are scattered across eight state and territory websites, buried in PDFs, and change mid-season. Meanwhile, half the joy of fishing is the collection instinct: the species you have caught, and the ones you have not caught yet. FishermanDex puts the two together. It is a dex of 244 Australian species where logging a real catch unlocks the entry, and every species page carries the actual legal size and bag limits for the water you are standing on.

What it does

  • 244 researched species entries: identification, seasons, feeding windows, size benchmarks, card stats derived by fixed rules from the research, and around 1,700 sourced species-to-gear recommendations.
  • Every state's fishing rules, rendered per jurisdiction with a verified date and a link to the official source. A guide, not the law, and it says so.
  • The Wharf is the home screen: tide, moon, water temperature and today's bite window for the water you are on, the species in season this month, and what other anglers have logged near you.
  • Catch logging with photos. Each catch fills in your dex, builds your personal chart and clears fog of war as you explore new water. Monthly challenges, a crew board over your mates' shared catches and a rank ladder give the collection somewhere to go.
  • A live map with boat ramps, jetties, closed seasons and crocodile warnings (departmental sightings and in-app angler reports, rendered side by side as different claims). Catch marks on the chart are the species' own card art.
  • AI Catch Analyser: photograph a fish and Gemini names up to three candidates pinned to dex entries, estimates the length when something in frame gives scale, holds the catch against your state's size limits and closures, and pre-fills the log entry for you to check and save. Metered against a prepaid credit balance.
  • The Shed: the gear you own set against the gear your recent catches call for, so the gaps show before the next trip.
  • A sourced stewardship guide: catch and release handling, protected species, leaving the water as you found it, with every rendered claim traced to a source.
  • Fully offline: all species data and state regulations are bundled on-device, because the best fishing spots have no reception.
  • Phone and laptop: the same build runs as the native app and at fishermandex.com.au, with a designed wide layout from 1020px rather than a stretched phone screen.

How we built it

The app is a Next.js static export wrapped in Capacitor for iOS and Android, with the same build serving the web at fishermandex.com.au. Supabase carries auth (email code, password, or Continue with Google), Postgres and Edge Functions; the map is MapLibre; the species data is a hand-researched JSON corpus with schema validation, reference resolution and copy-linting gates in CI. GitHub Actions builds and signs the Android app bundle, and catch photos go through the Capacitor camera plugin in the shell.

Monetisation with RevenueCat

Sign-up is free, and the free tier is a real tier: every state's rules and the crocodile safety layer, the Wharf, private catch logging, and ten starter species as full cards (spread across the country so every state opens to at least one local fish, with one rare so the foil effect sells itself). The map holds three saved spots. Everything beyond that renders as a silhouette slot until the subscription: the rest of the dex, the game (challenges, crew boards, rank), the bite predictor, the gear and knot libraries and the Shed's gap analysis. The collection instinct does the selling.

  • Two auto-renewing subscriptions (monthly and yearly) carry a single "core" entitlement that unlocks the full dex.
  • A $5 consumable top-up funds the AI Analyser. Each purchase lands as credit in a ledger, deduped by RevenueCat event id, and every scan debits its actual metered AI token cost rather than a flat rate.
  • The native shell buys through the RevenueCat Capacitor SDK; the web build sells the same products through RevenueCat Web Purchase Links with Stripe underneath. Same three product ids on every platform, so store products are created to match the app rather than the other way round.
  • RevenueCat webhooks land in a Supabase Edge Function that normalises every event into one subscriptions table. The app only ever asks "am I entitled?", so a purchase on iPhone still works when the angler switches to Android or opens the laptop.
  • The paywall states price, period and auto-renewal on the screen itself, links terms and privacy, and carries Restore Purchases.

Challenges we ran into

  • Going offline-first. The app started server-rendered with a filesystem data layer. Converting it meant generating a tiered data bundle (426 KB cold start instead of 15 MB), turning server actions into client Supabase calls, and making anything date-dependent client-only so bundled pages never ship a frozen month.
  • Rules that change mid-season. Bag limits cannot wait on app review, so data updates ship as deltas keyed off a content-hash data version.
  • Honest sourcing. An audit found citations that did not actually back their tackle claims. We rebuilt the sourcing pipeline: every gear claim quotes the sentence that supports it, and a claim with no source says so plainly instead of wearing a plausible-looking citation.
  • Building the shell before the stores could take it. Apple and Google developer enrolment ran in parallel with the build, so the native shell had to be release-ready on its own: signed bundles from CI, launcher icons and splash generated from the brand kit, and the RevenueCat product ids fixed in advance.

What we learned

Entitlements, not payments. Keeping one table that answers "is this account paid up" and letting RevenueCat normalise Apple, Google and Stripe into it kept payment logic out of the app entirely. Metering AI by actual token cost, not scan counts, meant we could keep the heavy model and full thinking budget without gaming the margin. And a free tier that is genuinely useful at the water (the law, the safety layer, the Wharf) converts on the collection instinct rather than on frustration.

What's next for FishermanDex

Release on Google Play and the App Store inside the Shipaton window, offline map tile packs for regional download, and a United States deck researched to the same sourced standard, kept as its own roster so the Australian dex stays Australian.

Built With

Share this project:

Updates

Submission history