The template is configured by a single typed file, site.config.ts. It ships as a complete reference — every option is present, the unused ones commented out with their defaults — so configuring is mostly uncommenting. A typo or wrong value fails the build with a readable message before anything deploys.
With one deliberate exception: wording never fails the build. A bad entry in strings.ts is skipped with a warning and the English is used instead, because a mislabeled page is better than a site that won't deploy. Everything else — a missing event slug, a malformed theme — still stops the build, since those give you a broken site rather than a wrong word.
The blocks
- site — name, logo, a wide
hero_image(without one the hero shows the event's cover as a square), absolute URL (canonical tags + sitemap), description,language, andnoindexfor staging deploys. Note thatlanguagesets<html lang>and formats dates, times and prices — it does not translate any words; that'sstringsbelow. - event — the Cloomba event slug this site renders. One event per site; a satellite event is a second deployment.
- theme —
mode(autofollows the visitor's system with a toggle;light/darkpin one), font stacks, corner radius, and the color tokens per mode:primary,primary_content,accent,surface,surface_alt,text,text_muted. Set any subset — the rest derive from the mode'sprimary: the grays take its hue, so one brand color gives a matching palette. - sections — the home page as a list: order is display order, removing a line removes the section. Fourteen block types, from
heroandstatstofaqand the closingcta. - header / footer — omit them and navigation derives itself from the enabled sections and your custom pages; set them to take full control. The footer also carries app links and privacy/terms URLs.
- strings — every UI label the template renders, so you can translate the site or just reword it. Already wired to
strings.ts, which ships empty — you edit that file, never this line. See customization. - socials — profile URLs; icons are detected from the domain automatically.
- analytics — a self-hosted Umami script (cookieless — no consent banner needed), plus
head_htmlfor anything else: Google Analytics, a Meta pixel, any snippet, injected verbatim into<head>(in the TanStack app, at the start of<body>). Cookie-based trackers make you responsible for a consent banner — the template ships none. - cloomba_promo — the "built with Cloomba" band above the footer. Set
falseto hide it.
Secrets live in .env, not in the config
The committed config holds production endpoints only. Your API key — and any local-development overrides — go in .env (gitignored; see .env.example):
CLOOMBA_API_KEY— a free read-only key from cloomba.com/me/developers. Build-time only; it never reaches the browser.CLOOMBA_API_URL,CLOOMBA_BROWSER_API_URL,CLOOMBA_EMBED_ORIGIN— optional overrides for developing against a non-production Cloomba.