Pillbox — from idea to App Store

A medication tracker built around its widget. I designed, built and released it on my own with Claude Code, as a way to try making an app with an agent.

Pillbox

A free medication tracker for iOS.

App Store

My role

Solo project

Product, flows, visual system, development and App Store release.

Status

Live in the App Store, version 1.1.

An app you barely open

I was taking several medications and supplements a day and logged them in Apple Health. It had no widget, so every dose meant opening the app or a notification. I wanted a tracker that looked nicer and that I almost never had to open.

Marking a dose takes two seconds. Opening an app adds extra steps: unlock the phone, find the app, wait for it to open, tap and close it. So I built Pillbox around the widget, on the home screen and the lock screen. The app is for setup and history.

Marking doses right from the widget, without opening the app.

A day without opening the app

  1. Morning

    I take a pill, pick up the phone and mark it in the widget on the lock screen.

  2. After breakfast

    A reminder comes in on the lock screen. I take my pills and mark them in the lock screen widget, and the reminder goes away.

  3. At work

    I remember my pills and take them. Later, when I open the phone to scroll through something, I see the widget and mark them.

This plan came from my own routine, and I didn’t research it with other people. Pillbox is free, I didn’t build it to earn money, and it was also my way to try building an app with an agent. It worked for me: I stopped opening the app and only go into it to set up a new course.

Designing the whole flow

I designed the setup, the daily use and the history together. The widget had to be part of that flow, not a smaller copy of an app screen. Two things stay in the app: cancelling today’s dose is a long press, which widgets don’t support, and adding a medication happens too rarely to need the widget.

I used Figma only for sketches and exploring ideas. I worked out almost all of the design, states and interactions right in code with Claude Code. The app is native Swift, because the widget had to respond fast. If it were slow, there would be little reason to use it.

Pillbox in Figma: early screens, app icon ideas and widgets

Sketches and early ideas in Figma.

Which doses the widget shows

The small widget has room for three doses, and a day can have more. If it showed only the next ones, a pill taken ten minutes after its reminder would already be gone from it, and there would be nothing to mark.

So the widget always keeps the latest dose you haven’t marked yet, next to the doses that come after it. The lock screen widget has room for two and follows the same rules.

The widget with the missed 9:00 dose of Zinc above the evening doses
A dose is missed: the latest missed one and the next two.
The widget with the next three doses
Nothing missed: the next three.
The widget with two doses ticked off and the last one left
One dose left: the doses already taken, then the last one.

The pill picker from the app, with its own assets and colours. Tap a colour or another form.

A visual system of my own

I made the visual system from scratch, including colours, typography, components and pill icons. I generated the 3D pill icons with AI and used them in the released app.

It was also a chance to work without a company’s design system and keep the same visual choices across the app and widgets.

Keeping the widget in sync

On the phone, a dose can be marked in the widgets on the home and lock screens and in the app. They all have to show the same thing. If the widget is wrong, the main idea doesn’t work, and nobody would use a medication tracker just for its looks.

For a long time something kept breaking. I marked a dose in the widget, and the app didn’t show it. I marked it in the app, and the widget didn’t change. I fixed it with Claude Code: I described each broken case, we read the logs and tried again. It took about two weeks in April and another round before App Review in June.

Notifications can mark a dose too, but the widgets don’t pick that up straight away, so the widgets are where I focused.

A dose marked in the lock screen widget: the reminder goes away, and the home screen widget and the app show it at once.

A small first version. For the first release, I left out Apple Health integration, grouping doses by part of day and AI advice about medication or supplements. Each of them would have meant more work to build and support. I also didn’t want to be responsible for telling people what to take and when.

Building and releasing with Claude Code

I didn’t have a coding background. I used Claude Code to build the app, read the code when something went wrong and worked through the fixes.

Swift took the most rounds of fixes. Models handled Swift poorly at the time, and custom visual elements kept breaking, so a lot of the fixes were visual.

I also did the App Store part myself: review, metadata and release. It showed me how much has to work besides the main screens.

237commits
60fixes
16klines of Swift
383tests

FeaturesFixesOther: polish, docs

First build22 Mar

Mar 2026: 10 commits
4 features · 6 fixes · 0 other

Widget sync fixes

Apr 2026: 58 commits
19 features · 19 fixes · 20 other
May 2026: 2 commits
1 features · 0 fixes · 1 other

App Review21 Jun

Jun 2026: 10 commits
0 features · 1 fixes · 9 other
Jul: no commits
Aug: no commits
Sep: no commits

Version 1.1build 8

Oct 2026: 157 commits
62 features · 34 fixes · 61 other
MarAprMayJunJulAugSepOct

Commits by month, March to October 2026, from the Pillbox repository.

After the first release. Pillbox is live in the App Store. I haven’t promoted it, but a small number of people use it regularly. Version 1.1 is out now, with parts of the day instead of exact times, half doses and reminders that keep coming even if you only use the widget.

I’m now preparing version 1.2, with more flexible schedules, a history with streaks and rebuilt widget sync. I work on Pillbox in my free time because I want to, and nobody pays me for it.

Building Pillbox gave me a feel for work I hadn’t done before: git, builds, testing and running a project. I built it while working at Rafeeq, and it helps me there now with components: I know better how to ask an agent for one and how to test it.

Next case

The checkout leak

People kept opening checkout and going back to the cart. Can you guess why?