Before you launch
Every template ships with a complete fictional business, so you can see every page working. Before your site goes live, everything that belongs to that business should be yours. Handy’s demo is Sorted Handyman Services, a fictional business.
Replace the demo content
Section titled “Replace the demo content”Go through the content editor from top to bottom. In Handy:
| Where | What to replace |
|---|---|
| Site settings | Name, tagline, description, chat assistant name, email, phone, address, insurance and memberships, navigation, header button, profiles, footer note, footer links, the picture for social previews |
| Home page | Every section’s texts, the to-do list, the numbers, the closing photo |
| Services, Jobs, Tips | Delete the demo entries and add your own |
| Prices page | Hourly rate and small print, packages, steps, booking texts, deposits and vouchers |
| Contact page | Areas covered, map texts and radius, working hours, details, photo, questions |
| Interface texts | The emails’ signatures, the chat’s greeting and suggested questions |
| Legal | Privacy, terms, guarantee (see below) |
Search engines and social previews use the SEO title and description of each page, so fill those in too.
To delete demo entries in the files instead of the editor, remove them from
src/content/services/en/, src/content/jobs/en/ and src/content/journal/en/, and their
photos from src/assets/photos/. Home page sections that list entries (services, jobs, tips)
show whatever is published, so they follow.
In the EmDash variant, the demo content and photos are in EmDash (seeded when the site was set
up): replace them in the admin at /_emdash/admin.
Values in the code
Section titled “Values in the code”A few demo values live in code or settings rather than in the content. In Handy:
- The sender of your emails:
EMAIL_FROMdefaults to the demo business (Sorted Handyman Services <hello@sorted.example>). Set it to your own name and an address on your domain, in.envand on your host. - The currency search engines see: the prices page and the service pages describe prices as
pounds (
priceCurrency: 'GBP'insrc/views/Prices.astroandsrc/views/Service.astro). Charge in another currency? Change it there. - The map: the demo map shows the area around the fictional business. Put your base’s
coordinates in
map.config.jsonand runnpm run map -- fetch(details on the Handy page). Keep the OpenStreetMap credit.
Other templates have similar spots; their pages in these docs list them.
Photos
Section titled “Photos”The demo photos are AI-generated for the template. LICENSES.md in your project lists each one
and says what you may do: use, change and publish them in any project built with the template.
The people and the business in them are fictional.
So you may keep them, but replace any photo that would make a visitor believe something untrue about your business. In Handy that means the jobs: their before and after photos should be your own work, taken from the same spot. Services and tips can keep demo photos until you have your own.
To replace a photo, pick a new file in the photo’s field in the editor (Choose file), at
least 2000 px wide, and write its description (alt text). Delete photos you no longer use from
src/assets/photos/. Fonts and map data have their own licenses, also listed in LICENSES.md.
Your site’s address
Section titled “Your site’s address”Your production address is set in one line near the top of astro.config.mjs. It starts as the
template’s demo address:
// Your production URL: used for canonical links, the sitemap and social images.const site = 'https://handy.demo.wptom.com';Change it to yours, for example const site = 'https://example.com';. Until you do, canonical
links, /sitemap.xml, /robots.txt, /llms.txt and social previews point at the demo address,
and search engines would treat your pages as copies of the demo.
In the EmDash variant you can also set SITE_URL in the environment when the address the site
is served from differs from site (EmDash resizes photos for it). Otherwise leave it empty.
See also Put your site online.
The demo color switcher
Section titled “The demo color switcher”The template’s live demo shows an Accent switcher in the bottom left corner. It’s built in
src/components/DemoAccents.astro, offers the colors in src/data/demo-accents.json (the first
one is always your own accent from brand.json) and derives every color in the browser with
the same code as the build, so what you see is what brand.json would give.
It only appears when the PUBLIC_DEMO environment variable is true. It’s off by default,
and your site should keep it off: don’t set PUBLIC_DEMO on your host. To try colors on your
own computer:
PUBLIC_DEMO=true npm run devPick a color you like and put its hex value in brand.json as the accent. You can leave
DemoAccents.astro and demo-accents.json in your project: without PUBLIC_DEMO they add
nothing to your pages.
Legal pages
Section titled “Legal pages”The demo’s privacy policy, terms and guarantee (Pages → Legal, files in
src/content/legal/en/) are placeholders and say so in their first line: “This policy is demo
content for the fictional Sorted Handyman Services”. Replace each with text that describes what
your business and site really do: which forms you have, which services you’ve switched on
(email, analytics, payments, booking, the AI chat), and your contact details. Update the
Last updated date, and remove any page you don’t need along with its link in
Site settings → Footer links.
The cookie banner appears only when Google Analytics is on (PUBLIC_GA_MEASUREMENT_ID), and
links to /legal/privacy, so keep a privacy page at that address.
The 404 game
Section titled “The 404 game”Every template’s 404 page has a small game. Handy’s is “Screw it”: drive the screws flush. It’s part of the “page not found” page only and keeps the best score in the visitor’s browser.
- Keep it: its texts are in Interface texts → 404 game, the page’s heading and button in Pages → 404 page. Translate them along with the rest.
- Change the words only: edit those texts.
- Remove it: in
src/pages/404.astro, delete the line with<ScrewGame />and its import, and change the two-column grid around it to a single column. Then you can deletesrc/components/ScrewGame.astroandsrc/lib/screw.ts. The game’s texts stay in the content model and do no harm.
Launch checklist
Section titled “Launch checklist”- The demo business is gone: Site settings, every page, every collection, Interface texts. Search the project for its name (in Handy, “Sorted”) to find leftovers.
- Photos are yours where it matters, every photo has alt text, unused photos are deleted.
- Colors, fonts and corners in
brand.jsonare yours, checked in both themes. -
const siteinastro.config.mjsis your address. - Legal pages describe your business; the footer links point at the ones you kept.
- Environment variables on your host for every feature you use (
.env.examplelists them), includingEMAIL_FROM.PUBLIC_DEMOis not set. - Forms, booking and payments tried once on the live site (Stripe in test mode first).
- The picture for social previews (Site settings) is yours.
-
npm run buildfinishes without errors. - Lighthouse on the live site, phone and desktop (see Working in the code).
- Your work is committed, so
wptom updatecan merge future versions.