Skip to content
HuntLine IQ ikonuClient work2026

HuntLine IQ

Hunting movement insight that never exposes your exact location.

iOSAndroidWeb
Let’s build something like this
HuntLine IQ interface 1
HuntLine IQ interface 2
AppAMG / 26
Project
HuntLine IQ
Our role
Architecture · Mobile development · Geospatial data · Backend
Duration
4 months

01 / Behind the product

A real need. A considered solution.

01

Challenge

Hunters want to share trail-cam observations without giving away their own spots; a platform that shares raw coordinates gets abandoned in the first week. The client’s web app had solved that; now they needed native iOS and Android apps with exact behavioural parity, in three weeks, in time for the Tennessee fair window.

02

Approach

The scope sentence was clear: parity with the web app plus the two natively contracted features. The typed API layer, constants, date formatting and EXIF-preserving photo preparation were ported verbatim from the web repo; the only server changes were a push-token registry and a RevenueCat webhook. Sessions live in expo-secure-store, and a failed refresh never ends a session without confirming via getUser() first.

TanStack Query keys mirror the web cache exactly; the feed pages over the server’s frozen cursor and ordering is never re-implemented client-side. Push goes through the Expo Push Service with no Firebase SDK in the app; share-sheet upload uses share-intent. Design tokens were frozen from the web CSS and moved to NativeWind.

03

Result

Map, feed, observation and harvest logging, subscriptions and push in one Expo SDK 57 codebase, submitted to TestFlight and Play through EAS. The same data model and Supabase project as the web platform, with authorisation enforced by row-level security in the database.

03 / Scope & details

The details make the experience.

  • 01

    Locations snapped to an H3 hexagon grid, no raw coordinates stored

  • 02

    Daylight activity with weather and moon-phase correlation

  • 03

    Trail-cam observation and harvest logging

  • 04

    Map, feed and subscriptions on mobile

Map and area insightObservation loggingWeather and moon correlationSubscriptions

Technology

React NativeExpoTypeScriptNext.jsSupabasePostgreSQLRevenueCat

INSIDE THE PRODUCT

The engineering behind the interface.

Systems we built and concrete problems we addressed in this project.

01

Session loss is protected from false positives

A lesson from the web repo was ported verbatim: a failed refresh never ends the session on its own; getUser() confirms first. Tokens live in expo-secure-store, refresh starts and stops with AppState, and single-session mode lands on the login screen with a "signed in elsewhere" message.

02

Zero new endpoints, identical types

The typed lib/api/edge.ts API layer, constants, error copy and date formatting were copied from the web with import paths adjusted; feed-seen moved from localStorage to AsyncStorage. Photo preparation on expo-image-manipulator follows the same rules: HEIC→JPEG, downscale by bytes or pixels, EXIF DateTimeOriginal preserved.

03

No Firebase SDK for push

APNs and FCM run on one pipeline through the Expo Push Service; a credentials-only Firebase project supplies the FCM key to EAS and the client never touches it. On the server only a push-token registry and a sender were added.

IN THE CLIENT’S WORDS

Reviews left on Upwork for this project.

Kyle — April 2026

“He took a complex, highly nuanced product vision and translated it into a structured, build-ready system: a 50+ page set of documents covering database schema design, system architecture, configuration layers, zone logic and signal processing workflows. Instead of hardcoding decisions, he designed key elements such as zone thresholds and delay matrices to be configurable, so I can evolve the platform without rebuilding core systems.”

Your idea could be next.

What could we build for you?

From a first release to a growing platform. Let’s plan the design, development and launch together.

Tell us about your project

From Türkiye to the US, UK, Australia and everywhere in between.