TinaCMS

TinaCMS

WHAT IS IT?

TinaCMS is a headless CMS that stores content directly in a Git repository, as Markdown, MDX, JSON or YAML files. On top of that it adds a typed GraphQL API and an optional visual editor that renders the actual site while editing. No proprietary datastore: the files stay versioned in the repo, readable and portable even without Tina.

WHY IS IT INTERESTING?

  • Content lives in the repo: every change produces a commit. History, branches, pull requests, rollbacks, reviews - the existing Git tooling applies to editorial content as is.
  • Live preview visual editor: the editing form sits next to the real site, and fields are clickable straight in the rendered page. Simple enough for a non-technical writer, with no detour through the code.
  • Typed schema and GraphQL API: collections and fields are declared in tina/config.ts. Tina generates the matching TypeScript types plus an API to query relations between documents with dot notation (post.author.firstName).
  • Framework agnostic: Next.js, Astro, Hugo, Jekyll and friends. Tina plugs into the existing site generator instead of imposing its own, for both static generation and server-side rendering.
  • Self-hostable: the project ships under Apache 2.0 and the backend can run on your own infrastructure. TinaCloud exists for the managed version, but stays optional.
  • Editorial workflow: branch-based editing, preview and pull request approval before publishing, for teams that want a real review loop.

USE CASES

  • Opening up a static site to non-developers without leaving the Git workflow
  • Versioned product documentation, reviewed and approved through pull requests
  • Blog or marketing site whose Markdown content must stay portable and lock-in free
  • Migrating away from a SaaS CMS where content is trapped in a remote database
  • Multi-contributor sites where every publication must leave an auditable trace