Custom Software
One system that matches your real process, instead of four tools and a spreadsheet holding the gaps together.
Cross-platform mobile app
A skill-based matchmaking app that pairs golfers with compatible playing partners nearby, then gets the round on the calendar.
GameLynx treats compatibility as the product rather than as a filter bolted onto a booking tool.
Golf is a four-hour commitment with a stranger, so a bad pairing costs a whole afternoon. Existing tools help you book a tee time but not find someone worth playing it with — you either golf alone, get paired at random by the pro shop, or spend the round waiting on someone forty strokes away from your game.
The app closes that loop end to end. A weighted model turns handicap, pace, cart preference, and availability into a ranked match. A discovery map shows who is nearby. Messaging carries structured tee-time invitations rather than a conversation someone has to convert into a plan. Trip planning finds locals before you travel.
What makes it useful as evidence is not the feature list — it is what went wrong. A crash on opening a profile, a keyboard that closed the instant it opened, and a production build with a blank map are all documented above with the specific cause and the specific fix.

What was built








Engineering
The specifics matter more than the feature list. This is what the work actually consisted of.
Opening a player profile hard-crashed the app. Instrumenting the running app showed a second live Mapbox instance — the profile's map thumbnail, while the discovery map stayed mounted underneath in the navigation stack — pushing native heap from about 185 MB past 390 MB and stalling garbage collection for 24 seconds, which Android resolves by killing the process. Replacing non-interactive maps with Static Images API renders, and guaranteeing only one live map is ever mounted, settled memory at a stable 217 MB across repeated navigation.
Tapping any text field opened the keyboard and immediately closed it. The cause was a focus style that toggled elevation and shadow on the focused input's wrapper. On React Native's Fabric renderer that recreates the underlying native view, which drops IME focus. Keeping focus styling to colour-only changes fixed it.
Every user-scoped endpoint was audited so the acting user is derived exclusively from the JWT rather than from a client-supplied identifier in the URL, query string, or body — closing a class of bugs where any caller could read or modify another account by changing an ID. Writes are strictly self-scoped, and exact GPS coordinates are returned only to their owner. A dedicated test module asserts 401 without a token, 403 when acting as another user, that a forged sender ID in a body is ignored in favour of the token, and that location privacy holds for non-owners.
Rate limiting sits on the authentication and SMS endpoints, because every verification request is a billable Twilio message. Shared storage for the limiter is configurable so limits hold across multiple server workers instead of being silently multiplied by the worker count.
Mobile releases roll out gradually, so the client was written to work against both the pre-auth and post-auth versions of the API. App and server can deploy independently without breaking anyone mid-rollout.
Client configuration was absent from release builds, producing a blank map in production while everything worked locally. Configuration moved to managed EAS environment variables, and a missing map token now degrades to a placeholder instead of crashing the app.
Related services
One system that matches your real process, instead of four tools and a spreadsheet holding the gaps together.
Cross-platform apps in React Native and Expo — including the background, permission, and store-review work that decides whether an app actually ships.
A first version scoped to answer the one question your idea actually depends on — built to ship, not to demo.
Keep reading

A hands-free mileage logger that detects drives in the background and turns them into IRS-ready deductions, with every GPS point kept on the device.
In development — store listings in progress

A role-based mobile app helping tenants, property owners, and case handlers coordinate Section 8 housing voucher matches in one workflow.
University team project, Fall 2024 — built with multiple contributors
If any of this resembles the problem you are trying to solve, a discovery call is the fastest way to find out whether we can help.
Prefer email? Contact@DeviceBytes.com