Skip to main content
Say Hello

Simon Eramo Studio ยท 2026

Master Site Template

A production-ready Astro site template that compresses days of boilerplate setup into a single CLI command โ€” with CMS, contact forms, a block-based page builder, and WCAG 2.1 accessibility baked in from day one.

Role

Product Designer & Full-Stack Developer

Version

2.0.0

Stack

Astro 5 ยท TinaCMS ยท Tailwind CSS v4 ยท Alpine.js ยท Resend ยท Vercel

Overview

Executive Summary

The Master Site Template is a production-ready Astro site template designed to dramatically reduce the time it takes to launch a new client website โ€” from days of boilerplate setup down to a focused strategy session and a single CLI command.

Rather than a simple starter kit with a hero section and a nav bar, it is an opinionated, full-featured platform โ€” complete with a CMS, a contact system, a flexible block-based page builder, a 3-tier page architecture, a Project Starter CLI tool, and WCAG 2.1 accessible components across the board.

Minutes From clone to client-ready project
30+ Pre-built components & blocks
100/100 Lighthouse score out of the box

The Challenge

The Boilerplate Loop

For a solo developer or boutique agency, spinning up a new client site involves a predictable, exhausting loop โ€” repeating the same tasks before writing a single line of client-specific code.

  • Copy files from the last project and strip out client-specific content.
  • Rebuild the same FAQ, CTA, and contact form components โ€” again.
  • Reconnect CMS schemas to fresh content collections.
  • Configure email delivery, environment variables, and deployment adapters.
  • Do all of this before writing a single line of client-specific code.
  • Configuration drift means each project subtly diverges from the last.

This repetition isn't just inefficient โ€” it's risky. Configuration drift means each project subtly diverges from the last, making it harder to apply improvements retroactively or share patterns across codebases.

The Solution

Build Once, Deploy Everywhere

The template approaches the problem at two levels:

๐Ÿ“ฆ

Master Template Repository

The canonical source of truth for every component, page, schema, and style pattern.

โšก

Project Starter CLI

Scaffolds a new project from the master template, selecting only the pages and features the client needs.

Together, they eliminate the setup phase. A new project is ready to receive client content within minutes of the first git clone.

๐Ÿ“„

3-Tier Page System

Pages categorised as Core (always included), Common (opt-out), or Optional (opt-in) โ€” driving a principled, data-driven scaffold process.

๐Ÿงฑ

Block-Based Page Builder

A flexible page system where non-technical editors compose pages from pre-built blocks via TinaCMS โ€” no developer needed for new layouts.

โœ๏ธ

TinaCMS Visual Editing

Content lives as Markdown in Git with visual editing via the TinaCMS admin UI. Rollbacks are a git revert away.

๐Ÿ“ง

Contact Form via Resend

Full contact form with centered and split layout variants, powered by a Resend serverless API route โ€” no SMTP config required.

โ™ฟ

WCAG 2.1 Accessible

Semantic HTML5, skip-to-content links, full keyboard nav, ARIA labels, high-contrast theme, and focus-visible styles on everything.

๐Ÿ”

SEO Built-In

Dynamic title/meta tags from CMS content, Open Graph, Twitter Cards, JSON-LD structured data, and auto-generated XML sitemap.

Architecture

3-Tier Page System

The most important architectural decision โ€” a principled data model that drives the entire scaffold process.

Tier 1 โ€” Core

Required on every site, non-negotiable

Homepage, About, Contact, 404, Privacy Policy

Tier 2 โ€” Common

Standard business pages, included by default

Services, Blog, FAQ, Pricing, Process, Team

Tier 3 โ€” Optional

Specialised pages, toggled per project

Portfolio, Careers, Reviews, Events, Partners, Book

Configuration is driven by template.config.json โ€” a single source of truth that maps pages to their content collections, CMS fields, and default states. The starter tool logic is entirely data-driven.

Components

Pre-Built Component Library

Every component is a typed Astro .astro file โ€” no React, no Vue, no framework dependency.

</>

HeroSection

Homepage hero โ€” split, centered, and bold variants

</>

PageHeroSection

Interior page hero โ€” center or left aligned

</>

CTASection

Call-to-action block โ€” reusable across pages

</>

FAQ

Interactive Alpine.js accordion โ€” center / left variants

</>

ContactForm

Full form with centered and split layouts

</>

PricingTiers

Pricing cards with feature lists

</>

BlockRenderer

Maps CMS block templates to Astro components

</>

TestimonialsMarquee

Animated scrolling testimonials strip

Engineering

Technical Decisions

Every dependency was chosen deliberately โ€” optimised for developer experience, performance, and long-term maintainability.

๐Ÿš€

Astro 5

Island architecture delivers zero JavaScript by default. Content Collections provide end-to-end typing for all Markdown, preventing an entire class of runtime bugs when content schemas drift.

โœ๏ธ

TinaCMS

Visual editing without locking content into a proprietary database. Content lives as Markdown in Git โ€” version-controlled, rollback-friendly, and builds with no external API dependency.

๐ŸŽจ

Tailwind CSS v4

CSS-native configuration via @theme reduces boilerplate. The design system โ€” high-contrast black/white palette, 2px borders, Inter variable font โ€” is defined once and flows through every component.

โšก

Alpine.js

Reactive interactivity (mobile menus, dark mode, FAQ accordions, form states) without a build step or component framework. Pages stay fully static-renderable with minimal bundle overhead.

๐Ÿ“ง

Resend

Developer-first API with a generous free tier and first-class Vercel integration. Replaces complex SMTP relay configuration with a single serverless API route.

โ–ฒ

Vercel

Edge-deployed with zero-config from the Astro adapter. Git push โ†’ production deploy. Preview deployments for every PR. The natural deployment target for SSR-capable Astro sites.

Process

Launching a New Project

The entire foundation โ€” routing, CMS, email, dark mode, accessibility, SEO, sitemap โ€” is already in place. The developer's attention goes to what's actually unique about the client.

01

Run Project Starter CLI

Select pages, name the project โ€” Tier 1 always included, Tier 2/3 toggled per client.

02

Connect TinaCMS

Create a TinaCMS project, copy API keys into .env. Visual editing is live.

03

Connect Resend

Add Resend API key for contact form email delivery โ€” one environment variable.

04

Push to Vercel

Push to GitHub, import into Vercel. Git push โ†’ production deploy, preview on every PR.

05

Customise & Launch

Brand, content, copy. The foundation โ€” routing, CMS, email, dark mode, a11y, SEO โ€” is already done.

Impact

The Result

At v2.0.0 the template represents a mature, opinionated platform rather than a starter kit. It encodes months of accumulated decisions about how to structure Astro projects for client work โ€” from content modelling to deployment โ€” into a single, reusable repository.

  • Days compressed into minutes โ€” new projects are client-ready within minutes of the first git clone.
  • Zero configuration drift โ€” every project starts from the same canonical master template, with improvements applied once and inherited everywhere.
  • Production-grade from first run โ€” CMS, contact forms, dark mode, accessibility, SEO, and sitemap are all functional before the developer writes a single line of client-specific code.
  • Compounding advantage โ€” each deployment reinforces the template. Bugs fixed once, patterns proven once, improvements shared instantly across all future projects.

๐Ÿ’ก Building a template that's truly reusable requires resisting the urge to hardcode anything client-specific โ€” a discipline that pays off enormously on the second project, and becomes a compounding advantage with each new deployment.

Last updated ยท June 2026