Vue 3 · Vite · TypeScript

A Vue starter that search engines can actually read.

Every route prerenders to static HTML with its own title, canonical URL and structured data. No client-side metadata guesswork.

Version 1.0.0Free and open source, MIT licensedView the source
  • Vue 3
  • Vite
  • TypeScript
  • Tailwind CSS
  • vite-ssg
  • Cloudflare Pages

What you get

Four things you would otherwise build twice

Each one exists because getting it wrong is invisible in development and expensive in production.

Prerendered routes

Each route becomes a real HTML file. Crawlers and link unfurlers see the finished page without executing a line of JavaScript.

Structured data graph

One @id per entity, referenced rather than repeated, so the graph describes one organisation instead of a dozen copies.

Generated sitemap and robots

Both are produced from the build output and the site config, so they cannot drift away from the pages that actually exist.

Enforced layering

The dependency rules between core, config, services and views are ESLint rules, not documentation nobody reads.

How it works

Three stages, one source of truth

Nothing in the output is maintained by hand, which is why nothing in it can disagree with the configuration.

  1. Configure once

    Site facts, the identity the site is about and the route table live in one place each. Every URL, title and entity is derived from them.

  2. Build and prerender

    vite-ssg renders every route to its own HTML file, with metadata and JSON-LD already in the markup.

  3. Ship static files

    The sitemap, robots file and manifest are generated from what was actually rendered, then the whole directory deploys to any static host.

Start from a template that already got the boring parts right

Clone it, replace the config, delete the example routes. The wiring is what you keep.