Subscription membership app for local dining discounts with referral attribution
A native iOS membership app that replaces a printed discount card and directory with location-aware venue discovery, a server-held subscription record, an in-app scannable identity code, and referral attribution built into the member record.
Discount club schemes have historically been sold as physical cards and printed voucher books, which age the moment they're printed, give the member no way to see what's actually near them right now, and leave the operator with no visibility into who's a member, whether they're still paying, or which venues they actually visit. This build established that foundation as a first release, so scope was deliberately kept to what everything else would stand on rather than the full imagined product.
Made proximity a property of the query rather than something the client sorts: the API computes great-circle distance from the member's position directly and returns it as a field on every venue, so the same endpoint serves both the list view and the map already ordered by relevance. Membership itself is a record owned by the API — activation date, status, cancellation date — with the renewal date derived server-side from activation, so the app asks the platform what a member's status is rather than deciding it locally.
Each member holds their own code and the code of whoever introduced them, so the referral graph is a single self-join rather than a separate subsystem — proportionate engineering for a first release. That same code renders as a scannable in-app image the member can show or share, which is what turns the membership identity into the referral mechanism as well. Policy and scheme content live as records in the back office and render inside the app through a web view, so terms and rules change on the operator's schedule without an app release.
Mail, storage and push configuration sit in a database-backed settings store with a cached accessor and a back-office editor, so operational changes don't need a deployment. Deployment to two environments was automated from the first week with Capistrano and CI, because manual promotion is tolerable for about a month before it becomes a habit that's expensive to break.
Members can find participating venues near them, ordered by proximity, at the moment they're deciding where to eat — the question a printed directory could never answer. Membership became a live server-held record instead of a physical object that proves nothing about whether the subscription is current, and recommendations became attributable, since every member record carries the code of whoever introduced them, turning word-of-mouth into something the operator can see and act on. Policy and scheme content changes without an app release, and changes reach staging and production through one automated pipeline with rollback, established at the start of the engagement rather than retrofitted.
Something holding you back?
New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.