Vibe Coding Walkthrough

A Day of Vibe Coding: Building a Real App

Not theory — an actual afternoon of building. We start with an idea at 1 PM and have a working app by 5 PM. Every prompt, every revision, every mistake is shown.


The Idea

It's Saturday, 1 PM. You want a personal movie watchlist — somewhere to track movies you want to watch, movies you've seen, and your rating for each one. You've looked at apps for this and none of them are quite what you want. So you're going to build it yourself, today, using AI.

Your tools: a browser and Claude.ai. Nothing else. No code editor, no terminal, no programming knowledge required.

Here's how the afternoon actually goes.


1:00 PM — The First Prompt

You

Build me a movie watchlist app. I want to add movies with a title and year, mark them as "want to watch" or "watched", and rate the ones I've watched from 1-5 stars. Show the list sorted with unwatched movies first. Clean dark design. Save everything in the browser so it's still there when I come back.

Notice what this prompt includes: what the app does (add, categorize, rate), what data it stores (title, year, status, rating), how it should look (dark design), and how data should persist (browser storage). Every detail you include is a detail AI gets right.

Claude generates an Artifact — a live, interactive preview right in the chat. You can see the app immediately. It has an input form, a list area, and a dark color scheme.

First impression: it works. You can add a movie, it appears in the list. But a few things aren't right.


1:15 PM — The First Round of Fixes

You click around and find three issues:

You

Three changes:

1. Replace the rating dropdown with clickable star icons. Click a star to set the rating, click it again to remove it.
2. Add a small delete button (X) on each movie card. Show a "Are you sure?" confirm before deleting.
3. The year field should only accept 4-digit numbers between 1900 and 2030.

Only make these changes. Don't modify anything else.

That last line — "Only make these changes. Don't modify anything else" — prevents AI from "improving" parts you're happy with. Without it, AI might rearrange the layout or add features you didn't ask for.

The updated version appears. Stars work, delete works, year validation works. On to the next round.


1:45 PM — Making It Look Better

The app functions correctly but looks basic. Time to improve the design.

You

Improve the visual design:

- Movie cards should have a subtle border and rounded corners, with a slight glow on hover
- Watched movies should look slightly different from unwatched ones — maybe a dimmer card or a green checkmark
- The star rating should be gold colored
- Add a count at the top: "5 movies — 3 to watch, 2 watched"
- Make the add form more compact — put title and year on the same line
- The whole thing should look good on a phone screen too

This is a design-focused prompt. Notice it's specific about visual changes — "subtle border and rounded corners" rather than "make it look nicer." Specific descriptions produce specific results.

The result looks significantly better. The cards have depth, watched movies have a green checkmark, stars are gold, and the counter at the top gives a quick overview.

Pro Tip: Test on Your Phone

If you asked for mobile-friendly design, actually test it. In Claude, the Artifact preview shows a desktop view. Open the full preview and resize your browser window to phone width. Things that look fine on desktop often have overlapping text or tiny buttons on mobile.


2:15 PM — Adding a Feature

The core app works and looks good. Now you want to add something that wasn't in the original description: filtering.

You

Add filter buttons above the list: "All", "Want to Watch", "Watched". Clicking one filters the list to show only that category. "All" is selected by default. Show the count for each filter, like "Want to Watch (3)".

One feature, clearly described. AI adds the filters, they work, the counts update when you add or change movies. This took about 2 minutes from prompt to working feature.


2:30 PM — Something Breaks

You decide to add search. You ask for a search bar that filters movies as you type. AI adds it — but now the filter buttons and the search bar conflict. If you filter to "Watched" and then search, the search ignores the filter and shows results from all movies.

This is normal. When AI adds a new feature, it doesn't always consider how it interacts with existing features.

You

The search bar and the filter buttons need to work together. If I select "Watched" and then search for "star", it should show only watched movies that match "star" — not all movies. The search should filter within the currently selected category.

This fix works. The key was describing the expected behavior precisely: "filter within the currently selected category." If you'd just said "fix the search," AI might have interpreted the problem differently.

When Things Break

Don't panic when a new feature breaks an existing one. Describe how the features should work together. The more precisely you describe the expected behavior, the faster AI fixes it. "These two things should work together" is vague. "Search should filter within the selected category" is actionable.


3:00 PM — Testing Everything

Two hours in, the app has grown. Before adding more features, it's time to test what exists:

The refresh test reveals a bug: the ratings are saved, but when the page reloads, the gold star icons show the wrong number of stars. The data is correct but the display is wrong.

You

Bug: when I refresh the page, the star ratings display incorrectly. A movie rated 4 stars shows only 2 filled stars after reload. The rating data seems to be saved correctly (if I click to re-rate, it knows the old rating) but the visual display is wrong on page load.

That's a good bug report: what you did (refreshed), what you expected (correct stars), what actually happened (wrong display), and an additional observation (data is correct, display is wrong). AI fixes it in one round because the description was precise.


3:30 PM — The Final Touches

The app is solid. A few polish items:

You

Final improvements:

1. Add an empty state — when there are no movies, show a friendly message like "Your watchlist is empty. Add your first movie above."
2. When I add a movie, clear the form fields so I can add another one immediately.
3. Add a small note at the bottom of the page: "Data is saved in your browser. It will be here when you come back."
4. Animate new movies sliding in when added.


4:00 PM — Saving Your Work

The app is done. You've tested it, it works, it looks good. Now save it.

In Claude, click the code view of the Artifact and copy the entire contents. Open any text editor on your computer (Notepad on Windows, TextEdit on Mac — set to plain text mode), paste the code, and save it as watchlist.html.

Double-click the file to open it in your browser. Your app runs locally, with all the features you built. Your data saves to this browser, on this computer.

Total time: about 3 hours, including testing and fixing bugs.


What the Day Actually Felt Like

Here's the honest version of how this afternoon went:

1:00
Excitement
The first version appears in seconds. This is amazing.
1:15
Confidence
Fixes work on the first try. This is going fast.
2:30
Frustration
Search broke the filters. Two rounds of back-and-forth to fix it. Momentum stalls.
3:00
Discovery
Testing reveals the star display bug. Good thing you checked before calling it done.
3:30
Satisfaction
Polish round makes everything feel finished. The empty state and animations make it feel real.
4:00
Done
A working app you actually use. Built in an afternoon. You made this.

The pattern is always the same: fast start, growing confidence, a frustrating middle section where things break, then a satisfying finish once you push through the bugs. This is normal. Every project feels like this — even for professional developers.


What You Learned

Even if you weren't trying to learn anything, you picked up several skills during this afternoon:

These skills transfer to every future project. The next thing you build will go faster because your prompts will be better from the start.


The Day — Quick Reference

Back to Home