These 24 prompts build real full-stack apps with Bolt.new by StackBlitz — the in-browser AI app builder that runs on WebContainer, a browser-based Node.js runtime. From one plain-language brief, Bolt writes the code, installs the npm packages, runs the dev server, and deploys — with no local setup. Because WebContainer has no native binaries and no local Postgres, these prompts lean on a hosted database (Supabase) and serverless-friendly patterns, and finish at a Netlify deploy or a GitHub export. Every prompt is complete text you paste straight into the Bolt chat box, with [bracketed placeholders] for your own names and stack.

Each one follows how Bolt actually works best: an app-level brief that names the product, the users, the core flows, the data model, the auth story, and the pages — then pins the stack (Vite + React + TypeScript + Tailwind or Next.js App Router, Supabase for DB and auth) and a design vibe. For the wider set, keep the 40 best Bolt.new prompts roundup handy; when a build gets large, break it into pieces with the how to prompt Bolt.new guide.

Advertisement

App-brief starters (a full app in one shot)

The biggest shift with Bolt is to zoom out from "build me this screen" to "build me this app." Name the product, the users, the flows, the data model, the auth, and the pages in plain language, then build the shell plus one core feature first. Ask Bolt to plan before anything large, since every message spends tokens even when a build fails.

1. Plan the app before Bolt builds

Before writing any code, outline a build plan so we agree on scope. Do NOT build yet.

App: [a team task manager] used by [small product teams], to [plan work and track what ships this week].

In the plan, list:
- Core entities and their fields ([Workspace, User, Project, Task]).
- The pages and the primary action on each.
- The auth story (who logs in, what they can see).
- The Supabase tables and key relationships.
- What is explicitly OUT of scope for v1 (no billing, no notifications yet).

We'll build on Vite + React + TypeScript + Tailwind with Supabase for the database and auth. Remember this runs in WebContainer, so no local database — use hosted Supabase.

Output only the plan as markdown. I'll review it, then ask you to build the shell.

Why it works: a plan-first pass pins entities, pages, and scope before a single token is spent on code, so the build that follows is right the first time.

2. Full SaaS app in one brief

Build the shell of a full-stack SaaS app, following the plan we agreed on.

Product: [a team task manager] for [product teams], used on desktop to run the week at a glance.

Pages:
- Marketing home at / with a hero, feature grid, and a "Get started" CTA.
- Authenticated app at /app with a sidebar (Dashboard, Projects, Settings).
- Dashboard: stat cards ([open tasks, due this week, completed]) and a recent-activity list.

Stack: Vite + React + TypeScript + Tailwind. Supabase for the Postgres database and auth. This runs in WebContainer — no local DB, no native binaries; use hosted Supabase and read all keys from env.

Data model: tables for [Workspace, User, Project, Task] with the fields from the plan and foreign-key indexes. Seed 5 sample projects so nothing looks empty.

Design vibe: elegant, minimalist, high-tech. Primary [#4f46e5], rounded corners, generous spacing. Responsive down to 360px.

Build the shell and the Dashboard reading live data first. Don't build billing or notifications yet — I'll add features one at a time.

Best for: going from an empty Bolt project to a running, data-backed SaaS skeleton you can extend feature by feature.

3. Team task manager with workspaces

Add multi-tenant workspaces to the app.

Pages & flow:
- A workspace switcher in the sidebar header.
- /app/settings/members: a table of members (name, email, role), an "Invite by email" form, and a remove action.
- Roles: [owner, admin, member]. Owners and admins can invite and remove; members can't.

Used by [a workspace owner], when onboarding teammates, to control who has access.

Data model: add [Membership] (user_id, workspace_id, role) and [Invite] (email, workspace_id, token, status) tables in Supabase. Scope EVERY query to the current workspace — a user never sees another workspace's data.

Invite flow: create an invite row and stub the email send behind lib/email so it's easy to wire later. Enforce permissions in the data layer, not just the UI.

Keep the current stack (Vite + React + TypeScript + Tailwind + Supabase). Only edit the files needed for this feature.

Why it works: multi-tenancy and roles are named as data plus real enforcement, so Bolt builds isolation instead of a UI that only looks gated.

4. Analytics dashboard on Supabase

Build an analytics dashboard page at /app/analytics that reads real rows from Supabase.

Product surface:
- A date-range picker (last 7 / 30 / 90 days) that drives every widget.
- KPI cards: [total events, active users, conversion rate, avg session length] with a % change vs the previous period.
- A line chart of [events over time] and a bar chart of [top pages] using [Recharts].
- A paginated table of [recent events].

Used by [a founder], each morning, to decide where to focus that day.

Constraints:
- Aggregate in the database via Supabase queries/RPC — never fetch all rows and reduce in the browser.
- Add an [events] table if it doesn't exist and seed 30 days of realistic sample data.
- Vite + React + TypeScript + Tailwind. Loading skeletons per widget. Responsive to 360px.

This runs in WebContainer, so keep everything JS-native and hosted (Supabase) — no local services.

Best for: a metrics dashboard that aggregates in Supabase rather than faking numbers in the frontend. For more layouts, see the Bolt.new SaaS dashboard prompts.

Auth & user accounts (Supabase)

Add authentication as its own step, then layer profiles and roles on top. Bolt pairs naturally with Supabase Auth; use the built-in Connect Supabase action, and name the route-protection strategy so the guard is enforced in the data layer, not just a UI check.

5. Email + password auth with protected routes

Add authentication with Supabase Auth.

Pages & flow:
- /login with email + password and "Continue with GitHub" (OAuth).
- /signup, sign-out, and a session that persists across refreshes.
- Everything under /app requires a session; unauthenticated visitors are redirected to /login.

Used by [returning users], at the start of a session, to get into their own data.

Constraints:
- Use Supabase Auth. I'll click "Connect Supabase" — add every required env var to .env.example, names only, no values.
- A useUser() / getCurrentUser() helper usable across the app; scope data queries to the signed-in user.
- Guard the /app routes in a route wrapper, not just by hiding links.
- Vite + React + TypeScript + Tailwind. Show clear inline errors on bad credentials.

Only edit the files needed for auth. Tell me which Supabase dashboard settings to enable to test.

Why it works: route protection is specified as a real guard plus a session helper, so it holds even if someone edits the URL directly.

6. User profile and account settings

Build an account settings area at /app/settings.

Product surface:
- Profile tab: name, avatar upload, timezone. Saves to Supabase.
- Security tab: change password and sign out everywhere.
- Danger zone: delete account with a typed-confirmation dialog.

Used by [any signed-in user], occasionally, to keep their account correct and safe.

Constraints:
- Avatar upload uses Supabase Storage; validate file type and max size before upload.
- All mutations are scoped to the current user; validate input with Zod.
- Account deletion cascades the user's rows and signs them out.
- Vite + React + TypeScript + Tailwind, tabbed layout. Toast on success and failure.

Only touch the settings pages and the storage/upload helper. Keep the rest of the app unchanged.

Best for: the standard account screens — profile, security, delete — with uploads and deletes handled safely against Supabase.

7. Magic-link auth with Supabase

Replace password login with passwordless magic-link auth using Supabase Auth.

Pages & flow:
- /login with a single email field and a "Send magic link" button.
- A "check your email" confirmation state and an /auth/callback route that completes the session.
- First-time sign-in creates the user's profile row automatically.

Used by [consumer users] who don't want another password.

Constraints:
- Configure Supabase magic-link auth; add the redirect URL and keys to .env.example (names only).
- On first sign-in, upsert a [profile] row (user_id, email, created_at).
- Handle expired / already-used links with a clear error and a re-send option.
- Vite + React + TypeScript + Tailwind. Tell me exactly which Supabase dashboard settings to enable to test.

Scope edits to the login page, the callback route, and the auth helper only.

Why it works: the callback and profile creation are named end to end, so the low-friction login actually completes a session instead of stalling on the redirect.

8. Role-based access control

Add role-based access control on top of the existing Supabase auth. Roles: [owner, admin, member, viewer].

Product surface:
- A can(user, action, resource) helper in lib/authz that owns all permission logic in one place.
- Enforce in the data layer: [only owner/admin can delete; viewers are read-only]. Reject denied writes.
- In the UI, hide or disable actions the current role can't perform — but never rely on the UI as the gate.

Used by [an admin], to keep the right people out of the wrong actions.

Constraints:
- Add a role to the [membership] table.
- Add the check to every mutating operation — sweep the codebase and don't miss one.
- Keep the stack (Vite + React + TypeScript + Tailwind + Supabase). Don't change unrelated files.

Before editing, list the files that hold write operations, then apply the check to each.

Best for: keeping permission logic in a single can() helper and sweeping every write, so access rules don't scatter as the app grows.

Advertisement

CRUD & data models

CRUD apps are Bolt's sweet spot: name the entities, the columns, and the actions, and it will create the Supabase schema, the queries, and the screens together. Describe the data model precisely and route every read and write through a thin data layer so the UI stays simple.

9. Project tracker with CRUD

Build a project tracker as a full-stack CRUD app on Supabase Postgres.

Product surface:
- /projects: a table of projects (name, status, owner, updated) with sort and an empty state.
- A "New project" dialog with a validated form.
- /projects/[id]: detail view with inline edit and a delete action (confirm first).

Used by [an agency lead], through the week, to see what's in flight and what's stuck.

Data model: [Project] (id, name, status enum [planning|active|done], owner_id, created_at, updated_at) with an index on status.

Constraints:
- All reads and writes go through a data-access module; validate input with Zod, reused on the form and before write.
- Refresh the list after a write so the table stays current.
- Vite + React + TypeScript + Tailwind. Table + dialog + form. Responsive.

Runs in WebContainer — Supabase only, no local DB. Only edit files for this feature.

Why it works: it defines the schema, the enum, the validation, and the refresh in one message, so the create-edit-delete loop actually reflects in the UI.

10. CRM with contacts, deals, and notes

Build a lightweight CRM as a full-stack app on Supabase.

Product surface:
- /contacts: searchable list (name, company, email, last touched).
- Contact detail: profile fields, a timeline of notes, and a "deals" panel.
- /deals: a kanban board with columns [lead, qualified, won, lost]; drag a card to change stage (persist on drop).

Used by [a solo founder doing sales], between calls, to remember context and move deals forward.

Data model: [Contact], [Deal] (contact_id, stage, amount), [Note] (contact_id, body, created_at). Foreign-key indexes.

Constraints:
- Stage changes and note creation persist to Supabase; optimistic UI on the board.
- Push full-text contact search into the query, not the client.
- Vite + React + TypeScript + Tailwind. Design vibe: clean and calm. Primary [#0f766e].

Build the contacts list and detail first, then the deals board. One feature per message.

Best for: a relational app where the board, timeline, and search all read from the same normalized Supabase tables.

11. Inventory app with search and filters

Build an inventory management app, full-stack, on Supabase Postgres.

Product surface:
- /items: a paginated, filterable table (SKU, name, category, quantity, price). Low-stock rows highlighted.
- Add / edit item in a dialog with validation.
- Bulk actions: adjust quantity, change category.
- A "stock summary" header: total items, total value, low-stock count.

Used by [a small warehouse manager], during a stock count, to keep quantities accurate.

Data model: [Item] (sku unique, name, category, quantity int, price numeric, updated_at); index category and name.

Constraints:
- Pagination and case-insensitive search both run in the Supabase query, not in memory.
- Validate mutations with Zod; refresh the list after writes.
- Vite + React + TypeScript + Tailwind. Responsive to 360px.

Only edit files for this feature.

Why it works: pagination, search, and the low-stock rule are pushed into the query, so the table stays fast as the catalog grows.

12. Mini CMS with drafts and publishing

Build a mini CMS for [blog posts], full-stack, on Supabase.

Product surface:
- /admin/posts: list with status badges (draft / published), search, and "New post".
- Editor at /admin/posts/[id]: title, slug (auto from title, editable), a markdown body with live preview, cover image, and tags.
- Publish / unpublish toggle that sets published_at.
- Public /blog and /blog/[slug] that render only published posts.

Used by [a marketing writer], to draft and ship posts without touching code.

Data model: [Post] (title, slug unique, body, status, cover_url, published_at) + [Tag] many-to-many. Index slug and status.

Constraints:
- Cover images go to Supabase Storage. Draft rows never appear on the public site.
- Vite + React + TypeScript + Tailwind. Responsive.

Build the admin list and editor first, then the public pages. Scope each message to the pages it touches.

Best for: a draft-then-publish workflow where public routes are strictly filtered to published rows.

Real-time & integrations (Stripe, email, files)

The money- and message-touching features lean hardest on Supabase and third-party keys. Name the integration, the data flow, and the env vars, acknowledge WebContainer, and use Bolt's built-in Connect Supabase and Deploy actions rather than asking it to run them in chat.

13. Real-time chat with Supabase Realtime

Build a real-time chat app, full-stack, using Supabase Realtime.

Product surface:
- A channel list on the left and a message thread on the right.
- An auto-growing composer; new messages from anyone appear instantly for everyone in the channel.
- Presence: show who's online in the current channel; a "typing…" indicator.

Used by [a small team], throughout the day, to talk without leaving the app.

Data model: [Channel] and [Message] (channel_id, user_id, body, created_at) on Supabase. Scope messages to the channel.

Constraints:
- Subscribe to Supabase Realtime for new-message and presence events; unsubscribe on unmount.
- Persist every message; optimistic send with a pending state.
- Vite + React + TypeScript + Tailwind. Keyboard submit. Responsive to 360px.

This runs in WebContainer, so use Supabase Realtime (websockets to the hosted service) — no self-hosted socket server. Only edit chat files.

Why it works: it names Supabase Realtime for the live layer, which fits WebContainer's no-native-server constraint, and pins subscribe/unsubscribe so listeners don't leak.

14. Stripe checkout and subscriptions

Add Stripe payments and subscriptions to the app. Use the current Stripe API.

Product surface:
- A /pricing page with [Free / Pro / Team] plans and an "Upgrade" button per paid plan.
- Upgrade creates a Checkout Session and redirects to Stripe.
- A billing page: current plan, "manage billing" (Stripe portal), and plan status.

Used by [a user ready to pay], to upgrade and manage their subscription.

Constraints:
- Create the Checkout Session in a Supabase Edge Function (or serverless route); a webhook verifies the signature and, on [checkout.session.completed / subscription updated], writes the plan to the user's row in Supabase.
- Handle canceled checkout, failed payment, and expired session paths.
- Store price/product IDs and keys in env (test keys in .env.example, names only) — never inline secrets.
- Vite + React + TypeScript + Tailwind.

Runs in WebContainer, so keep the backend serverless (Supabase Edge Functions). Tell me which Stripe dashboard settings and env vars I must set to test.

Best for: real billing where the webhook is the source of truth for plan state and every failure path is named — the part hand-written payment code usually gets wrong.

15. Transactional email on signup and events

Add transactional email to the app using [Resend].

Send email on these events:
- [Welcome email on first signup].
- [Invite email when a workspace owner invites a teammate], with the accept link.
- [A weekly digest] triggered from a scheduled job.

Constraints:
- Put all sending behind a lib/email module with typed functions (sendWelcome, sendInvite, sendDigest) so callers don't touch the provider directly.
- Send from a serverless route / Supabase Edge Function; read the [Resend] API key and from-address from env (names in .env.example).
- Use plain, well-formatted HTML templates with a text fallback; no external template service.
- Log failures and don't block the main flow if an email fails.

Vite + React + TypeScript + Tailwind. Runs in WebContainer, so send from a serverless function, not a long-running mail server. Only edit the email module and the call sites.

Why it works: wrapping the provider behind typed functions and sending from a serverless function keeps email decoupled and WebContainer-friendly.

16. File upload with Supabase Storage

Add file upload to [the project detail page] using Supabase Storage.

Product surface:
- A drag-and-drop upload zone plus a file picker; show per-file progress.
- An attachments list (name, size, uploaded date) with download and delete.
- Image files get a thumbnail preview.

Used by [a project member], to attach documents and images to a project.

Constraints:
- Upload to a Supabase Storage bucket; store metadata in an [Attachment] table (project_id, path, name, size, mime).
- Validate type and max size before upload; reject anything over [10MB].
- Scope reads/deletes so a user only sees attachments for projects they can access.
- Vite + React + TypeScript + Tailwind. Responsive.

This runs in WebContainer — use Supabase Storage, not the local filesystem. Only edit the upload component and its data helper.

Best for: attachments and images handled through Supabase Storage with validation and access scoping, instead of a fake local upload.

17. Live collaborative board

Build a live collaborative kanban board where changes sync across users in real time.

Product surface:
- Columns [To do, Doing, Done] with draggable cards; drag to reorder or move a card.
- When one user moves a card, every other viewer sees it move within a second.
- Card detail: title, description, assignee. Show which users are viewing the board (presence).

Used by [a small team], during standup, to update work together.

Data model: [Board], [Column], [Card] (column_id, position, title, description, assignee_id) on Supabase.

Constraints:
- Persist moves to Supabase and broadcast via Supabase Realtime; apply remote changes optimistically and reconcile on the server value.
- Reorder logic keeps positions stable without renumbering every card.
- Vite + React + TypeScript + Tailwind. Responsive.

WebContainer runtime — use Supabase Realtime for sync, no custom socket server. Only edit board files.

Why it works: it names the persistence, the broadcast, and the reconcile step, so concurrent edits converge instead of fighting each other.

18. Booking and scheduling app

Build a booking app for [appointments with a provider], full-stack, on Supabase.

Product surface:
- Public booking page: pick a service, see available slots on a calendar, book with name + email.
- Provider dashboard: set weekly availability, block dates, view upcoming bookings, cancel.
- Confirmation screen and a confirmation email (via lib/email).

Used by [a client] booking time and [a provider] managing their calendar.

Data model: [Service] (name, duration, price), [Availability] (weekday, start, end), [Booking] (service_id, start_at, end_at, customer) on Supabase.

Constraints:
- Compute open slots from availability minus existing bookings — never double-book; enforce with a uniqueness/overlap check on write.
- Timezone-aware; re-validate the slot is still free at booking time.
- Vite + React + TypeScript + Tailwind. Calendar + form. Responsive to 360px.

Runs in WebContainer — Supabase only. Build the public booking flow first, then the provider dashboard.

Best for: a scheduler where slot availability is computed against Supabase and double-booking is prevented at write time.

Advertisement

Iterating & shipping

Bolt edits with diffs, so scope each message to named files and lock the ones that are done. These prompts cover importing a Figma design, scoping and locking edits, queuing a build in steps, and getting to a Netlify deploy or a GitHub export.

19. Import a Figma design and wire it up

I imported a Figma design for [the dashboard page]. Turn it into working React and wire it to real data.

Do this:
- Build the page from the imported design with Vite + React + TypeScript + Tailwind; match the layout, spacing, and colors as closely as the design allows.
- Replace every placeholder value with real data from Supabase: [KPI cards from the events table, the recent-activity list from the activity table].
- Keep it responsive down to 360px even though the design is desktop-only — reflow the columns to stack.
- Extract repeated pieces (cards, list rows) into small components.

Used by [a founder] on desktop to check the numbers.

Don't restyle beyond what the design shows, and only edit the dashboard page and its new components. Ask me before adding any dependency the design implies but doesn't specify.

Why it works: Figma import gets the look; naming the exact data sources and the responsive rule turns a static import into a live, usable page.

20. Scope an edit to one file

Make a focused change — ONLY edit [src/components/Cart.tsx]. Do not touch any other file.

Change: [add a quantity stepper to each line item and recompute the subtotal, tax, and total as quantities change]. Keep the existing styling and props.

If this truly requires a change in another file (e.g. a type or a shared util), STOP and tell me which file and why before editing it — don't change it silently.

After the edit, show me a short summary of exactly what changed in [Cart.tsx].

Best for: a precise, token-cheap fix that uses Bolt's diff-based editing without collateral changes across the app.

21. Lock finished files and add a feature

The auth flow and the Supabase schema are done and I've locked those files in the editor. Do not modify locked files.

Add this feature without changing anything that's done:
- [A notifications dropdown in the app header]: an unread count badge, a list of recent notifications, and "mark all read".

Constraints:
- New [Notification] table (user_id, type, body, read, created_at) via a new migration — do NOT alter existing tables.
- New components only; reuse the existing data-access patterns and the current auth helper.
- Vite + React + TypeScript + Tailwind.

If the feature seems to need a change to a locked file, stop and explain the smallest unlock required before proceeding.

Why it works: pairing locked files with a "new tables and components only" rule protects stable code so Bolt adds the feature beside it, not through it.

22. Build the app in ordered steps

Build this app in ordered steps — do them one at a time and show me each before the next. Do NOT skip ahead.

App: [a habit tracker] on Vite + React + TypeScript + Tailwind, Supabase for DB and auth. Runs in WebContainer, so hosted Supabase only.

1. Create Supabase tables: [Habit] (name, cadence, color) and [Checkin] (habit_id, date). Seed sample data.
2. Build the /habits list page reading real habits, with an "Add habit" dialog (validated with Zod).
3. Build the habit detail page with a monthly heatmap of check-ins.
4. Add a "check in for today" toggle with optimistic UI; refresh after write.
5. Add a dashboard with current streaks computed in the query.

Keep the design vibe consistent: playful but clean, primary [#059669], rounded corners. After each step, list what's done and what's next, and wait for my go-ahead.

Best for: turning a big app into small, reviewable increments so mistakes surface early and each step builds on a verified one.

23. Deploy to Netlify with an env checklist

The app is ready to ship to Netlify. Get it deploy-ready — I'll click the Deploy button myself.

Do this:
- Produce a Netlify deploy checklist: the build command, the publish directory, and the full list of environment variables the deployment needs (from .env.example) with a one-line note on where each value comes from.
- Confirm every Supabase and provider key is read from env, never hardcoded — flag anything that isn't.
- Add a lightweight health check the app exposes so I can confirm the deploy is live.
- Add any Netlify config file the build needs (redirects for the SPA routes, etc.).

Don't put any real secret values in the repo. Then walk me through the exact clicks: connect Supabase, set the env vars in Netlify, and hit Deploy.

Why it works: it prepares the deploy without asking Bolt to run it in chat — a complete env-var list and config, so the built-in Netlify Deploy button just works.

24. Export to GitHub and hand off

I'm going to export this project to GitHub with the built-in GitHub button. Get the repo ready to hand off.

Do this:
- Write a clear README: what the app does, the stack (Vite + React + TypeScript + Tailwind + Supabase), how to run it locally outside Bolt, and how to deploy.
- Make sure .env.example lists every variable with names only; confirm no real secrets are committed and .gitignore excludes .env.
- Document the Supabase schema and the migrations so a new developer can recreate the database.
- Add a short "architecture" note: the main folders, where data access lives, and where auth is enforced.

Don't change app behavior — this is documentation and hygiene only. List anything that still hardcodes a value that should be an env var.

Best for: the last mile before GitHub export — a real README, a clean env template, and documented schema so anyone can pick the project up and host it.

Work through these by section and you have a planned, scaffolded, data-backed, authenticated, real-time, and deployable app — all inside the browser on WebContainer. When a step needs a sharper prompt, reach for the best Bolt.new prompts roundup, or the Supabase backend prompts when the database is the hard part. Building on a different agentic tool this week? The best Lovable prompts cover similar ground for that stack.

Frequently Asked Questions

Can Bolt.new build a whole full-stack app, not just a UI?

Yes. Bolt.new by StackBlitz runs entirely in the browser on WebContainer, a browser-based Node.js runtime. From one plain-language brief it generates the frontend and backend, installs the npm packages, runs the dev server, and lets you deploy to Netlify or export to GitHub — no local setup. The key is an app-level brief that names the product, users, core flows, data model, auth, and pages, not a single-screen request.

How do I add a database when Bolt runs in the browser?

WebContainer has no local Postgres and can't run native binaries or Docker, so use a hosted database. Name Supabase in the prompt for the Postgres database and auth, describe the tables and relationships, and use Bolt's built-in Connect Supabase action rather than asking it to connect in chat. Bolt then generates the schema, the client, and the reads and writes against your live Supabase project.

Should I ask Bolt to plan before it builds a big app?

For anything larger than a screen, yes. Ask Bolt to outline a plan or spec first, review it, then tell it to build the shell plus one core feature before adding the rest. Every message spends tokens even when a build fails, so a plan-first pass is cheaper than re-prompting a wrong build. Discussion mode is being retired on August 3, 2026, so prefer asking Bolt to plan first in the chat.

How do I stop Bolt from breaking code that already works?

Bolt uses diff-based editing, so scope each message to specific files or functions — for example, "only edit src/components/Cart.tsx." Right-click a finished file in the editor and choose Lock file so Bolt won't touch stable code. Scoping and locking save tokens and prevent collateral changes across the app.

Why do my Bolt prompts produce generic apps?

Vague briefs get generic apps. Zoom out to the app level: name the product, the users, the core flows, the data model, the auth story, and the pages in plain language. Pin the stack (Vite + React + TypeScript + Tailwind, or Next.js App Router, Supabase for DB and auth), describe the design vibe with a couple of adjectives, and state what not to build yet. Then build the shell and one feature first and iterate.

How do deploy and GitHub export work in Bolt.new?

Bolt deploys to Netlify (and Vercel) in a couple of clicks straight from the browser, and can export or sync to GitHub so you can host anywhere. Use the built-in Deploy and GitHub buttons rather than asking Bolt to run those steps in chat; ask the prompt to produce a deploy checklist and the full list of environment variables the deployment needs instead.

Does prompt quality matter more than the Bolt plan tier?

It does. Bolt pricing is token-based — Pro is $20/mo for 10M tokens, Pro 50 is $50/mo for 26M, and larger tiers scale up — and every message spends tokens even if the build fails. A tight, specific brief on a lower tier beats a vague one on a bigger tier. App-level scope, a pinned stack, a named data model, and a plan-first pass save more tokens than any upgrade.

Can Bolt use the Enhance Prompt button on my brief?

Yes. The Enhance Prompt button — the sparkle icon next to the chat box — rewrites your prompt to add detail before sending, and you can edit its suggestion. It's useful for fleshing out a short brief, but the prompts in this pack can be pasted as-is; they already name the product, stack, data model, and constraints Bolt needs.

Advertisement