mystic.
A home for all of my recipes. In photo gallery form, they’re organized, nice to look at and easy to find. And a place to plan the week’s dinners, too.
Why I built it

Importing recipes

Servings and units

Cook mode


Meal planning

Why build my own
Recipe apps exist, and I tried a few. They’re built for everyone, so the small things never matched how I save recipes or how I cook. Making my own meant I could get those things right.




Appearance

Design system
I wanted the food photos to be the most colorful thing on the screen, so the app itself stays in warm off-whites and saves all of its color for one gradient. A handful of pieces, like chips, cards and buttons, repeat everywhere so it always feels like one app.
Souvenir has always been one of my all-time favorite fonts, so it was an easy choice for the headings. Paired with the warm gradients, it gives the app a slightly retro, seventies feel, which I love.
Color
The page is a warm oat and the cards are white, so the food photos bring the color.

Gradients · Golden hour
Thirteen to choose from, so the app can feel personal. It’s the only color the app itself uses.
Accents
The gradient comes from Instagram. It shows up on the things you tap, like buttons, icons and the selected chip, while words stay one solid color.
Finish
Smooth is bright. Matte softens the same colors and adds a little grain, like print.
Typography
Souvenir for headings and numbers, the way cookbooks print times and servings. The system font for everything else.



Bake for 14–16 minutes, until a tester comes out clean.
Icons and chips
Icons are thin outlines, never filled. Every choice is a chip you tap, never a dropdown menu.



What’s in a name?
In 2016 I joined Team Mystic in Pokémon Go. The name has nothing to do with recipes. It just reminds me of great memories, searching high and low to catch ’em all.

Hover over & select a gradient to see every screenshot on this page in it.
How it was built
I designed Mystic and built it with Claude Code as a native iPhone app. I’ve been using every version on my own phone, and whenever something didn’t feel right, I changed it. The screenshot reading happens on the phone itself, not on a server.