The corporate website of Hello Tham Pty Ltd (v5.0.1), a boutique management consulting firm — built on our own Hello Astro starter.
The 2026 redesign implements our Rosely design system in an editorial style: Noto Serif headlines, mono uppercase eyebrows, hairline rules, numbered indexes, and the Rosely palette (mulberry, rose, quartz, plum, cream) expressed as Tailwind CSS v4 @theme tokens in src/styles/global.css. Every page supports light and dark themes, and illustrations are unDraw SVGs recoloured to the palette. The variable Noto Sans/Serif/Mono families are handled by Astro's native Fonts API (fonts in astro.config.ts + <Font /> in the base layout): font files are downloaded at build time and self-hosted with preload links, so no third-party font requests are made at runtime. The design was authored in Claude Design and implemented with Claude Code.
A static-first Astro site — no servers, no databases, no cookies:
- Astro v7 + Tailwind CSS v4 + TypeScript,
output: 'static'. - Future-dated publishing (client-side): future posts are built into the static output but hidden; a small script in
src/layouts/base.astrocompares each element'sdata-publish-datewith the visitor's clock at view time, so scheduled articles unlock automatically without a rebuild. - Search: Pagefind builds a local index post-build; queries run entirely in the browser.
- Content pipelines: Markdown, MDX and Markdoc via
@astrojs/markdown-satteri, with custom satteri plugins (reading time, diagrams, emoji), Mermaid/Markmap diagrams and KaTeX math. - SEO: JSON-LD + Open Graph via
src/components/seo.astro;@astrojs/sitemapis extended byscripts/extend-sitemap.mjsto reference the sitemaps of our five subsites (Rosely, HelloNotes, FinvestLens, Hello Astro, Spotlite), mirrored inrobots.txt. - Contact: Netlify Forms (with honeypot) and an
astro-leafletOpenStreetMap map — the site's only third-party request.
Content lives in src/content/ collections: blog, page, doc, author, category and partner. Notable conventions:
- Achievements (
/work) are parsed at build time fromsrc/content/page/work.md— keep the strict#### year, clientheading +>blockquote format;src/pages/work.astroturns them into year-grouped cards with client-keyed tints and artwork. - Partners are one markdown file + logo per partner in
src/content/partner/; the home partner strip, the Find-out-more card and the Partners page CTA copy name them as well. - Blog covers: posts may set
coverSVG(displayed in cards and heroes) alongsidecoverImage(used for Open Graph, which needs a raster). - Bespoke pages (
about,consultants,partners,apps,services,work) live insrc/pages/and are excluded from the generic[page].astrocollection route.
pnpm install
pnpm dev # dev server on http://localhost:4321
pnpm build # astro build + extend sitemap + pagefind index
pnpm preview # preview the production build
pnpm check # astro type/content checks
pnpm lint # prettier --write + eslint --fixEvery push to master deploys twice:
- GitHub Pages via
.github/workflows/deploy.yml. - Netlify (badge above), which also processes the contact form submissions.
Based on the Hello Astro starter. The Astro v7 / Tailwind v4 platform upgrade was performed with Google DeepMind's Antigravity agentic assistant; the subsequent Rosely redesign, bespoke pages and content overhaul were implemented with Anthropic's Claude Code. Illustrations by unDraw.