Skip to content

Repository files navigation

This is a TinaCMS starter project.

Edit your site visually in the browser, ship it as fast static HTML.

Getting started

Create the project:

pnpm dlx create-tina-app@latest --template tina-astro-starter

Install dependencies:

Note

Which package manager is best for Node.js? The right one makes a real difference to your workflow. We recommend pnpm for its speed and efficient dependency handling — this SSW rule explains why.

pnpm install

Start the dev server, then edit visually at localhost:4321/admin/:

pnpm dev

homepage

Figure: Homepage UI

Features

  • Visual editing via @tinacms/astro — a vanilla-JS bridge, with no React in the page tree
  • Tailwind CSS v4 block builder: Hero, CTA, Features, Stats, Testimonial, Callout, Content, Split, and Video
  • Light/dark theme toggle with a Tina-ember space theme
  • Markdown and MDX with <TinaMarkdown> rich-text rendering
  • Collections for Pages, Blog, and global Config
  • Astro view transitions, SEO meta, OpenGraph, sitemap, and RSS
  • Icons via astro-icon and the Tabler set

Deploying

The starter is host-neutral — it isn't tied to any one platform. Every content page is prerendered to static HTML; the only on-demand route is the /tina-island endpoint that powers live visual editing.

astro.config.mjs picks the right adapter automatically from the platform's build environment — Vercel, Cloudflare (Pages or Workers) and Netlify are detected and configured with no changes, and anywhere else falls back to a portable Node server you can run with node ./dist/server/entry.mjs. The bundled wrangler.jsonc targets Cloudflare Workers and enables nodejs_compat, which the editing route's node:async_hooks needs.

Set SITE_URL to your production URL — it feeds the sitemap, RSS, and OpenGraph tags; see .env.example. Most platforms inject their own deploy URL as a fallback, but Cloudflare Workers exposes none, so set SITE_URL there to avoid localhost canonicals.

A note on React

react and react-dom@^18.3.1 are pinned in devDependencies for the TinaCMS admin UI build only — the site itself ships zero React. Without the pin, pnpm resolves react@19 against react-dom@18 and the admin crashes on init. This is tracked in tinacms#6985; remove the pin once that lands.

Want to learn more?

Read the TinaCMS documentation and the Astro documentation, or come and say hello in the TinaCMS Discord server. "# Test"

About

Test

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages