← Lab notesaanjacotar.com
30 May 2026 · Apps · 4 min read

I deployed my first real app

A glaze gallery for my pottery studio, built with Claude Code by a designer who had never deployed anything before.

The short version
Problem
Glaze knowledge at my pottery studio lived in people's heads and group chats.
Built
A shared glaze gallery, live within a few days and used at the studio as a reference.
My part
Spotted the problem, scoped it, made the product and security calls, directed Claude and shipped it. Claude wrote the code.
New to me
Deploying from a terminal, Firebase, an AI vision API and bot protection.
Glaze Gallery, with glazes grouped by name and a photo of a finished piece for each
The gallery, grouped by glaze. The app is in Slovenian, with an English switch. Visit the gallery →

Barbara, my pottery teacher, makes her own glazes. There are dozens of them at her studio in Koper, and they behave differently depending on the clay, the order you layer them, how thick you apply them and how they react with each other. When I started going to Čaj za 2, I asked her a lot of questions. So did everyone else.

If you spend hours on a piece and then glaze it wrong, you’re going to be pretty sad about it. You can’t make test samples for every combination, there are too many and they take time to fire. So people kept asking Barbara, asking each other in group chats and noting things down privately. When someone got a nice result they didn’t expect, that knowledge mostly stayed with them.

I thought: what if there was a gallery? People upload photos of fired pieces, tag which glazes and clay they used, and the site groups them by combination. Next time someone wants to know how the blue-green looks with ash on grogged clay, they look it up instead of asking.

So I built it. I’m a UX designer and had never deployed anything before this. I used Claude Code.

What I actually did

The first hour I just described what I wanted. An upload form with photo, clay type, glaze selection and notes. A gallery grouped by combination. Admin controls so only Barbara and I could manage the list of glazes and clay types. A shared studio account the community could use without registering, because I wanted low friction and more uploads.

1h!

That was the whole brief. I didn't open Figma. I didn't make a wireframe, a flow diagram or a colour palette. I just talked.

a designer, not opening Figma. bold.

By the end of that hour it was working. Rough, but the core was there: images uploading, grouping correctly, the access levels working as intended.

One glaze with six samples on black and red clay
One glaze, six samples, filterable by clay. Each card says how it was applied.

Then I kept improving it over the next few days. I didn’t want people to identify every glaze by hand, so I added AI tagging with Gemini: upload a photo, and it looks at the glaze and pre-selects what it thinks it is. I asked Claude whether this was doable. It said yes, explained that the Gemini photo API was free at low volume, and then built it. I was genuinely surprised by how well it worked.

A bowl with two glaze layers, with its clay, layers and application method listed
A single piece: clay, glaze layers in order, and how they were applied.

For security I added Firebase App Check with reCAPTCHA, rate limiting (20 uploads per 24 hours per browser), and Firestore rules that require authentication for writes. I asked Claude to list the risks in order of importance, checked the plan with a developer friend, and worked through it step by step.

Who did what

Me: the problem, the brief, every product and security call, setting up Firebase and Cloudinary, and the deploy.
Claude: the code.

The site is live. It’s not a big audience, but we use it at the studio as a reference before glazing and as a record of what worked. The glazes group correctly and the AI tagging works.

Next on my list: before and after photos, so you can see the same piece before firing and after.

The year before, it didn’t go this way

In 2025 I tried to build a personal finance tracker: log income and expenses, see some dashboards. Pretty simple. I was using Lovable at the time. The UI existed and the backend existed, they just didn't talk to each other properly. I couldn't diagnose it because I can't read code well enough to point at what's broken, so I gave up.

hello? backend?

What’s different now isn’t that I got better at development. I didn’t. What seems different is that Claude Code can hold the whole structure in mind and mostly knows what needs fixing without me explaining it technically. I very rarely hit a leftover bug from an earlier round that needed my input. Back then, I couldn’t give the AI the guidance it needed because I’m not a developer. Now I mostly don’t need to.

On skipping the design phase

For a project like this, I think not designing first was the right call. I knew what the site was for and what the main features were, and that turned out to be enough. When you can iterate cheaply and quickly, spending three weeks in Figma first probably just delays the project until it doesn’t happen. I fixed things as I went and it worked out fine.

I’d approach a bigger project differently, though. Claude drifts: it can forget which component styles it was using or which naming conventions it set up earlier. For anything with more screens, more people or a longer timeline, documentation and a design system matter a lot. The cost of skipping them grows with the scope. For this one, skipping was the right call.

If you’ve been curious but haven’t tried

Before this, I had never deployed anything through a terminal. I had never set up Firebase, added bot protection or connected an AI API. I did all of it by describing what I wanted and following Claude’s instructions, one step at a time, with an explanation of why for each one. The setup was tedious. Without that help, even with the app built, I’d have spent ages reading documentation and following tutorials just to get it online.

The biggest help wasn't the code. It was a patient guide through the boring setup.