Post your build ideas
LocalASO Track App Store keyword ranks in every countryFind your vibe. Find you job which is just for you and your dataDealtab Brand Deal Tracker That Does The Work For YouIs Major Cooked? Free AI risk score + roast for your college majorWiral.Social LinkedIn, Scheduler, Scheduling Tool, Ghostwriter
Solo Era solo activities, solo maxxing, sidequests, challengeCadentiq daily routine, wellbeing, self care, healthy habitsTexeva Your businessKeepsake Project Management, Freelancers, DesignersOrvyx AI You create

Vibe coding project ideas: 12 builds by difficulty, each with a first prompt

Pick a project you can describe on one screen, with data you could recreate and no secret key in the browser. Beginner vibe coding projects are single-page tools with no login: a cost calculator, a session picker, a small game. Step up to one database table or one outside API, then to sign-in, payments or scheduled jobs. Below are 12, four per level, each with a first prompt to paste and a follow-up for the step where it tends to break.

What makes a project a good fit for vibe coding?

Vibe coding means describing what you want to an AI tool and accepting much of the code it writes without reading all of it. That works when a wrong answer is cheap and easy to spot. It works badly when a wrong answer is expensive or invisible. So the useful question is not “can the tool build this?” but “what happens if it builds it slightly wrong?”

Fit check for a vibe coding project
QuestionGood fitPoor fit
Can you check the result?You can write the right answer for five example inputsSuccess is a feeling you judge by squinting
What does lost data cost?An afternoon of re-entering itA deposit, a diagnosis or a payment record
Where do secrets live?There are none, or they stay on a serverThe app only works if a secret key is in the browser
Does money move?No money movesYou hold, split or refund other people’s money
Who can write to it?You, or a small group you trustStrangers who can write to your database
What do people do with the output?Look at it, then decide for themselvesRely on it as health, legal or tax advice

This page sorts 12 projects by what they need, not by how impressive they sound. Beginner means one page, no login, no backend. Intermediate means one database table or one outside API. Stretch means sign-in, payments or a background job, which is where unread AI code can hurt someone.

How should you write the first prompt for a vibe coding project?

Every first prompt below has the same five lines: User, Screen, Data, Do not build, Done when. The last two do most of the work. A tool told only what to build will keep adding. A tool told what to leave out, and how you will test the result, stops sooner and gives you something you can verify.

Each project also has a follow-up prompt for the step where that kind of app commonly goes wrong: lost state, a key in the browser, rows anyone can read, a payment that is confirmed too early. Send the follow-up as soon as the first version runs, not after you have added ten features on top. For a general method, read how to write an app build prompt. To assemble one for your own idea, use the AI coding prompt builder. To get a project matched to your experience and time, try the vibe coding project picker. If you build with Claude Code specifically, Claude Code project ideas covers a different set of builds.

Which vibe coding project ideas suit a beginner?

These are single-page tools: no login, no server, no outside services. They fail in plain sight, because a wrong number or a broken button is visible in seconds. That is the point. You learn how the loop of prompt, run, check and correct feels before anything can leak or charge.

01 What a freelance day actually costs you

A one-page calculator that turns your target income, tax rate, costs and billable days into the day rate you actually need.

Level
Beginner: one page, no storage required.
Who it’s for
Freelancers who quote a day rate without counting unbilled days.
Where it breaks
Arithmetic that looks right and is not, then inputs that vanish on reload.

The board idea states the uncomfortable result: many freelancers earn far less per day than they think. The build is a formula and a form. Your job is to supply one worked example so the tool cannot fake it. See the idea.

First prompt
Build a single-page web app. No backend, no login.
User: a freelancer who quotes a day rate without counting unbilled days.
Screen: one form (target yearly net income, tax rate in percent, yearly costs, billable days) and one result card with the day rate needed.
Data: none stored.
Formula: needed revenue = net income / (1 - tax rate) + costs. Day rate = needed revenue / billable days. Show the formula under the result.
Do not build: accounts, charts, currency conversion, PDF export.
Done when: net income 60000, tax 25, costs 8000, 200 billable days shows 440 per day. Empty or zero fields show a message, never NaN or Infinity.
Follow-up for state that disappears
Keep the form values after a page reload using browser storage, no account. Add a Reset button. If the stored data is missing or corrupt, fall back to the defaults instead of showing a blank page. Do not change the formula.

Read “What a freelance day actually costs you” on the board and copy its build prompt →

02 What every device in the flat costs you per year

A table where you list each device, its wattage and daily hours, and see the yearly running cost and a total.

Level
Beginner: manual entry only.
Who it’s for
Renters and homeowners wondering what the forgotten dehumidifier costs.
Where it breaks
Number parsing: decimal commas, blanks, negative values.

The board post notes that cheap smart plugs report power badly. That is a reason to leave live readings out of version one and start with numbers typed from the device label. Reading from a plug is a separate project with an outside API. See the idea.

First prompt
Build a single-page web app. No backend, no login.
User: someone who wants to know what each plugged-in device costs per year.
Screen: an editable table (device name, watts, hours per day) plus one field for price per kWh. Each row shows its yearly cost; a total sits at the bottom, sorted most expensive first.
Formula: yearly cost = watts / 1000 * hours per day * 365 * price per kWh.
Data: keep rows in memory only.
Do not build: smart-plug connections, accounts, charts, device databases.
Done when: one device of 100 W for 10 hours a day at a price of 0.30 shows 109.50 per year.
Follow-up for messy input
Accept both 0.30 and 0,30 as the same number. Reject negative numbers and blanks with a message beside the field. Add five tests for the cost function, including zero watts and 24 hours. Show me the test output.

Read “What every device in the flat costs you per year” on the board and copy its build prompt →

03 A session that fits the 22 minutes you actually have

Pick how many minutes you have and what equipment is in the room, and get a workout built from those limits.

Level
Beginner: a fixed exercise list, no model call.
Who it’s for
People who skip the day they have twenty minutes.
Where it breaks
The tool invents exercises, ignores your time limit or shows an empty result.

Do not ask the builder to invent the exercises. You write the list, from movements you can vouch for, and the app only selects and orders them. That keeps the content yours and the logic testable. See the idea.

First prompt
Build a single-page web app. No backend, no login.
User: someone with a short, unplanned window to exercise.
Screen: a minutes field, equipment checkboxes (none, dumbbells, band), and a Build session button that shows an ordered list with minutes per exercise.
Data: a list I will paste (name, minutes, equipment needed). Do not add exercises of your own.
Rule: only use exercises whose equipment is ticked or none.
Do not build: accounts, history, timers, video, progress charts.
Done when: 22 minutes with no equipment gives a list whose minutes sum to between 21 and 23.
Follow-up for edge cases
Write the session builder as one pure function with tests for 5, 22 and 60 minutes, and for no equipment. If no valid session exists, show a message instead of an empty list. Show the test output.

Read “A session that fits the 22 minutes you actually have” on the board and copy its build prompt →

04 Workout game where you fight monsters

A tiny browser game: log your reps, deal that much damage, defeat the monster, meet the next one.

Level
Beginner: game rules in code, state in the browser.
Who it’s for
Anyone who wants a push to move and likes small games.
Where it breaks
Game rules tangled into the interface, so each tweak breaks something else.

The board post names existing apps in this style and describes the wish plainly: fight monsters by working out. A game is a good vibe coding teacher because you can see at once when the rules are wrong. See the idea.

First prompt
Build a single-page browser game. No backend, no login, no sound.
User: someone who does push-ups and wants a reason to count them.
Screen: a monster with a health bar, a number input for reps, an Attack button, a log of the last five attacks.
Rules: damage equals reps. Monster 1 has 25 HP, monster 2 has 40 HP, monster 3 has 60 HP. A defeated monster is replaced by the next.
Do not build: accounts, leaderboards, shops, animations beyond the health bar.
Done when: 10 reps leaves monster 1 at 15 of 25, then 15 more defeats it and monster 2 appears at 40 of 40.
Follow-up for tangled rules
Move the rules into one module with no interface code: state in, action in, new state out. Add tests for the Done-when example and for reps of zero. The interface may only call that module. Save and restore progress in browser storage.

Read “Workout game where you fight monsters” on the board and copy its build prompt →

Which vibe coding projects need a database or an API?

Intermediate projects add exactly one outside thing: a database table with file storage, or a call to one external API. That one thing brings the first real risks, namely rows other people can read and keys that end up in the page. Adding only one at a time means you know which one caused a problem.

What each intermediate project adds
ProjectAddsRisk to test for
Flat move-in recordOne table, one photo bucketA stranger reading or deleting your photos
Handbook answererOne model APIThe key shipped to the browser
Which friend owns thisOne shared tableDuplicates and junk rows
Appointment notesOne model API, sensitive textInvented content; text stored or logged

01 Document a flat on move-in day

A guided room-by-room checklist where each item gets a photo and a note, with a timestamp the server sets.

Level
Intermediate: one table plus file storage.
Who it’s for
Tenants who want proof of the flat’s condition for the deposit.
Where it breaks
Photos readable by anyone; a timestamp the browser can fake.

The board idea ends in a signed PDF both sides keep. Leave that, and sharing, for later. Version one is the checklist, the camera and the record. The data matters, since it is evidence, so the follow-up is about who can touch it. See the idea.

First prompt
Build a mobile-friendly web app for one person documenting a rented flat on move-in day.
User: a tenant holding the keys, phone in hand.
Screen: a list of rooms; each room shows fixed prompts (every wall, each window frame, inside the oven) where I add a photo and an optional note.
Data: one table items (id, room, label, note, photo_path, created_at set by the database default) and one storage bucket for photos.
Do not build: sharing, signatures, PDF export, accounts.
Done when: I add 3 photos in 2 rooms, reload, and see all of them with timestamps from the database. A print view lists every item.
Follow-up for who can read the data
Enable Row Level Security on the table and the bucket. In plain words, list what a stranger holding only the public key can read, write and delete, then prove it with real requests using that key. If the answer is everything, stop and tell me what we need (probably sign-in) instead of loosening the policies.

Read “Document a flat on move-in day” on the board and copy its build prompt →

02 An agent that answers from your docs and shuts up otherwise

A text box that answers a question only from your handbook, and says it is not there when it is not.

Level
Intermediate: one model API, files in the repo.
Who it’s for
Teams tired of the same handbook questions in chat.
Where it breaks
The API key lands in browser code; the model answers anyway.

The board idea says the restraint is the product: most assistants guess and few admit they do not know. That also gives you a clean test, since a question the handbook cannot answer must get one fixed reply. Start with a web page, not a chat integration. See the idea.

First prompt
Build a web page with one text box and an Ask button.
User: a teammate with a question about our handbook.
Data: markdown files in /handbook, which I will add.
Behavior: find the passages relevant to the question; ask the model to answer only from them and quote the passage used. If no passage supports an answer, return exactly: Not in the handbook.
Do not build: chat history, accounts, file upload, Slack, streaming.
Done when: of 10 questions I give you, 5 answerable ones return an answer with a quote and 5 unanswerable ones return exactly Not in the handbook.
Use a placeholder for the model key and tell me where it lives.
Follow-up for the API key
Show me every place the model key is read. It must be only in server code, in an environment variable without a VITE_ or NEXT_PUBLIC_ prefix. Search the built output for the key value and confirm it is absent. Add a limit of 20 requests per visitor per hour.

Read “An agent that answers from your docs and shuts up otherwise” on the board and copy its build prompt →

03 Which of my friends already owns this

A shared list where friends add the games they own, and a search that shows who already has the one you are about to buy.

Level
Intermediate: one shared table.
Who it’s for
A friend group deciding which co-op game to buy.
Where it breaks
“Portal 2”, “portal 2” and “Portal2” count as three games.

The board post makes the point that no store page tells you this. Version one is typed by hand, for a single friend group that has the link. Pulling libraries from a store’s own API is a second project and needs that store’s terms read first. See the idea.

First prompt
Build a small web app for one friend group.
User: someone about to buy a co-op game who wants to know which friends already own it.
Screen: a search box for a game title showing who owns it, and a form to add (your name, game title).
Data: one table owned_games (id, person, title, created_at).
Do not build: accounts, store imports, recommendations, profile pages.
Done when: I add Sam/Portal 2 and Ana/Portal 2, search for Portal 2 and see both names, and delete nothing.
Follow-up for duplicates and junk
Normalize titles in one function used by both saving and searching: trim, ignore case, strip punctuation. Add a unique constraint on person plus normalized title. Suggest near matches when a search finds nothing. Explain who can add rows today and how a leaked link would be abused.

Read “Which of my friends already owns this” on the board and copy its build prompt →

04 Notes from the appointment you’ll have forgotten by Thursday

Paste what was said, or a transcript, and get one short page: what was said, what to do, what to watch for, when to come back.

Level
Intermediate: one model API, sensitive text.
Who it’s for
Patients and carers who forget the details after a visit.
Where it breaks
The model adds advice nobody said; the text gets stored or logged.

The board idea draws its own line: purely an organiser, never interpreting and never advising. Treat that as a test. Every line of output must trace to a sentence in the input. Start with pasted text; recording audio is a larger project. Health information is sensitive, so version one should store nothing. See the idea.

First prompt
Build a web page with a text area and a Make notes button.
User: a patient who wants a tidy page after an appointment.
Input: text I paste (what I remember or a transcript).
Output: four headings (What was said, What to do, What to watch for, When to come back), each a short list. Use only what is in the input. If a heading has nothing, write Nothing mentioned.
Do not build: accounts, saving, audio recording, advice, explanations of medical terms.
Done when: a pasted example with no follow-up date shows Nothing mentioned under When to come back.
Follow-up for invented content and privacy
For every line in the output, show the input sentence it came from; drop any line with no source. Make sure nothing the user pastes is stored, logged or sent anywhere except the single model request, and tell me where that request is made.

Read “Notes from the appointment you’ll have forgotten by Thursday” on the board and copy its build prompt →

Which vibe coding projects are a stretch, and why?

Stretch projects need sign-in, payments or something that runs when nobody is looking. These are the cases where the cost of code you did not read is highest. They can still be vibe coded, but the follow-up prompts matter more than the first one. Read the output of each follow-up, run the tests it writes, and use test mode for anything involving payment.

01 Neighbourhood tool library

Neighbours list tools they lend, request them for a date and hand them over at the door, with a simple record of returned on time or not.

Level
Stretch: sign-in and per-user data.
Who it’s for
A street or building that owns twelve drills between them.
Where it breaks
Exact addresses shown to strangers; users editing each other’s listings.

The board idea says no payments are needed, which keeps this firmly out of the money category. The hard part is people: a map of who owns what and where they live is sensitive. See the idea.

First prompt
Build a web app with email sign-in.
User: a neighbour who wants to borrow a tool, or lend one.
Screens: sign in; my tools (add, remove); browse tools; request a tool for a date range; my requests.
Data: tools, requests (status: pending, accepted, declined, returned), users. A user can edit only their own tools.
Do not build: payments, chat, reviews, a map, notifications.
Done when: with two test accounts, A lists a drill, B requests it, A accepts, B sees accepted, and B cannot edit A’s drill.
Follow-up for location privacy
Show a lender’s area only, never the street address, until the lender accepts a request. Write a test that signs in as a third user and confirms the address is not returned by the API, not just hidden on screen.

Read “Neighbourhood tool library” on the board and copy its build prompt →

02 The weekly review that writes itself

On Friday afternoon it gathers what happened in your week into a page you edit for five minutes, then asks two questions and keeps your answers.

Level
Stretch: a scheduled job and an outside account.
Who it’s for
People who abandon weekly reviews at the blank page.
Where it breaks
The job runs twice or not at all; time zones; tokens leaking.

The board idea lists commits, calendar, tickets and files. Pick one source for version one. A background job is the part you cannot watch, so ask for something you can test without waiting for Friday. See the idea.

First prompt
Build a web app with sign-in for one user.
User: a developer who skips the weekly review.
Source: my commits from one connected GitHub account, read-only access.
Job: a function generate_review(user, week_start) that lists the week’s commits grouped by repository and saves an editable draft, plus a page to edit it and answer two fixed questions.
Do not build: other sources, teams, email, sharing.
Done when: I can run generate_review by hand from a button and see this week’s draft. Access tokens are stored only on the server.
Follow-up for the scheduled job
Schedule generate_review for Friday 16:00 in the user’s own time zone, using whatever scheduler my host provides. Make it safe to run twice: a second run for the same week must update nothing and create no duplicate. Test it by calling the function twice.

Read “The weekly review that writes itself” on the board and copy its build prompt →

03 A marketplace for limited ad slots

Businesses see which slots are free, reserve one and pay, and each slot can be sold once for a given period.

Level
Stretch: payments and limited inventory.
Who it’s for
A site owner selling a few fixed ad positions.
Where it breaks
A slot is shown as sold before payment clears, or sold twice.

The board idea is a simple premium ad space marketplace. The product is the inventory rule: one buyer per slot per period. Do not trust the application to enforce it alone. Make the database refuse the second sale, and only mark a slot as taken when the payment provider confirms payment. See the idea.

First prompt
Build a web app where a buyer can reserve a monthly ad slot. Use the payment provider’s test mode and hosted checkout; card details must never touch our code.
User: a small business buying one of 5 slots for next month.
Screens: slot list (free or taken), buyer form (title, URL, email), then hosted checkout.
Data: slots (slot_number, month, status), orders.
Do not build: refunds, invoices, a seller dashboard, accounts.
Done when: a test-mode payment for slot 2 in a given month marks it taken, and the list shows it taken after reload.
Follow-up for double sales
Mark a slot as taken only inside the handler for the provider’s payment-confirmed webhook, after verifying its signature, and ignore repeated events with the same id. Add a unique index on slot plus month in the database. Write a test that confirms two payments for the same slot produce one taken slot and one failure.

Read “A marketplace for limited ad slots” on the board and copy its build prompt →

04 GoFundMe, but for weddings

A couple’s page where guests contribute to specific costs, the photographer or the flowers, and everyone sees what is covered.

Level
Stretch: owner sign-in and, later, money.
Who it’s for
Couples who would rather ask for help with the day than for a toaster.
Where it breaks
A hidden button protecting an endpoint that is not protected.

The board post says the hard part is social, not technical: the wording of every screen decides whether it reads as help us celebrate or pay for our party. So version one moves no money. Guests pledge, the couple sees the pledges, and the page shows what is covered. Real payments come later, through a provider that holds the money. See the idea.

First prompt
Build a web app with sign-in for the couple only. Guests need no account.
User: a couple planning a wedding, and their guests.
Screens: the couple creates a page with cost items (name, amount); a public page shows each item as covered or open; a guest can pledge to an item with a name and no payment.
Data: pages, items, pledges.
Do not build: payments, messages, guest accounts, photos.
Done when: I create a page with 3 items, pledge the full amount to one as a guest, and the public page shows that item as covered.
Follow-up for protected endpoints
List every API route that changes data and state which of them require the couple to be signed in and own the page. Write tests that call each route directly, with no browser and no session, and confirm every one is refused. A button being hidden is not protection.

Read “GoFundMe, but for weddings” on the board and copy its build prompt →

Where does a vibe-coded app usually break?

Each follow-up above targets a class of fault with a documented cause, such as keys bundled into client code or tables without row-level rules. The same handful turn up across projects, so keep the table as a checklist for ideas that are not on this page.

Breakpoints and what to ask for
BreakpointWhat you seeAsk for
State lostEverything resets on reloadBrowser storage or a table, with a fallback for bad data
Hidden logicEvery tweak breaks something elseRules in a pure module, with tests
Key in the browserA secret works from the page codeA server route and a search of the built output
Open rowsAnyone can read or change dataRow Level Security and a real request made as a stranger
Unprotected routeUI hides it, the API allows itTests that call each route with no session
Early confirmationPaid or booked before payment clearsWebhook-only state change and a unique index

Before you deploy anything that stores data for others, read the generated code for three things: where each secret is read, what each table lets an anonymous visitor do, and which routes change data. You do not need to read all of it. You need to read those.

Which builder suits which vibe coding project?

The tools differ in how you work, not in which ideas they accept. Claude Code runs in a terminal and also has IDE extensions, a desktop app and a web version (Claude Code docs). Cursor is an editor with an agent built in, plus a command-line tool (Cursor). Bolt describes itself as an AI builder for websites, apps and prototypes (Bolt). v0 by Vercel plans and builds as it goes, connects to databases and deploys to Vercel (v0). Lovable builds and hosts apps from a description, in the browser (Lovable).

A judgment call, not a benchmark
Project levelSuitsWhy
BeginnerA browser builder such as Lovable, Bolt or v0You see a running preview straight away, and a mistake is visible
IntermediateEither styleBrowser builders connect a database quickly; an editor or terminal agent lets you read the code that touches the key
StretchAn agent in a real repository: Claude Code or CursorYou can run tests, read the diff and keep the code in version control

That mapping is our opinion. A first prompt from this page works in all of them. For product-by-product facts, see Claude Code vs Cursor vs Lovable, and for the full workflow with an agent, how to build an app with an AI coding agent.

Where can you find more projects worth vibe coding?

All twelve above come from the board at Post your build ideas, where people post ideas they will never build. Browse all ideas, filter by category, and every idea has a generated build prompt you can copy into Claude Code, Cursor or Lovable. If you have an idea you will not build, post it: it is free, needs no account and no email, and publishing is permanent. If you build one of the ideas, you can attach the build to its page.

Frequently asked questions

What are good vibe coding projects for beginners?

Single-page tools with no login and no server are best: a cost calculator, a unit converter, a workout picker, a small game. You can see at once whether the result is right, and nothing sensitive is stored. Write one worked example before you start so you can check the answer yourself.

Can you vibe code an app with login and payments?

You can, but those are the parts where unread code does the most harm. Use a managed sign-in service and a payment provider’s hosted checkout in test mode. Ask for tests that call every route without a session, and change state only when the provider confirms payment.

How do I stop an AI builder from exposing my API key?

Keep the key in server code, read from an environment variable without a client prefix such as VITE_ or NEXT_PUBLIC_, because those prefixes are bundled into browser code. Then search the built output for the key value. If your builder cannot run server code, put the call behind a server function.

Which tool should I use: Claude Code, Cursor or Lovable?

Choose by working style. Lovable, Bolt and v0 start from a description and show a running preview, which suits beginner projects. Claude Code and Cursor work inside a real codebase, which suits projects with data, sign-in or tests. The same first prompt works in all of them.

How long should a first prompt be?

Short enough to read in a minute: the user, one screen, the data, what not to build, and a check for done. The examples here run 8 to 12 lines. Adding features to the first prompt tends to produce more code to check, not a better first version.

Where do I get vibe coding ideas other people want?

Browse the board at Post your build ideas, where people post ideas they will not build, each with a generated build prompt. For a project matched to your skill and time, the vibe coding project picker gives one bounded idea, a build order and a finish line.

Created with AI assistance and edited for this site. Examples are illustrative and do not represent customer research. About the publisher.