Skip to main content

Case study · Customer mobile app

A bilingual loyalty and ordering app for a family-owned grocery chain

Weekly deals, digital coupons, grocery lists and pickup or delivery ordering in English and Spanish, with an admin panel so store staff can run it themselves.

Client
Regional, family-owned grocery chain
Engagement
Product design and build: customer app and admin panel
Platforms
iPhone and Android, plus a web admin panel
Status
In development, after about eight weeks of build
Home screen with search, quick access buttons and products on sale
This week's deals, filterable by department, each with an Add to List button
The home screen in Spanish

Screenshots use demo data. Names, products and branding are placeholders.

The challenge

The chain's customers were loyal, but the tools around them were dated:

  • Deals lived on paper. The weekly ad was printed, and coupons had to be cut out and remembered.
  • No online ordering. Customers who wanted pickup or delivery went to national chains' apps instead.
  • No loyalty program customers could see. There was no easy way to reward repeat shoppers or show them what they'd saved.
  • Two languages to serve. Many customers prefer Spanish, and a one-language app would leave them out.
  • Staff needed to run it themselves. Weekly ads, coupons, store hours and orders had to be easy for store staff to manage without a developer.

The approach

Start with what customers do every week. The app is built around the weekly routine: check the deals, clip coupons, build a list, then shop in the store or order for pickup.

Let people in before asking them to sign up. Guests can browse deals and products and build a grocery list. An account is only needed to clip coupons or place an order.

Bilingual from the start. Every screen works in English and Spanish, with a one-tap language switch.

Give staff their own tools. A separate admin panel lets store staff publish weekly ads, manage coupons and inventory, set store hours and run the day's orders.

I use AI-assisted development to move quickly, and every part of the system is designed and reviewed against the same security standards I apply as a CISO.

What was built

A customer app for iPhone and Android, with 21 screens:

  • Home with weekly specials, featured products and search.
  • Weekly ads by department, with deal details.
  • Digital coupons to clip, applied automatically in the cart, with a history of redeemed coupons.
  • A loyalty card with a QR code to scan at checkout.
  • A grocery list that customers can build by hand or from deals and products, then check off in the store.
  • Ordering: cart, pickup or delivery scheduling, secure payment, order confirmation and order history.
  • A store locator with GPS, hours and directions.
  • A feedback survey in both languages.
  • English and Spanish throughout, with guest browsing.

An admin panel for store staff

  • Inventory: products, prices, sale prices, stock, per-order limits and bulk import.
  • Coupons and weekly ads: create ads and their deals, with built-in validation so mistakes are caught before they go live.
  • Stores and pickup: locations and opening hours.
  • A live order board: today's orders, refreshed automatically, moving through confirmed, preparing and ready for pickup or out for delivery.
  • Users: manage staff access, with safeguards on admin roles.
  • Feedback: review customer survey responses.

Security built in

  • Card data never touches the app. Payments run through Stripe, so card numbers are handled entirely by the payment processor, with payment confirmation verified on the server.
  • Prices calculated on the server. Order totals, discounts and coupon rules are worked out on the server, not on the customer's phone, so they can't be tampered with. The discount logic has automated tests.
  • Each customer's data stays private. Database rules (PostgreSQL row-level security) ensure customers can only see their own orders, coupons, lists and loyalty details, and guests only see public information.
  • Guarded admin access. Staff roles are managed through a protected function: no one can change their own role, and promoting someone to admin takes another admin.
  • Validated inputs. Ads, coupons and store details are checked before they're saved, with automated tests on the validation rules.
  • Secrets kept out of the app. Payment and admin keys stay on the server; the app only holds keys that are safe to be public.

Results

Goal

Move the weekly ad and coupons from paper to customers' phones

Goal

Give customers a reason to come back, with visible savings and a loyalty card

Goal

Win back pickup and delivery orders from national chains' apps

Already in place

A full bilingual app and a staff admin panel, with no card data stored

The app is in development. Results will be added after launch.

Want to give your customers an app that brings them back?

Let's talk about what that could look like for your business.

Start a conversation