← Back to QI SI

Case study

FreshToGo 鮮款款

Live on the App Store and Google Play

Helping people walk into the good shop they pass every day.

FreshToGo is an app for independent food shops in Taiwan. Shops put together a FreshToGo bag (鮮款包) of today’s bread, pastries, bento or deli dishes, with the contents kept a surprise and the price below what the items normally cost. People reserve a bag in the app, then pick it up and pay at the shop. We built the whole product in-house.

We built
iOS and Android app, backend, admin dashboard, marketing website
In the app
A shopper side and a shop side, 41 screens, one codebase
Release
Version 1.5, still shipping
Launch area
Around MRT Xinpu Station, New Taipei
The FreshToGo website’s home page: the headline “新鮮款著走,美食不錯過” beside two FreshToGo bag cards.
The FreshToGo website on a phone, showing listing cards above the headline.
A hunt-mode card in the app, shown one at a time for swiping. A FreshToGo bag listing card in the app: shop, pickup time, distance and price.
Real screens from the FreshToGo website and app (Chinese UI). Shops, prices and counts are sample data.

How a FreshToGo bag works

Real FreshToGo app cards (Chinese UI) and website; the “who can buy” and pickup steps are illustrations using the app’s own wording. Shops and prices are sample data.

  1. Discover a shop nearby

    Browse the bakeries, restaurants and snack shops around you and see which ones have put out a bag today.

  2. Hunt mode

    Up to 10 bags a round, one card at a time. Swipe up to reserve, left to skip, right to keep it for later.

  3. The shop decides who can buy

    Each bag can be open to everyone, only for people who’ve never bought from the shop, one per person, or only for regulars. The form even previews how many people a bag can reach. New customers get a reason to walk in, and regulars never feel passed over.

  4. Pick up and pay at the shop

    Your reservation holds a QR pickup code. Show it during the pickup window, the shop scans it with the shop side of the app, and you pay in store. There’s no delivery: the point is walking in.

  5. Knock for the shop you want

    Name a shop you’d like to see on FreshToGo and knock (敲碗) for it. Friends can join in from a share link, and you can follow its progress from contacting to listed.

Real FreshToGo app cards (Chinese UI) and website; the “who can buy” and pickup steps are illustrations using the app’s own wording. Shops and prices are sample data.

One product, four surfaces, one team

We designed and engineered every part of FreshToGo, so it works as one system: one set of decisions, one owner, no seams between vendors.

Kotlin Multiplatform · Compose Multiplatform

Consumer and merchant app

One shared codebase ships to iOS and Android. Shoppers sign in with LINE, Google or Apple, then browse, hunt and reserve; shops list bags from templates, set who can buy and scan pickups. Push notifications keep both sides in step.

Real app card renders (Chinese UI), sample listings.

Ktor · Google Cloud Run · OpenAPI

Backend

The service behind everything: listings, reservations, eligibility rules and accounts, all described in one OpenAPI spec.

React · TypeScript · Vite

Admin dashboard

Where the platform is run day to day: shop applications and verification, users with repeated no-shows, feedback, knock requests, eligibility insights, and the minimum supported app version.

The FreshToGo admin dashboard: a queue of items needing attention, such as merchant applications and unread feedback.

Real admin interface, shown with sample data.

React · TypeScript · Vite

Marketing website

Explains FreshToGo in Chinese and English, takes shop applications, and opens shared bag and knock links in the app.

Built to keep running

Shipping is the start. FreshToGo is engineered so it can keep changing safely, by us or by whoever comes next.

  • 1,241 automated tests in the shared app code, plus contract tests that keep the app’s data models matched to the API spec
  • 34 end-to-end flows that drive the real app on Android and iOS, for shoppers and shops
  • 117 API paths in an OpenAPI spec: the website and admin generate their types from it, the app is checked against it by a contract test, and CI fails on drift
  • 2 store pipelines: Google Play from CI, and iOS through fastlane to TestFlight

Counted in the FreshToGo repositories in October 2026.

Kotlin Multiplatform and Ktor were the right tools for FreshToGo. The next product gets its own answer.

Have something that needs to go live?

Tell us what you’re building, where it stands today, and what “done” looks like to you. We’ll take it from there.

support@handyla.co
Studio 1F., No. 39, Sec. 2, Kaifeng St., Wanhua Dist., Taipei City 108, Taiwan