Skip to main content
← All work

Independent products · iPhone

Small apps.
Considered decisions.

Five apps I designed, built, and published. Each starts with an everyday moment and a specific way to make it easier.

Current screenshots and release notes are on each App Store page.

01

Vape Quit Coach

Track your quit progress. Take one day at a time.

Vape Quit Coach app icon
Quit tracking and everyday support.
About Vape Quit Coach

Vape Quit Coach is an iPhone app for quitting vaping, with quit tracking, journaling, breathing exercises, and AI coaching. I designed and shipped it alone in React Native and Expo. Coaching runs on an online AI service, and the app is a tool for coping, not medical care.

Built with React Native, Expo, TypeScript.

02

Afterlight

Log a concert. Keep the night with you.

Afterlight app icon
A diary for the nights you want to keep.
About Afterlight

Afterlight is a concert diary on the iPhone App Store, built in React Native and Expo. It keeps a record of each concert with your own notes about the night, and the released app can scan tickets and import concerts from photos. Finding past concerts from your calendar, and better backups, are in development for a later release.

Built with React Native, Expo, TypeScript, AsyncStorage.

03

Holdspace

Save a thought or link. Return to one thing at a time.

Holdspace: One item now, the rest waiting. Shown under its original Still name.
One item now, the rest waiting. Shown under its original Still name.
About Holdspace

Holdspace is a native SwiftUI app for a lightweight personal queue. One item stays in focus while saved items wait, and gestures move them through the queue. The queue is stored on-device with SwiftData.

Built with Swift, SwiftUI, SwiftData, WidgetKit, Live Activities.

04

Good News Bad News

Read a small news pack. Open the stories behind it.

Good News Bad News: The reading archive: each saved pack is filed under its day.
The reading archive: each saved pack is filed under its day.
About Good News Bad News

Good News Bad News is a React Native and Expo app that gives you one finite news pack a day: a few positive and difficult stories, links to the publishers, a short balance check after reading, and a local archive. A Cloudflare Worker picks and summarizes each pack from RSS feeds with Workers AI. It is listed as GNBN on the App Store.

Built with React Native, Expo, TypeScript, Expo SQLite, Zustand, Cloudflare Workers, Workers AI, KV.

05

doomscroll

Open a code prompt. Review it at your own pace.

doomscroll: A gesture guide for reviewing code cards.
A gesture guide for reviewing code cards.
About doomscroll

doomscroll turns code into a swipeable review feed with progress tracking. GitHub imports bring in any public repository, or one folder of it, and cards and prompts are generated with on-device rules rather than a remote AI model.

Built with React Native, Expo, TypeScript.