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
