Skip to content
Sign inJoin waitlist

Going live — Tustel Next.js

Before the site goes public, replace the demo’s name, details, figures and photos, and point the contact form at you. Then deploy it to any host that runs Next.js, and check it once more on the live address.

Where
Your domain in site.url (until you change it, it is the demo’s address) src/content/site.ts. Share links, sitemap.xml and robots.txt are built from it.
Name, title, description site in src/content/site.ts
Your own name instead of Alex Carter site.owner and footer.note in src/content/site.ts, the heroes in src/content/pages/home.ts and about.ts, the page descriptions (Editing the content)
Contact details (hello@example.com, the phone number and the location are placeholders) contact in src/content/site.ts
Your booking link (“Book a call” opens https://cal.com/) bookCall in src/content/site.ts
Social links (they open the networks’ home pages) socials in src/content/site.ts
Logo replaced src/design-system/components/brand/Logo.tsx (Making it look like your brand)
Browser icons replaced src/app/icon.svg, src/app/apple-icon.png
Share image replaced and described public/opengraph-image.png, its description in src/lib/meta.ts
Demo text, photos and client logos replaced src/content/pages/, src/content/collections/, public/images/
Your own figures: years, projects, clients, awards facts in src/content/site.ts
Testimonials from your own clients src/content/collections/testimonials.ts
Page titles and descriptions written for your work The meta of each file in src/content/pages/
The contact form delivers to you Forms
Style guide kept or deleted src/app/style-guide/
npm run build passes —

The demo content is there to be replaced. Leaving “Alex Carter”, the sample e-mail, the sample figures, the testimonials or the sample client logos on a live site is the most common mistake.

The site is a normal Next.js app: it builds to pre-rendered pages and runs on Node.js, which also handles the contact form, so any host that supports Next.js works.

Vercel (made by the Next.js team, free for personal sites)

Section titled “Vercel (made by the Next.js team, free for personal sites)”
  1. Push the project to GitHub, GitLab or Bitbucket.
  2. https://vercel.com/new → import the repository → Deploy. The framework, build command and output are detected.
  3. Add your form variables under Settings → Environment Variables, then redeploy.
  4. Settings → Domains → add your domain and follow the DNS instructions.

Import the repository, keep the detected settings (npm run build), add the environment variables, deploy.

Cloudflare runs Next.js through the OpenNext adapter (@opennextjs/cloudflare); follow Cloudflare’s Next.js guide to build and deploy with Wrangler.

Terminal window
npm ci
npm run build
npm start # listens on port 3000

Run it under a process manager (pm2, systemd) behind nginx or Caddy for TLS, or in a container: an LTS Node image such as node:24-alpine, copy the project, build, CMD ["npm", "start"].

  1. Check the pages. Click through every page on a phone and a laptop:
    • the menu, the phone menu, the header over the Home photo and the one that comes back as you scroll up;
    • the Catalog / List switch, the services and the testimonials on Home;
    • Portfolio and Blog loading more as you scroll;
    • a project page with its galleries;
    • the contact form.
  2. Send yourself an enquiry from the live site and reply to it.
  3. Verify the share card. Paste the URL of the home page and of a project into https://www.opengraph.xyz or a chat window, and confirm the image and title.
  4. 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.
  5. Analytics, if you want it. Add your snippet to src/app/layout.tsx, or use your host’s built-in analytics (Vercel Analytics, Cloudflare Web Analytics, Plausible, Fathom). None of them need a cookie banner.
  6. Keep it current. A new project is one entry in src/content/collections/projects.ts, a new post one entry in posts.ts; see Editing the content. Connect a CMS (Using a headless CMS) if someone else will publish.

The template ships with what search engines look for:

  • pre-rendered HTML, with links in it to every page (the later projects and posts of Portfolio and Blog included);
  • one <h1> per page, and a title and description for every page;
  • canonical links, sitemap.xml, robots.txt and share cards;
  • sized, lazy-loaded images that keep their space while they load.

Keeping the site fast is mostly about images. Export photos at the size they are shown, not the size your camera produced; the placeholders show the size each one was designed for.