Going live
Before you deploy
Section titled “Before you deploy”| Where | |
|---|---|
Your domain in site.url |
src/content/site.json — canonical links, share links, sitemap.xml and robots.txt are built from it |
| Name, title, description | src/content/site.json |
| Contact details, opening hours, map link | src/content/site.json |
| Browser icons replaced | public/icon.svg, favicon.ico, apple-icon.png |
| Share image replaced | public/opengraph-image.png, and its description (shareImageAlt) in src/layouts/Layout.astro |
| Demo text and photos replaced | src/content/pages/, src/content/collections/, src/assets/images/ |
| Forms deliver to you | Forms |
| Style guide kept or deleted | src/pages/style-guide.astro |
npm run check and npm run build pass, npm run preview looks right |
— |
The demo content is there to be replaced: leaving “Nitip”, the London address or the sample case studies on a live site is the most common mistake.
Deploy
Section titled “Deploy”npm run build writes a complete static site to dist/: HTML files, one stylesheet, a few small scripts, optimised
images. Any host that serves files can run it — no Node.js needed on the server (unless you chose server-mode forms).
Vercel, Netlify or Cloudflare Pages (free for most sites)
Section titled “Vercel, Netlify or Cloudflare Pages (free for most sites)”- Push the project to GitHub, GitLab or Bitbucket.
- Import the repository. Astro is detected: build command
npm run build, output folderdist. - Add your form variables (
PUBLIC_FORM_ENDPOINT, …) in the host’s environment settings, then deploy. - Add your domain in the host’s Domains settings and follow the DNS instructions.
Pages are built as files (about.html) and served at clean addresses (/about). Netlify and Cloudflare Pages do that
by default; on Vercel, add a vercel.json next to package.json with { "cleanUrls": true }.
Any other host (shared hosting, S3, a VPS)
Section titled “Any other host (shared hosting, S3, a VPS)”npm run buildUpload the contents of dist/ to the web root. For clean addresses, make the server try <path>.html:
- Apache (
.htaccess):RewriteEngine OnRewriteCond %{REQUEST_FILENAME}.html -fRewriteRule ^(.+)$ $1.html [L]ErrorDocument 404 /404.html - nginx:
try_files $uri $uri.html $uri/ =404;anderror_page 404 /404.html;
Server-mode forms
Section titled “Server-mode forms”If you set PUBLIC_FORM_MODE=server, add your host’s adapter first (npx astro add vercel, netlify,
cloudflare or node). Only the form route runs on the server; every page stays static.
After it is live
Section titled “After it is live”- Check the pages. Click through every page on a phone and a laptop: menu, sliders, accordions, Load More, both forms.
- Send yourself a submission from the live site and reply to it.
- Verify the share card. Paste your URL into https://www.opengraph.xyz or a chat window and confirm the image and title.
- Tell Google. Add the site to Search Console, verify ownership and
submit
https://yourdomain.com/sitemap.xml. Bing has the same thing in Webmaster Tools. - Analytics, if you want it. Add your snippet to the
<head>insrc/layouts/Layout.astro, or use your host’s built-in analytics (Vercel Analytics, Cloudflare Web Analytics, Plausible, Fathom) — none of them need a cookie banner. - Keep the content moving. New posts, projects and roles are an entry each in a JSON file; see Editing the content, or connect a CMS (Using a headless CMS) if someone else will publish.
Performance and SEO
Section titled “Performance and SEO”The template ships with what search engines look for: static HTML, one <h1> per page, titles and descriptions per
page, canonical links, sitemap.xml, robots.txt, share cards, optimised and lazy-loaded images, and a Lighthouse
performance score of 100 on the demo. Keeping it there is mostly about images: Astro resizes them, but a 12 MB camera
file still slows the build and the first visit — export photos around 2400 px wide.