Skip to contentHome
Building an App for a Screenless Device — case study hero

Building an App for a Screenless Device

Designed and shipped a cross-platform Flutter companion app for a screenless NFC medical device, from discovery workshop through App Store and Google Play launch.

HealthcareProduct DesignMobileFlutter0-to-1
Role
Product Designer (sole designer + developer)
Launched on App Store + Google Play
Designed around extreme hardware constraints: no screen, NFC only
Sole designer + developer, workshop facilitation through Flutter production code
Shipped a cross-platform companion app that turns a screenless medical device into something anyone can program

Designed and built the iOS + Android companion app for Membot, a portable NFC reminder device with no screen. Complex medical scheduling became a single-page flow that caregivers can set up in minutes.


TL;DR

  • Problem: Membot has no screen, no Bluetooth, no WiFi. Only NFC. The companion app had to carry all the clarity the hardware couldn't show.
  • Key decision: Prototyped both a multi-page wizard and a single-page form. Single-page shipped because immediate comprehension beat guided steps for infrequent use.
  • Approach: Sole designer and developer. Discovery workshops, 5 wireframe rounds, Flutter build, byte-level NFC encoding.
  • Outcome: Launched on both app stores. Client returned for additional scope.

"Your comprehension is very, very good... probably the best I could offer." (Founder, Uno International)

Data callout: Launched on App Store and Google Play with app store badges and device mockup


Quick Facts

RoleProduct Designer (sole designer + developer)
ResponsibilitiesDiscovery, wireframing, UI design, Flutter development, NFC integration, handover
Team1 founder/director, 1 hardware developer
PlatformiOS + Android (Flutter)
Timeline6 months (Aug 2024 to Jan 2025)
ToolsFigma, FigJam, Flutter/Dart, Xcode, VS Code, GitHub, TestFlight

Data callout: 6 months timeline with sole designer and developer role badge


The Client

Uno International is building Membot, a portable NFC-powered reminder device designed for elderly patients and caregivers managing medication schedules. The device has no screen, no Bluetooth, no WiFi. Just LED flashes, beeps, and a single button. Everything the user needs to understand has to come from the companion app.

The founder had deep domain knowledge in medical device development and a hardware developer building the firmware. What they needed was someone who could own the entire companion app: design through development, workshop through App Store.


The Challenge

Device constraint diagram: what the device CAN do vs. what the app MUST do

Membot communicates through LED flashes, beeps, and a single button. No screen. NFC (physical phone-to-device contact) is the only data channel. Once a schedule uploads, the device runs independently.

Data callout: 3 minutes setup time target

  • Target users: elderly patients (50-60+), people with Alzheimer's, NHS patients, caregivers
  • Baseline assumption: low tech familiarity
  • Founder's requirement: a pharmacist or caregiver programs the device in about 3 minutes, no manual needed

The app wasn't a remote control. It had to carry all the clarity the hardware couldn't show.


What I Built

Hero: 3 key screens showing the scan, schedule, and done flow

A cross-platform companion app in Flutter. Schedule creation lives on a single page: add reminders, set repeat patterns, configure the buzzer, all visible at once.

DarkDrag to compareLight
App screens in light theme: home, schedule, settings, and confirmation
App screens in dark theme: home, schedule, settings, and confirmation
  • Single-page form, no multi-step wizard
  • Three NFC flows: scan (read state), upload (write schedule), reset (clear device)
  • Smart defaults: maximum duration pre-filled, all days selected, buzzer on
  • UTC under the hood so reminders never shift with daylight savings

The Process

The founder later reflected: "We went very slow in the beginning in a very high speed in the end." That pace was deliberate at first (structured discovery, workshops, stage-gates) but too slow for a 2-person startup. I adapted mid-project and accelerated into rapid iteration.

How I tested. Five wireframe iterations compared a multi-page wizard against a single-page form, decided through stakeholder design reviews. A separate user test wasn't possible: the app shipped before the hardware existed, so final verification ran internally on NFC test devices.

Discovery workshops defined the NFC constraints, target users (elderly patients, caregivers), and the 3-minute setup requirement. Five wireframe iterations tested both a multi-page wizard and a single-page form. The evidence pointed to single-page, and both the founder and hardware developer agreed. From there, the Flutter build moved fast: NFC integration, byte-level encoding, feature scoping (cutting complexity for medical safety), and TestFlight distribution. The app shipped to both app stores and the client returned for additional scope.

Process flow: from discovery to App Store in 6 months


Decision 1

Made the App Carry Everything the Device Could Not Show

Three device states with NFC interaction points as transitions

When a user holds their phone to the Membot, nothing visible happens on the device. No progress bar, no indicator. For a medical device, that silence is a safety risk.

StateWhat the user seesKey actions
Empty device"Scan your membot," clean slateCreate schedule, upload
Existing scheduleCalendar showing loaded remindersView, modify, overwrite, reset
Post-upload"Membot is ready" confirmationSummary of what was sent

I designed distinct UI flows for each state. Each transition fires from an NFC scan. Confirmation safeguards block every destructive action: overwrite warns, reset requires confirmation, navigating away prompts a discard dialog.

Before/after: empty device state vs. existing schedule state

State grid: 3 device states, empty, loaded schedule, post-upload confirmation

Screen gallery: NFC interaction states, scanning, uploading, success, error recovery

Tradeoff: More hardware states meant more UI states to design and test. But a user who isn't sure whether their medical device is programmed? That's a safety risk, not just a usability issue.


Decision 2

Prototyped Both Approaches, Shipped the One the Evidence Supported

Before/after: multi-page wizard vs. single-page form wireframes

The team had competing mental models. The founder pictured "stickers on a calendar." I leaned toward a multi-page wizard for lower cognitive load. Rather than debate, I framed it as a testable question.

ApproachStrengthsWeaknesses
Multi-page wizardLower cognitive load per screen, guided progressionMore taps, harder to compare reminders, easy to get lost
Single-page formEverything visible at once, fewer screensHigher density, potentially overwhelming

I prototyped both across 5 wireframe iterations and walked them through design reviews. The founder and hardware developer both gravitated to single-page: for an app used infrequently, seeing everything at once beat guided steps.

Process strip: 5 wireframe iterations from early explorations to final single-page form

Tradeoff: Single-page trades step-by-step guidance for immediate comprehension. Visual hierarchy became the main layout challenge, but testing both early was cheap. Five iterations proved the direction before any Flutter code.


Decision 3

Cut Features to Make the Schedule Model Safer

Before/after: original complex feature scope vs. simplified shipped version

For a medical device, complexity is a safety problem. A confused caregiver misconfiguring a reminder means missed medication. The founder flagged per-reminder volume and pattern settings as "very, very complex."

FeatureOriginal scopeShipped asRationale
FrequencyHourly, daily, weeklyDaily + weekly onlyHourly doesn't serve the medical use case
TimersMultiple per reminderOne per reminderFewer configuration errors
BuzzerPer-reminder volume, pattern, LEDOn/off per reminder; volume/pattern/LED global"Morning quiet, evening audible" is real; per-reminder volume is too complex

Annotated schedule and settings screens showing included features and global device settings

Smart defaults carried the simplification further: maximum duration pre-filled, all days selected. Creating a "take this medication every day" schedule takes minimal interaction.

Component detail: per-reminder buzzer toggle vs. global volume and pattern controls

Tradeoff: No hourly reminders, no per-reminder volume. For elderly patients and caregivers, fewer options means fewer errors. Every removed setting is one less thing a caregiver can misconfigure.


Decision 4

Chose Flutter for NFC Access, Then Learned Byte-Level Encoding

Design-to-code bridge: schedule UI, byte_converter.dart excerpt, and byte-stream format

As the sole designer and developer, the framework choice determined whether I could access NFC hardware at all. The data format determined whether the device's limited processor could interpret what the app sent.

FrameworkNFC supportCross-platformTradeoff
React NativeWeak, JS bridge is "basically a shell" for hardwareYesNFC blocked
Flutter (chosen)Strong, native hardware access via platform channelsYesLess familiar, full NFC capability
Native (Swift + Kotlin)FullTwo codebasesImpractical for solo developer

The embedded device couldn't parse JSON (RAM too limited). Schedule data had to be encoded as flat binary byte arrays. I built byte_converter.dart to translate the schedule model into the exact byte sequence the firmware expects.

Notion project tracker: 36 tasks spanning design and engineering, color-coded by discipline

Data callout: 36 tasks spanning design and engineering with UX vs. code ratio

Tradeoff: Byte-level protocol work isn't typical UX engineer territory. But because I owned both design and development, every UI decision could account for NFC constraints on the spot. I never had to throw a design over a wall and wait to hear it wouldn't work.


Decision 5

Made Timezone Handling Invisible So Reminders Never Shift

Timezone flow: local time to UTC conversion, NFC upload, device storage, and back to local display

The device has no clock, no timezone awareness, no network connection. If daylight savings shifts by an hour, what time does the reminder fire? For a medical device, wrong timing means missed medication.

ApproachHow it worksLimitation
Device handles timezoneDevice tracks and adjustsNo network, no GPS, impossible
Phone handles timezone (chosen)Converts to UTC before upload; converts back on readIf device moves timezone without re-sync, times offset

Users never see "UTC" anywhere. They set "8:00 AM" and it means 8:00 AM. Daylight savings absorbed by the phone's timezone database.

Before/after: 8:00 AM on phone vs. byte-level UTC value on device

Tradeoff: Carrying the device to a different timezone without re-syncing offsets reminders. Acceptable: the device is for fixed-location home use. Medicine cabinets don't change timezones.


Reflection

"We went very slow in the beginning in a very high speed in the end." (Founder retrospective)

I started with structured discovery: workshops, stage-gates, requirements. Too slow for a 2-person startup. If I did this again, I'd iterate faster from day one. Match process to team size.

Process strip: project phases, structured discovery, wireframe iteration, rapid build

The single-page decision was only possible because I prototyped both before anyone committed. I didn't pick right on the first try. I structured the decision so the evidence could point the way.

Owning design and development wasn't a nice-to-have here. The NFC byte encoding wouldn't have worked with a traditional handoff. The hardware developer called the documentation "a real highlight" and independently pushed TestFlight releases after I left.

Data callout: Independent TestFlight releases shipped post-handover

Your verdict

How did this one land?

More Case Studies

Living Light: An Interface in Sync With the Sun — case study preview
8 Min Read
Product DesignIoTMobile

Living Light: An Interface in Sync With the Sun

Designed and built a cross-platform Flutter companion app for a premium IoT sunlight machine, from workshop through BLE integration to App Store and Google Play launch.

Product Designer (solo, design to shipped code)

Three Crises, One Design System — case study preview
8 Min Read
HealthcareProduct DesignDesign Systems

Three Crises, One Design System

Built a Figma design system at seed stage, then rebuilt it twice for a rebrand and clinical regulation. Token architecture absorbed ~40 features and two team transitions with zero sprint delays.

Product Designer (first hire, design system owner)