Deploy a landing page

A one-page landing for a product or an idea, on the free plan.

The landing-page-starter template is a one-page landing in plain HTML and CSS: a hero, three benefits, how it works, a place for a screenshot, an FAQ, a sign-up section and a footer. There is no build step and no JavaScript; the FAQ opens and closes with the browser's own <details> element. Every word is a placeholder for yours.

In a hurry? Open the deploy link to see the template online as it ships. To put your own words in, follow the steps below.

1. Make your own copy

On the template's GitHub page, click Use this template and create a repository in your account. Public or private both work; a private repo needs the GitHub connection.

2. Deploy it

  1. Pick your copy. Open the dashboard, connect GitHub, and pick the repo you just made.
  2. Leave App size as it is. The free plan is enough.
  3. Skip variables and secrets. The page needs none.
  4. Click Deploy.

Dockhold builds the template's Dockerfile, whose one line that matters is serve -l $PORT ., and the page goes live at https://<your-app>.dockhold.app with HTTPS handled for you. Every later push to your main branch redeploys. The template's README, AGENTS.md and tests stay out of the site.

3. Put your words in

Every placeholder is in index.html. Search for "Your product" and work down the page. The <title>, the description and the link preview tags at the top are what search results and chat apps show, so change those too.

Your AI coding tool can do it for you: describe your product and ask it to fill in the page. The template's AGENTS.md tells it where everything is.

4. Choose where sign-ups go

Replace [email protected] with your own address. It appears in the FAQ, the sign-up form and the Email us instead button. With nothing else set up, both the form and the button open the visitor's email app, addressed to you.

To collect emails in a form service instead, paste its endpoint into the form's action, where the comment above the form says, and set method="post". The field is named email.

<form class="signup-form" action="https://your-form-endpoint.example" method="post">

Keep the Email us instead button next to it. It is a plain mailto: link, so visitors can still reach you if the form service is down.

Make it yours

  • Change --accent at the top of style.css. The dark colours below it follow the visitor's system setting.
  • Save a screenshot next to index.html and replace the drawing in the "See it" section with an <img>, as the comment there shows.
  • Point the Privacy and Imprint links in the footer at your own pages. A new page is another .html file in the same folder, such as privacy.html.
  • On a paid plan the page can live on your own domain too. See custom domains.

Troubleshooting

  • The sign-up button does nothing: the visitor has no email app set up. Point the form at a form service (step 4), so sign-ups work in the browser.
  • The link preview shows the old words: chat apps and social sites keep a preview for a while. Check the tags at the top of index.html were pushed, then ask the site to refresh its preview.
  • A picture 404s: use a relative path (./screenshot.png) and push the file with the page.

Next

Suggested guides
↑↓ to move ↵ to open Esc to close From the Dockhold docs