MyCha

MyCha journal list with real matcha photos
MyCha entry detail
MyCha calendar view
Problem
Tracking apps don't specifically track matcha or include both café and homemade drinks.
What I did
Designed and built a native SwiftUI app.
Outcome
An AX-compliant, working app that I have been using since August.
Role
Sole Designer & Developer
Platform
iOS
Timeline
Aug 2026 – Present
Tools
Xcode, Claude Code, SwiftUI, MapKit

01Overview

MyCha is a native iOS app that I took from a problem to a working app. I defined it, designed every screen, and built it in SwiftUI. Instead of focusing on reviews for others, it's more of a personal log that includes a journal, map, wishlist, pantry, and calendar.

02Context

I've had a matcha latte almost daily for the past 10 years, and always struggled to keep track of them. I was tracking the ones I bought in three separate notes, plus my camera roll and texts for the matchas I made at home. My problem was that rating apps list one score, grouped under "coffee & tea," to help you pick where to go, not really remember what you got. Drink trackers, on the other hand, either log only homemade coffee for caffeine content, or only café drinks to see on a map. I wanted to see my matcha across both, and remember what I thought of each one.

A Notes app checklist titled 'matcha places nyc' with six unchecked cafés

The places list

Random list of places to try.

A Notes app note titled 'matcha ratings' with per-café scores and tasting notes

The ratings note

Ratings and notes in a large block of text.

A Notes app note titled 'matcha count' with dated entries, drink orders, and a photo of each drink

The count

Dated photo log of every matcha that I can't easily tally up.

03Design

The form fields are determined by a Café / Homemade segmented control. Most fields are optional or autofilled, so logging a matcha takes a few taps.

One log, three views

Since logging is the primary use case, the journal is the landing page, with a List / Map toggle for finding a drink by when or where I had it. The list, map, calendar, and each place's page all read from the same data, so nothing has to be logged twice.

List and map

MyCha place detail rolling up visit count, average rating, last visit, and every visit

Place

A wishlist and a pantry

Beyond logging, I wanted to remember where to go next, so the wishlist holds both places worth trying and favorites worth going back to. And since matcha powder loses its freshness once it's opened, the pantry tracks each powder, with freshness automatically calculated from the day it was opened.

MyCha wishlist of cafés to go back to, each with its previous rating and a Log Visit button

Wishlist

MyCha Powders list showing rating, price per gram, and a freshness state for each tin

Pantry

04First build to now

The first build logged every drink I bought: milk tea, fruit tea, coffee. I scoped down to matcha and rethought the information architecture and visual design throughout. Drag to compare the logging form and journal.

First build's New Entry form: a Made it at home toggle, place, order, category, and five-star rating fields
Current New Matcha form: a Café and Homemade switch at the top, then place, the matcha, and modifications

Logging

A homemade drink used to go through the café form. Now a segmented control reshapes the form to fit.

First build's journal: a 74 drinks logged stats panel, category filter chips, and cards with star ratings
Current journal: cards grouped by month, each with a photo, place, drink, and a 10-point score bar

Journal

The list opened on a summary panel and category filters. Now it lands on drinks in reverse chronological order.

05Craft

Two score tiles, The Matcha 9/10 and The Space 9/10, above a row of price, caffeine, sugar, and ice

Two scores

Since sometimes I could be looking more for a great café ambience than the best matcha, I created separate scores for the drink and the space.

Three powder rows: one with an amber dot reading Use it up, two with green dots reading Fresh

Freshness indicator

Every state pairs a dot with a label, so it never relies on color alone. I used amber to indicate a caution rather than an error.

Drawn by hand

I drew each illustration by hand to give MyCha some personality.

  • Whisk

    Empty journal

  • Tin

    Empty pantry

  • Scoop

    No recipes yet

  • Storefront

    Empty wishlist

  • Leaf

    A drink is logged

  • Badge

    A milestone

Logging a drink

A small pill confirms each save.

Milestones

Milestones, including the 10th, 50th, and 100th matcha, earn a badge.

A small design system

Every screen draws from one set of tokens (colors, a type scale, spacing, and corner rounding) and reusable components.

  • Ink#2C2A26Body copy11.67:1AA text
  • Matcha deep#33492BTitles, place names8.04:1AA text
  • Matcha#405D35Primary text, buttons6.03:1AA text
  • Sage#5B6D52Secondary text, captions, dates4.56:1AA text
  • Accent ink#2E7727Green text, tint, selected chips4.52:1AA text
  • Accent#5EA851Rating bars and fills, always paired with a number or label, never text2.38:1Fill only
  • Caution#B36C35A fading tin's status dot3.35:1AA graphic
Measured againstGround#F7F2ECCard#FFFFFFSunken#E7E9DE· Text needs 4.5:1, graphics 3:1

Readable at every text size

Every text style scales with the reader's text size.

  • MaichaPlace and recipe titles32 semibold62pt capped
  • Iced Matcha LatteDrink titles, hero numbers30 semibold58pt capped
  • August 2026Month headers, stats24 semibold47pt capped
  • Classic MatchaDrink on a journal card19 semibold37pt capped
  • HomemadePlace names, row titles15 semibold47pt scales fully
  • Made at homeBody and labels13 regular41pt scales fully
  • Thursday, October 15, 2026Dates and captions11 regular34pt scales fully
  • The matchaEyebrows11 medium34pt scales fully
MyCha journal at the default text size

Default size

MyCha journal at the largest accessibility text size, with larger text and the date stacked under the place name

Largest accessibility size

06How I built it

I built MyCha with Claude Code. For me as a designer, AI has allowed me to build in new ways, but it hasn't replaced craft. I came up with the design first, let AI take me there, and then continued to iterate with design principles in mind. AI is not the one deciding the design, it is simply a tool to empower it.

07Reflection

My first round of user testing revealed to me what I couldn't see as the only user. When testers attempted to log matchas, certain copy did not translate clearly. Furthermore, the map search seemed to do nothing because the map never moved. I rewrote the labels and made the map zoom to the results and list them as cards. I look forward to testing with more people to continue improving the MyCha experience.