Build with AI

How to build a creative studio landing page with v0

Stop renting your studio’s portfolio by the minute. Instead, start with our production-ready codebase. We provide the architecture for a high-performance, cinematic landing page. You simply use v0 to customize the copy, swap the video assets, and tune the motion, all using plain English.

August 2026 · 46 min read · Updated September 2026

v0

$ Build a single-page site for a video studio: a full-screen muted reel behind the headline, the featured film, an awards wall, services, the team, and a contact form. No database. It posts to one route.

  • Sections generated
  • Motion and weight tuned
  • Ready for you to review
You describe the interface, v0 builds it
Start here

What a creative studio landing page actually is

One page, scrolled top to bottom, that answers a single question before a visitor decides anything else: are these the people I want making my film? It is a portfolio, a pitch, and a contact form wearing the same coat.

A studio site is not a product with users. Nobody signs up, nobody logs in, and nothing needs storing. Instead you have a stranger with a budget who arrived from an Instagram bio or a colleague’s message, who will spend a few seconds deciding whether you are serious, and who will either keep scrolling or close the tab. Everything on the page exists to earn the next screenful.

That makes the hard part unusual. There is no data model to get wrong and no permissions to leak. What is genuinely difficult is that the things making the page persuasive are the same things making it slow: a full-bleed film above the fold, high-resolution stills of your work, and motion on every section. The Web Almanac chapter behind the figure below also reports that on 76% of mobile pages the largest thing on screen is an image, which is the same slot a reel occupies here. You are asking a phone on cellular data to be cinematic. That trade-off is the whole engineering problem. It is also exactly what our codebase is built around. We’ve done the heavy lifting on the sections, the motion, and the responsive passes, so your time goes on the reel itself, and the guide below covers compressing it and giving it a still frame so it arrives fast, even on a bad connection.

The second difficulty is that you own every word. A template can hand you a services section. It cannot tell you what you sell, which three pieces of work to lead with, or what you are contractually allowed to show. Most studio sites stall because gathering the work and writing the pitch is hard enough. You shouldn’t have to fight with code, too. By starting with a complete, performance-optimized codebase and using your AI coding tool to handle the technical adjustments, you eliminate the engineering bottleneck. You spend your time where it matters: curating your best work.

The page is the theater

Here, the page is the theater. The visitor isn’t judging your web development skills. They are judging your video reel. The website’s only job is to get out of the way, load instantly, and present your work flawlessly on any screen.

The heaviest thing is the point of it

You cannot fix a studio page’s performance by removing the video, because the video is why anyone came. The work is compressing it, choosing a still frame to show first, and deciding what a phone on a bad connection gets instead.

Nothing to breach, and nowhere to hide

With no database and no logins, almost none of the usual failures apply. What is left is the two that do: a page too slow to be seen, and a contact form that quietly never reached you.

Front pages are the slow ones

45%

of mobile home pages pass all three of Google’s Core Web Vitals, against 56% for the pages behind them, from HTTP Archive’s Web Almanac, published January 2026 on July 2025 field data from real visitors.

almanac.httparchive.org · checked August 2026

What a studio page needs

The parts every studio page is built from

Almost every page in this category comes down to these six, in roughly this order, and each one is something you can ask your AI coding tool to build or rework in plain words.

01

High-impact hero section

A full-screen frame of your best work, one line that says what you make, and one button. The discipline is in what you leave out: a hero carrying three messages carries none, and a hero that takes six seconds to appear has already lost the visitor it was for.

02

Interactive video & showreel

One piece of work, properly presented, beats a grid of twelve thumbnails nobody clicks. Whether it plays from your own host or an embed changes the page’s speed, its privacy story, and how much control you have over what surrounds it.

03

Trust signals & client proof

Awards, festival laurels, client names, a number you can stand behind. This is the section that turns "nice reel" into "these people get hired", and the only rule is that everything on it has to be true.

04

Clear services & pricing ranges

Named services with a sense of scale (a day rate, a from-price, a typical project) so a visitor can work out whether talking to you is worth their time. Vagueness here reads as expensive, which filters out the people who would have said yes.

05

Team profiles & human context

Clients are buying who they will be in a room with. Faces, names, and one line each about what that person is actually for does more than another paragraph about your values.

06

Frictionless contact form

A short form, a visible confirmation when it sends, and somewhere real for the message to land. Every section above is spent getting a visitor here, which is why a form that silently fails is the most expensive bug on the page.

Build vs buy

Own the page or rent it by the minute

Most studios put their site on a hosted builder and never think about it again. What is worth noticing is what each of those builders charges you by, because it is never "a website", it is always one of the things your page is made of.

Build your own

Own the architecture outright. Download our complete codebase, and use your AI coding tool to adapt it in days, not quarters.

  • No meter on minutes of video, gigabytes served, or projects shown
  • Custom code is not a plan feature: the look can go as far as your taste does
  • Your reel plays from wherever you decide, at whatever quality you decide
  • Keep the frontend static and lightning-fast. Your contact form can post directly to a secure endpoint (like a webhook or serverless function), meaning you get the benefits of backend processing, like triggering an AI brief summarizer, without managing a database
  • Full ownership of the code: keep it forever, host it anywhere, and never pay a monthly subscription just to keep your portfolio online

Rent a hosted site builder

Squarespace · Framer · Format · Carbonmade

A hosted builder is live the same afternoon, with a designed starting point, video delivery you never think about, and a form that works on day one. What you accept is a meter and a ceiling.

  • Live in an afternoon: nothing to build, nothing to host, someone to email when it breaks
  • Video hosting handled for you, though on two of these four it is rationed in minutes: 30 minutes on Squarespace’s entry plan, and none at all on Format’s
  • Framer charges again for anyone else who edits the site: $20 a month per extra editor
  • Carbonmade counts projects instead: 8 on the entry plan, 50 on the next
  • Writing your own code is a plan feature on Squarespace, not a given: a code block and site-wide code injection start on the second tier
  • A custom domain is a paid upgrade on Framer, and comes with the annual plan on Squarespace
  • The bill never stops, and the page is not yours to take with you
SquarespaceNo price quoted - the pricing page would not show us its figures. Video storage is the published ladder: 30 minutes, then 5 hours, 50 hours, unlimited

The most likely place a studio ends up, and the one whose limits are worth reading before you commit a reel to it. Verbatim from the help centre, by plan: “30 minutes of video storage”, “5 hours of video storage”, “50 hours of video storage”, “Unlimited video storage”. Custom code is tiered too: “Code block - JavaScript and iframe code” and “Code injection - site-wide and per-page” start on the second plan, not the first. A free custom domain for one year comes with an annual plan.

support.squarespace.com · checked August 2026

Framer$0, then $10/mo (Basic) or $30/mo (Pro) with yearly billing - plus $20/mo per extra editor

The closest of the four to what this template does, since motion is its whole pitch. Two meters, though: the free plan gives you a Framer domain and 1 GB of bandwidth, and a custom domain needs a paid plan, bandwidth being an odd thing to ration on a site whose main asset is a film. The second meter is people: “Additional editors are $20 / month”, or $10 for someone who only updates content. The prices above are what the page shows with yearly billing selected. It does not display the month-to-month figures beside them, so we are not quoting a range we did not read.

framer.com · checked August 2026

Format$10-$15/mo billed annually, or $14-$36/mo month to month - hosted video runs 0, then 15, then 120 minutes

A portfolio platform rather than a site builder, and the clearest example in this set of a plan gate landing exactly where a video studio needs it: the entry plan hosts no video at all, Pro allows 15 minutes, Pro Plus 120. Note the billing spread, the widest here: Pro Plus is $36 month to month against $15 on an annual plan. Entry also excludes custom fonts and a free custom domain. Branded email is $100/year on top of any plan.

format.com · checked August 2026

Carbonmade$9.99/mo (8 projects), $14.99/mo (50 projects), $24.99/mo (unlimited) - monthly, or about 20% off annually

The fourth meter, and the one that reads oddest for a studio: how many pieces of work you are allowed to publish. Eight projects is a real ceiling for anyone with a decade of credits, so the plan you land on is decided by your archive rather than your traffic. All plans include a free carbonmade.com address and let you point your own domain at it.

carbonmade.com · checked August 2026

Rule of thumb: if the site is a formality (somewhere to send people who already know you, updated twice a year) rent one and spend the time on the work instead. If your site is how you get hired, if the reel is long or in more than one cut, or if you can already name the thing you want that a builder will not let you do, that is the case for owning it. The tell is whether you have ever described your own site as "fine".

No dev needed

Why build with v0

This page has no database, no logins, and no permissions to get wrong, so almost none of the hidden work that stalls a solo build applies to it. What is left is craft, and craft is not obviously less work: the same section rebuilt until the spacing stops looking accidental, a video that has to seem expensive and weigh almost nothing, and three passes: narrow phone to wide monitor, weight, and whether any of it is usable for somebody who cannot see it the way you do.

That ordering, which costs extra round trips on most builds, costs nothing here: this page is interface all the way down, and the only server-side thing in it is one route carrying a contact form message.

The build loop
1

Sketch

Describe the section or component you want.

2

Preview

See it rendered live, at whatever width you like.

3

Adjust

Select any part of it and change it directly, without writing a prompt.

Iterate

Prompt again for the next section.

Loop back to Describe

The order matters here more than with a full-app builder: v0 gets you a finished-looking interface fast, and the data underneath doesn’t show up until you ask for it and give it somewhere to live.

Three passesthat decide it

Responsive, weight, and accessibility are the three passes that decide this page, and every one of them is interface work, which is the half of a build v0 is actually shaped for. There is no data model here waiting on a second step.

Live preview is the feedback loop

Every prompt updates the working interface right there in the chat, so you see the actual screen changing instead of imagining it from a description.

Design mode edits without a prompt

Select an element in the live preview, adjust its style directly or type a plain-language instruction, and v0 applies the change back to the real source code as a new version.

What it costs

Pay a designer, or do it with AI

A page with no backend has almost nothing to run. The whole cost is who builds it. Pay someone to design and build it, or describe what you want to an AI coding tool and do it yourself.

Hire a designer-developer

Custom build, from scratch
Designer-developer
~$6.5k-$26k
Form endpoint
Free tier · from $12.50/mo*
Hosting
$0 on a free tier
Build time
~130 hrs of their work

~$6.5k-$26k to build, then close to nothing to run

That band is our ~130-hour estimate at what the work actually goes for: freelance web developers in the United States run about $40/hr at junior level to $150/hr and up at senior, and agencies add another 20% to 40% for overhead and project management. Call it $50/hr at the bottom and around $200/hr for an agency. Note what you are buying at that price, though. A developer alone gives you a built page and no art direction. The reason a studio site costs what it costs is usually the person deciding how it should feel.

Build it with v0

From scratch, with v0
v0
$0 ($5/mo of credits) to $30+/month (Plus)
Hosting (Vercel)
Free on Vercel’s Hobby plan
Your time
~63 hrs

Free to try the idea, ~$30+/month on Plus while you build a real one, then whichever plan you keep using

v0 bills in dollars of credit rather than a flat fee, so cost tracks usage: importing the pre-built template can fit inside Free’s $5 a month, while a from-scratch build runs into Free’s 7-messages-a-day cap quickly and usually needs Plus, at $30 per user per month with no annual discount shown. Because v0 generates the interface and the backend as separate steps rather than one pass, expect more prompts to reach the same result than a tool that writes both together.

* Two honest ways to make a contact form reach you, and both start free. A hosted form endpoint is the no-server route: Basin’s free tier covers one endpoint and 50 submissions a month with basic spam filtering, and its own page notes that filtered spam does not count against that allowance. Paid plans start at $12.50/mo billed yearly for 250 submissions. If you would rather own the whole path, one small function of your own plus an email service does it. Resend sends 3,000 emails a month free, capped at 100 a day. A studio fielding a few inquiries a week fits inside either free tier indefinitely.

Either way the page is yours, and nothing about it is metered: not the length of your reel, not the number of projects on it, not how many people are allowed to edit it. The difference is who does the work: pay someone up front, or describe what you want and build it yourself.

Prices and rates from usebasin.com, resend.com, developex.com, v0.app, v0.app and vercel.com, checked August 2026.

Plan first

Decide before you build

Six decisions, none of them technical, and every one of them cheaper to make now than to unpick from a finished page. This is where studio sites actually stall.

01

Your 10-second elevator pitch

Write the line that goes under the hero before you build the hero. A sentence a stranger could repeat to a colleague, not a tagline. If you cannot get it under about twelve words, the problem is the positioning rather than the copywriting, and no amount of motion will cover it.

02

Portfolio selection & NDA clearance

Pick the two or three pieces that represent what you want more of, not what you are proudest of. Then check the paperwork: unreleased campaigns, client NDAs, and music licences all decide what may sit on a public page, and finding out after launch is the expensive order to do it in.

03

Video hosting & page speed budget

A short muted loop you host yourself, or an embed from a video platform. Self-hosting gives you control of the quality and no third-party scripts. An embed gives you adaptive quality and someone else’s bandwidth bill. Either way, decide the budget in megabytes now, because that number quietly sets how fast the page can ever be.

04

Single call-to-action & lead routing

An inquiry form, a booking link, or a plain email address. Pick one. A page offering three ways to get in touch gets fewer messages than a page offering one. Then decide where a submission goes and who is responsible for answering it, since an unread inbox is the same as no form.

05

Verifiable social proof

Awards, laurels, client logos, view counts. Decide the standard before you fill the section: a logo you may only show with permission, a festival you were selected for rather than won, a number from one unusually good campaign. A studio page trades entirely on credibility, and one claim a visitor can disprove costs more than the whole section earns.

06

Mobile playback & motion rules

Motion is why this kind of page works and also why some people cannot use it. Decide up front what happens for a visitor whose system says they prefer reduced motion. The content should still arrive in the same order, just without the movement. Settle whether the hero video is allowed to autoplay on a phone at all.

Approaches

Comparing your build options

Where you begin decides how much of this becomes plumbing. The same page three ways: by hand, from a theme that already decided your sections, or generated section by section in v0.

~130 hrsBuilding by hand

The sections go up in a week. What takes the rest of the time is everything after that: getting a video hero to arrive fast enough that nobody leaves before it plays, making reveal animations feel deliberate rather than twitchy, holding all of it together from a narrow phone to a very wide monitor, and keeping a dark, animated page readable for someone who cannot see it the way you do.

~100 hrsPremium theme or UI kit

This is the one build in our catalogue where a bought theme genuinely gets you a long way, because this build has no backend to be missing. What it cannot hand over is the look, and a studio selling taste has a specific problem with a theme other studios also bought. You still own the reel, the motion, the speed, and every word, and you spend some of the time you saved fighting a structure that assumed different sections.

~63 hrsBuilt with v0

On most projects v0 generates the interface first and the backend as a separate ask, which costs extra round trips. Here no backend exists to hand off to (one route for the contact form is the whole of it) so the shape that usually adds friction is the shape this build already has.

Interactive calculator

Estimate your exact build timeframe

Untick the sections you do not need and the three passes at the bottom stay ticked for a reason. They are where a page like this is won. The total is our own estimate, not a quote.

What your landing page needs

Your estimate

63 hrs

start to finish

Based on the 6 of 6 features you’ve selected, plus ~4h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

v0 runs in the browser, so nothing downloads and there is no terminal. Sign up, pick a plan, connect GitHub, and skip the database integration entirely. That is not a shortcut you will pay for later: there is nothing on this page to store.

1

v0 account

Cost: Free

Sign in with a GitHub, Google, or email account and you land in a chat where you describe the interface you want. There’s nothing to install.

Sign up for v0
2

v0 subscription

Cost: Free ($5/month of credits), then $30/month (Plus)

Free includes $5 of credits a month, capped at 7 messages a day, which is fine for trying a few screens and thin for a real build. Plus is $30 per user per month, billed monthly only (v0’s pricing page shows no annual option), and it’s the realistic floor once you’re iterating past a handful of screens.

Compare v0 plans
Optional
3

GitHub connection

Cost: Free

Not needed to build anything, since v0 keeps its own history of every change. Connect a repository from the chat’s Git panel and v0 also commits every code-changing message to its own branch, ready to merge as a pull request. That is the step that turns the chat into a project other tools, and other people, can use.

Connect v0 to GitHub
4

Somewhere for the form to go

Cost: Free to start

The one service this build connects to. A hosted form endpoint is the no-server route: you point the form at a URL and they email you each submission, spam filtering included. Basin’s free tier covers one endpoint and 50 submissions a month. If you would rather own the whole path, one small serverless function plus an email service does it instead, and Resend sends 3,000 emails a month free. Either way nothing needs setting up before step 01. You need it by the step that builds the form.

Compare Basin’s plans

The database integration v0 offers is the one thing this build does not want. What replaces it is a destination for the contact form, and that is a URL you paste in at step 05.

Step by step

Build your studio page, one prompt at a time

One component or section per prompt, checked in the live preview before the next. Two habits are worth keeping: use Design mode for anything you could point at instead of describe, and keep this whole page to one chat so its version history stays a line you can walk back along.

  1. 01

    Settle the palette on an empty page

    v0 will happily generate a finished-looking section in the first prompt, which is the problem: whatever colours it picks become the page. Spend the first prompt on the theme and nothing else.

    PromptSet up the project
    This is a single-page marketing site for a creative video studio. It has no backend and no data (no database integration, no authentication, nothing stored) so please do not add or suggest one. Start with the theme and nothing else: define the colours once, in a single place I can edit, as a near-black ground, a light foreground, one muted grey for secondary text, and two accents I will name later. Headings take a display face, body copy something ordinary. Then generate an empty page carrying only the fixed nav, so what I am approving is a palette rather than a section.

    An empty styled page is one prompt. Recolouring seven finished sections is seven.

  2. 02

    The whole page, plain, in one prompt

    Get every section stacked and unstyled, then scroll it. v0 is fast enough at this that it is tempting to skip straight to the beautiful version, but reordering a plain page is a sentence and reordering a finished one is an afternoon.

    PromptLay out the page
    Build the page as full-width stacked sections in this order: hero, featured work, awards, about, services, team, contact, footer. Give each an id so the nav links scroll to it, and collapse the nav into a hamburger menu on small screens. Keep it deliberately plain: real headings, placeholder paragraphs, grey blocks where images and video go. I want to scroll the whole thing in the preview and settle the order before anything is styled.

    Ask for it plain and mean it. v0 defaults to finished-looking, which hides the ordering problem you are trying to see.

  3. 03

    The hero, poster frame included

    The single most-viewed part of the page. Ask for the poster image and the reduced-motion path in this prompt rather than a later one, because both change how the markup is built.

    PromptBuild the hero
    Build the hero, and start from the case people forget: if a visitor’s system asks for reduced motion, the video must not play at all. They get a still frame, and every other element stays exactly where it was. With that settled, the ordinary case is a full-screen background video, muted and looping and autoplaying, sitting under a dark overlay so text on top stays legible whatever frame is showing, with that same still displayed until playback can begin. Above it: a headline, a supporting line, one button. The fixed nav starts transparent and takes a solid background after about 50px of scroll. Use a placeholder video and tell me where mine goes.

    Once it exists, use Design mode for the type sizing rather than prompting for it. Nudging a heading is faster to do than to describe.

  4. 04

    Four sections, one reveal animation

    Work, awards, services and team share a shape, so build them together and give them one shared motion component. Four separate animations is how a page starts feeling restless.

    PromptBuild the work and proof sections
    Four more sections, in page order. Featured work carries one large video, with the project name, the client, and a short write-up set beside it. Structure it so swapping an embed for a file of my own is a one-line change rather than a rebuild. The awards wall is a responsive grid of laurels, and each award’s name and year has to be real text rather than pixels inside an image. Every service gets a card: a name, a sentence, room for a from-price. The team is a grid of photographs, each with a name, a role, and a single line. Then one reveal animation, written once as a shared component (a brief fade and rise as something enters the viewport, switched off completely under reduced motion) applied to all four rather than reinvented per section.

    Keep this in the same chat as everything above, so restoring an earlier version does not mean losing sections built after it.

  5. 05

    One route, which is this build’s entire backend

    The moment v0 usually hands off to a database, and here it does not need to. One route that forwards the message on is the whole of it, the only server-side file this page will ever contain, and the reason the finished thing is still a folder of files plus one function.

    PromptBuild the form and connect it
    Build the contact form (name, email, what they want made, a message) validated before it submits, with inline errors naming the actual problem. Then add exactly one server route that receives a submission and forwards it through an email service, reading the key from an environment variable. That route is the only server-side file this project should ever contain, so keep it to one and tell me if you are tempted to add a second. Treat a failed send as carefully as a successful one, and put a confirmation on the page that stays long enough to be read. Give the form a hidden honeypot field and drop anything that fills it. No database, and no key anywhere the browser can download it.

    One route is all this page needs. Keep it to one and the site stays a folder of files plus a single function, which is about the cheapest thing there is to host.

  6. 06
    Destination

    Three passes, a pull request, and a domain

    The three passes that decide whether the page works away from your desk, then a pull request and a deploy.

    PromptTune it
    Three passes before this goes anywhere, and I want to know what changed in each rather than a silent commit. First, contrast and keyboard: on a dark palette, check every text colour against whatever sits behind it, keep focus rings visible rather than styled away, walk the tab order, and confirm the reduced-motion version is missing nothing. Second, weight: report what each image and video actually costs in kilobytes, re-encode the stills to a modern format at the size they are displayed rather than the size they were exported, defer everything under the fold, leave the hero as the only thing loading eagerly, and tell me outright if the video is simply too big instead of engineering around it. Third, the link: title, description, and an Open Graph image, so a URL pasted into a chat renders as a card rather than a bare address.
    PromptPublish it
    Take this live. Walk me through publishing to Vercel, or opening a pull request from this chat’s branch and merging it if I would rather review the diff first. Then tell me what to check on the deployed URL rather than in the preview, starting with opening it on a phone with wi-fi off and timing the hero. Finish with what to improve next, in priority order.

    Whether merging deploys depends on how the linked Vercel project is configured, so check that once rather than assuming it.

Security & privacy

No databases to leak, no servers to hack

Static studio sites have no databases, logins, or servers to hack. Here is how your site stays ultra-secure and how to protect sensitive client data.

Most of what usually goes wrong cannot

No accounts means no password handling, no session hijacking, and no privilege escalation. No database means nothing to inject into and no access rules to get wrong. No server of your own means nothing to patch. Genuinely, structurally, this build starts safer than anything else in the catalogue.

Everything in the bundle is public

This is the one people get wrong. A static site ships every file it is made of to the visitor, so anything you paste into the project is readable by anyone who opens the page source: an API key, a private analytics token, the unlisted link to a client’s unreleased cut. "There is no backend, so nothing is secret" is the accurate way to think about it.

The form is the only thing that accepts input

One form, and it is the entire input surface of the page. Validate on the way in, keep the fields to what you will actually read, and remember that whatever the visitor types travels to whoever is receiving it, which is worth knowing before you add a field asking for a budget.

Spam is not a maybe

A public form on a public page finds bots within days, not months. A honeypot field that humans never see, or your provider’s own filtering, or a challenge on submit. Pick one before the address is indexed rather than after the first hundred messages about search-engine optimisation.

Whoever receives the form now holds client data

Names, email addresses, and a description of a project somebody has not announced yet. If a hosted form service is receiving that, it is processing personal data on your behalf, and you are the one answerable for it. Check where it is stored, how long for, and whether you can delete it on request. A 30-day retention window is a feature, not an oversight.

An embed is somebody else’s code on your page

A video embed from a third-party platform loads their scripts and can set their cookies against your visitors. That is usually a fair trade for adaptive playback, but it is the reason a page with no backend can still need a cookie notice, and the reason a self-hosted loop is the quieter option where it will do.

HTTPS, then two headers worth having

Every host in the next section gives you a certificate free, so there is no excuse for a page collecting inquiries over plain HTTP. Beyond that, a content security policy that names the video platform you actually embed, and a referrer policy, are twenty minutes that stop your page being framed or quietly repurposed.

No backend still means a supply chain

The page is static once built, but building it pulls in packages, and a compromised one ends up in the bundle you publish. Keep dependencies current and check what a new animation library brings with it. This is the one ongoing maintenance job a page like this actually has.

PromptAudit what you actually published
Read this project the way a stranger reading its published files would. List every value that ends up in the built bundle and should not be public: keys, tokens, private URLs, anything left in a comment. Then list every request the finished page makes to a third party, what each one sends, and any cookie it sets. Finally, tell me what the contact form does with a submission, where that submission ends up, and what currently stops a bot filling it in a thousand times.

Run this before you publish. The whole security surface of a page like this is what you shipped and what you embedded, so an audit that reads both covers nearly all of it.

The one rule that matters: a static site has no secrets: if a value is in the project, treat it as published. Anything that must stay private belongs behind a function on a server, not in the page.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • One component or section per prompt, checked in the live preview before the next one
  • Adding the one route the contact form needs, and stopping there
  • Using Design mode to select an element and adjust it directly, instead of describing it in words
  • Keeping the whole page to one chat, so its version history stays a straight line you can follow
  • Opening a pull request once the page is ready, instead of piling unrelated work onto one branch

Slows the build

  • Asking for the whole page before any single section has been checked
  • Adding a database integration because it is offered, on a page with nothing to store
  • Describing a visual change in words that Design mode could apply directly
  • Letting one chat run for weeks, so restoring an old version undoes everything built after it too
  • Merging a pull request without reading the diff v0 committed
Getting code out of the chat

Connecting GitHub (Optional)

Every change in v0 is saved automatically without any technical setup. You only need to link GitHub if you want a private copy under your own control or plan to hand the codebase over to external developers.

Every message is a version

Each time a message changes your code, v0 saves it as a new version. Restoring an older one adds it back as the newest version instead of branching, so the history stays one straight line.

Versions, v0 docs

Undo from the chat itself

Scroll back through the conversation and click the revert arrow on any earlier reply, or open the version number in the top right to jump straight to a specific one.

Connecting GitHub creates a real repository

From the chat’s Git panel, connect an existing repository or create one. v0 never writes straight to your main branch: every code-changing message is committed to its own working branch first.

GitHub integration, v0 docs

A pull request is how it gets merged

When you’re ready, publish and open a pull request from that working branch into your base branch, review it like any other, and merge it. Starting a new chat picks up a fresh branch for the next round of changes.

This can also be v0’s deploy path

If the branch your pull requests merge into is also the linked Vercel project’s production branch, merging one triggers a production deployment. If it isn’t, the merge just follows whatever branch behavior that Vercel project is already configured with.

GitHub integration, v0 docs
Going live

Choosing the right hosting for a video-led page

The finished site is a folder of files, so it runs on almost any host, free tiers included. The two things worth comparing here are how much traffic a free tier really allows and how close the files sit to your visitors, because the page is mostly video.

HostBest forNotesFree tier
VercelOne-click deploysConnect the project and it publishes itself. A standard Vite build, so nothing to configure. Read the plan terms before you settle: the free Hobby tier is for personal, non-commercial projects, and a studio page selling services is a commercial one, so it belongs on Pro from $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitConnect the repository or drag the built folder in. Handy here for a second reason: it can receive form submissions itself, which is one fewer service to wire up if your volume is small.Free tier
Cloudflare PagesCheapest at scaleServes the files from wherever is nearest the visitor, which matters more on this build than on most. The heaviest thing on the page is a video, and how far it has to travel is most of how long it takes to start.Generous free tier
GitHub PagesFree Git-based hostingPublishes straight from your repository, with one small tweak so in-page links behave. Unusually, this is the one build in our catalogue where the free-only-from-a-public-repo catch costs you nothing, because no keys in the project can be exposed, though the unreleased client work in it may be its own reason to keep the repository private.Free from a public repo only
Firebase HostingSimple setup, Google stackOne setup, after which publishing is a single command from your machine. Mainly worth choosing if the rest of your tooling already sits in Google’s stack. Nothing about this page needs anything it offers.Free Spark tier
AWS Amplify HostingTeams already on AWSConnect the project in the AWS console. One routing setting makes in-page links work. Worth it mainly if your video already sits in the same account.Free tier (build + hosting)
SurgePublish from the terminalOne command publishes the built folder, with no repository needed. Genuinely useful for putting a work-in-progress in front of a client this afternoon.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersConnect the project and it builds and serves the site for you. Fine, and rarely the reason to choose it unless you are already there.Free - 3 static sites, 1 GB/mo transfer

Any of these will serve the page. Two things to check rather than assume: whether the free tier permits commercial use, and what its bandwidth allowance is. A hero video changes that arithmetic completely, and a page that goes mildly viral is exactly when you find out. Read the plan terms for the host you pick, not just the headline price.

The failure to expect on launch day is a beautiful page that takes eight seconds to appear, not a broken build. Your video was fast on your laptop because it came off your own disk. Before you publish: check the file size of the hero video and get it into single-digit megabytes, give it a still frame to show while it loads, then open the published URL on an actual phone on cellular data with the wi-fi turned off. That last step is the one people skip, and it is the only one that tells you what a visitor gets.

The two off-site pieces

No database here, but two things do live elsewhere

Nothing about this page needs a backend. What it does need is somewhere for a form submission to go, and a decision about where the film plays from.

ServiceBest forNotesFree tier
Hosted form endpointGetting the form to reach youPoint the form at a URL the provider gives you and they email you each submission, with spam filtering included. No server, no key in the bundle. Basin’s free tier covers one endpoint and 50 submissions a month, which outlasts most studios’ inquiry volume.Free - 1 endpoint, 50 submissions/mo
Your own function + an email serviceOwning the whole pathOne serverless function on the host above, plus an email API, and the submission never touches a third-party form service. More control, one more thing to maintain. Resend’s free tier sends 3,000 emails a month, capped at 100 a day.Free - 3,000 emails/mo
The video itselfThe reelEither a compressed file served by your host with the rest of the page, or an embed from a video platform. The file is quieter and fully yours. The embed gives you adaptive quality on bad connections and brings a third party’s scripts with it. Both are free at this scale, and the choice is about control rather than money.$0 either way

Neither of the first two stores anything you would call a database. They move a message from your page to your inbox, and that is the whole of this build’s server side.

AI workflows

Add AI capabilities in one simple step

Securely route your AI API keys through a lightweight serverless function. Use simple prompts to automatically summarize incoming client inquiries into 10-second briefs.

One function first, because there is no server

Everything else here needs somewhere to keep an API key, and a static page is the one shape that has nowhere. One serverless function on the host you are already using is the whole backend this page will ever need.

PromptOne function first, because there is no server
Add a single serverless function to this project (the smallest one my host supports) that reads an AI provider key from an environment variable, accepts a short JSON request, calls the model, and returns the text. Do not let the key reach the browser bundle, keep the function to one file, and show me how to set that environment variable on my host rather than in the repository.

A brief you can read in ten seconds

Inquiries arrive as a paragraph of free text. Turned into a few labelled lines (what they want made, roughly when, roughly what budget, whether they named a reference) you can triage a week of messages in a minute instead of reading each one twice.

PromptA brief you can read in ten seconds
When the contact form is submitted, send the message text through the ai function and have it return a short structured summary: the deliverable, the timeline, any budget mentioned, and any references named, with "not stated" where the message does not say. Include that summary above the original message in whatever reaches my inbox, and never in place of it.

Alt text and captions for everything you show

A page built from images and film is the hardest kind to describe and the most worth describing, for the visitor using a screen reader and for the search engine reading the same text. Doing it by hand is why it never gets done.

PromptAlt text and captions for everything you show
Go through every image and video on the page and draft alt text for each one (what is actually in the frame, in a sentence, not the file name) plus a caption track for any video that has speech. Put them in a single list I can edit before you write any of it into the code, since I know what the work is and you are guessing.

Headline variants you can actually test

The line under the hero does more work than anything else on the page, and it is usually the first thing anyone writes and the last thing anyone revisits. Five rewrites in your own voice, judged side by side, is a better use of an afternoon than another pass on the spacing.

PromptHeadline variants you can actually test
Read the whole page, then write five alternative versions of the hero headline and its supporting line: same claim, different emphasis: one leading on the craft, one on the outcome for the client, one on the kind of work we want more of, one shorter than everything else, one that names our niche outright. Keep each under twelve words and match the voice already on the page.

v0 doesn’t ship its own model for these prompts, so you bring an API key for whichever provider you want, and v0 writes the route that calls it. Start with a cheap model while you’re still iterating on the prompt itself, then swap in a stronger one for the version that ships, and keep every AI feature behind that one route so there’s only one key to rotate.

Ready-made option

Get a head start with our template

The guide above builds this page from nothing. Prefer to start from a finished one? Our template ships every section already built and animated, so your time goes on your work and your words.

Creative Studio Landing Page

The exact landing page this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A one-page landing for AI video tools and creative studios, built to explain what you do and turn visitors into clients. A cinematic hero, your work and awards, services, a team grid, and a contact form flow in a single scroll - with strong calls to action and nothing to set up on the backend.

React 18ViteTypeScriptTailwind CSSFramer Motion
Out of the box

The key benefits of starting with a template

The slow parts (the motion, the responsive passes, the dark theme that stays readable) are already done and tested on real devices. What is left is the part only you can do.

Building the page from scratch

~63 hrs

Opening the template, already built

~1 hr

~62 hrs of building you skip

These measure different things deliberately: the first is building the page, the second is opening and running one that already exists. Replacing the demo content is time you spend either way, so it is counted on neither side, and on this template that job is bigger than most. The hero video points at our own storage bucket, six service images come from a stock library, the footer carries a placeholder address, and the contact form does not send yet. All four have to be dealt with before launch, and the guide above says how.

A page that already moves

Seven sections in one scroll (hero, featured work, awards, about, services, team, contact) with scroll-reveal animation and a glass-card treatment already tuned, rather than a blank file and a plan to tune them later.

Nothing at all to configure

No database, no keys, no environment file, no accounts to create. Install the dependencies, start it, and the page is running, which is genuinely rare and is the whole reason this template is quick to get live.

Tested on real devices

It holds together from a narrow phone to a wide monitor, checked on hardware rather than by dragging a browser window narrow. That is a week of fiddly work you inherit finished.

Clean code that is easy to extend

React and TypeScript with a full component library already installed and mostly unused, deliberately, so the next section you ask your AI coding tool for has parts to build from instead of needing new ones.

Customer story

From founders who build on our templates

As an agency we live or die by clean handoffs. The code is structured well enough that we restyle, wire in the client’s data, and ship - no untangling someone else’s mess.
Matt GrahamMatt GrahamFounder & CEO, RapidDev
Got questions?

Common questions

No, and this is the thing to know first. A form on a page with no backend has nowhere to post to until you give it somewhere, so wiring an endpoint is a real step in the build rather than a detail. Our template ships the form with its submit stubbed out (it waits a second, clears the fields, and sends nothing) and as shipped it shows no confirmation either, because the component that displays the "message sent" notice is never mounted. Both are quick fixes and the guide above covers them, but nobody should discover them from a visitor asking why they never heard back.

None of them. There is no data to store, nobody to sign in, and no environment variables to set on your host, which is why this page can go live on a free tier in an afternoon. The only service you connect is whatever receives your contact form, and both of the options above start free.

Aim for single-digit megabytes, muted, a few seconds long, and looping. It is wallpaper that moves, not a film. Give it a still frame to display while it loads so the page is never blank. Serving the file from your own host keeps it fully yours and loads no third-party code. An embed from a video platform gives you adaptive quality on a poor connection and brings their scripts with it. The featured film further down the page is the one that belongs on a video platform, since that is the one people actually watch.

It can, and the mechanism is worth understanding rather than fearing. Google measures how long the biggest thing on screen takes to appear, and on this page that is your hero. The figure at the top of this guide is the shape of the problem: fewer than half of mobile home pages currently pass all three of those measurements. The fix is not removing the video but a compressed file, a still frame shown immediately, and nothing else competing for the first moment of the page.

Every operating system lets a visitor say they prefer reduced motion, usually because movement makes them ill, and a browser passes that preference to your page. The right response is that all the content still arrives in the same order and the same place. It simply appears rather than sliding in, and the hero shows its still frame instead of playing. That is a handful of lines, and it is the difference between a page somebody can use and one they have to leave.

It can be, and it takes deliberate work. Dark themes fail contrast in a specific way: mid-grey text on near-black looks refined on a calibrated monitor and disappears on a phone in daylight. Check the contrast of every text colour, keep focus outlines visible rather than styling them away, caption anything with speech, and make sure the whole page can be reached with a keyboard in a sensible order. It is one of the ticked passes in the estimator above for exactly this reason.

Close to nothing. Static hosting is free on several of the hosts listed above, subject to their plan terms, and whatever receives your contact form has a free tier that comfortably covers a few inquiries a week. If you add one of the AI features, you pay the model provider for the text you actually send it. There is no per-project, per-minute, or per-editor charge anywhere, because there is no platform in the middle to charge you.

Yes, and this is the ordinary reason a one-pager grows up. Adding routes and a second page is a described change rather than a rebuild, and the same is true of a blog, a case-study page per project, or a version of the site in another language. Worth knowing before you start: a single page and a multi-page site want their navigation built differently, so if you already know a case-study page is coming, say so up front.

Yes, on every host above, with a free certificate in a few clicks. Do it before the address goes anywhere (into your Instagram bio, your email signature, a pitch deck) because moving people from a host’s subdomain to your own domain later means chasing every place you printed the old one.

No, and this is the sharpest contrast with renting the page. What you end up with is an ordinary folder of files built from ordinary code: move it between hosts in an afternoon, hand it to a developer, keep it through the next rebrand. Nothing about it depends on a platform staying in business or keeping its current pricing.

No. You describe the section you want in the chat and v0 generates the React and Next.js code behind it. Sign up, pick a plan, and decide where the contact form should send. The setup section above walks through each one.

Both, though not at the same time, and on this build the question barely arises. v0 generates the interface first and treats a backend as a separate thing you ask for. Here the only server-side code needed is one route carrying a contact form message onward.

Free plan credits reset monthly, and the 7-messages-a-day cap resets every day. If you hit either limit mid-build, what you’ve already built stays put. You wait for the reset or move up to Plus to keep going right away.

References

Sources checked August 2026
  1. 01Performance chapter (Core Web Vitals by page type), Web Almanac 2025, HTTP Archive. almanac.httparchive.org (published January 2026)
  2. 02Choosing the right plan (video storage, code access), Squarespace Help Center. support.squarespace.com
  3. 03Pricing plans and features, Squarespace. squarespace.com
  4. 04Pricing (site plans, editor seats), Framer. framer.com
  5. 05Plans and pricing (hosted video by plan), Format. format.com
  6. 06Pricing (projects by plan), Carbonmade. carbonmade.com
  7. 07Pricing (free tier, submission limits), Basin. usebasin.com
  8. 08Pricing (free tier, sending limits), Resend. resend.com
  9. 09Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  10. 10v0 homepage. v0.app
  11. 11Pricing (Plus, Business), v0. v0.app
  12. 12Pricing details (Free tier, credit rollover), v0 docs. v0.app
  13. 13Databases (connecting Supabase and others), v0 docs. v0.app
  14. 14Full-stack apps, v0 docs. v0.app
  15. 15GitHub integration, v0 docs. v0.app
  16. 16Deployments, v0 docs. v0.app
  17. 17Design mode, v0 docs. v0.app
  18. 18Versions, v0 docs. v0.app
  19. 19Pricing (Hobby plan), Vercel. vercel.com

This guide is general information. Third-party prices, plan limits, and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Where a vendor’s own page would not show us its prices we quote no figure for it rather than borrowing one from elsewhere, and say so in the comparison. Build hours and the cost estimates derived from them are our own estimates, not quotes. v0 is a product of Vercel. Verify current capabilities and pricing before relying on them.