TinaCloud is a hosted datalayer for TinaCMS. TinaCloud is the easiest way to use TinaCMS in production. It provides:
It also allows authorization for different types of users (content creators, editors, marketers, etc) to login and edit their site without needing to grant direct access to the repository in GitHub.
TinaCMS can be self-hosted or used independently of TinaCloud as well.
For more information, see TinaCloud Overview.
Check out our communities at tina.io/community.
Anyone can start using Tina right away but it is designed for developers to setup and customize. A certified developer can accelerate the setup, fine-tune the configuration, and ensure best-practice architecture.
TinaCMS is supported on currently maintained LTS versions of Node.js and works with NPM, PNPM, and Yarn.
When comparing TinaCloud with self-hosting Tina, there are specific features unique to TinaCloud. These include:
In TinaCloud, there's a Git backed media feature. This integrates media into the Tina Media Manager and commits it directly to the Git repository. However, this functionality is not present in self-hosted Tina.
The reason for its absence is due to the process involving media uploads. When using the media manager in TinaCloud, images are uploaded to TinaCloud servers and distributed via a CDN. This ensures that images are accessible through the Tina Media Manager, as they require a URL for accessibility. Without this, images won't appear in the Media Manager until the site is rebuilt.
TinaCloud allows for changing the content branch at runtime, a feature managed through URL modification. However, in self-hosted Tina, changing branches is restricted to the build phase only.
This limitation means that commands like...
client.queries.page({ relativePath: 'home.mdx' }, { branch: 'main' })
...are not functional in a self-hosted Tina setup.
The self-hosted backend does not currently have endpoints to support search functionality.
By default when using TinaCloud, the author on Git commits is the TinaCloud GitHub app. Some users prefer to know who made the change.
For this use case, Tina allows two different methods:
Both of these can be enabled per-user in the TinaCloud account settings. Find out more about Git Authoring.
A database is essential when using markdown with TinaCMS because the Data Layer, which serves Markdown and JSON files, relies on a database to perform various content management functions. While the Markdown files are the primary source of your content, the database acts as a cache to enable advanced features like search, pagination, and cross-referencing between files. It also provides an API, allowing content fetching akin to traditional headless CMS operations.
Initially, TinaCMS's Data Layer operates unnoticed during local development and is managed by TinaCloud in production. With the introduction of self-hosted options, users can now opt for more control and customization, integrating their own authentication systems and hosting. The entire TinaCMS, including its Data Layer, is open-source, allowing for community-driven enhancements and support.
When developers are developing locally, it's often convenient to load/save content from their local filesystem rather than connecting to the content on TinaCloud.
When in local-mode, you will not need to login to enter edit-mode.
Note: Local-mode is meant for developing locally, and will not work when your site is hosted on production. When in local-mode, Tina tries to hit
http://localhost:4001
, which isn't available at runtime on your production site (and neither is the underlying filesystem content).
Once you are ready to host your site in production and put editing behind authentication, you can self-host the CMS backend yourself or you can use TinaCloud's hosted backend.
Whether you're self-hosting Tina or using TinaCloud, Tina's Content API authenticates directly with GitHub removing the need for users to create GitHub accounts. Any changes that are saved by your editors will be committed to the configured branch in your GitHub repository.
Currently yes, the first Git provider that TinaCloud integrates with is GitHub. Other Git providers may be available in the future.
It does! TinaCloud can work with sites inside monorepos by specifying the path to your tina
folder in your project configuration.
If your repo is not a monorepo, there's no need to do any configuration. We'll expect your tina
folder at the root of your repo.
Here's an example monorepo structure that works with TinaCloud:
/projects/site-a/projects/site-b/projects/site-c
See Path To Tina for more information.
When a user logs in from your site, we will pop open a login window. When login is complete, we will attempt to send a message back to the main window.
The most common reasons for this issue are:
Make sure to includehttps
in the Site URL eg: https://forestry.io or if you are testing locally, it might be something likehttp://localhost:3000
There is a known limitation where TinaCMS doesn't load assets correctly when the admin is deployed to a sub-path: (https://jamespohalloran.github.io/my-site-root/admin/
for example). To resolve the issue, in your Tina config file, set the build.basePath
property to value of the sub-path (e.g. my-site-root
).
This error means that the TinaCMS admin HTML file failed to load the JavaScript bundle. This generally happens for a few reasons:
When you run tinacms dev
locally, Tina will generate a development admin/index.html file, which loads its assets from localhost. For production, this file should be built in CI using tinacms build
. If a developer manually removes the admin/index.html file from their .gitignore
, they may run into this issue.
If your site is served at a sub-directory, ensure that your build.basePath
is configured appropriately
Video: FAQ - Setting a base path for TinaCMS (3 min)
See the TinaCloud troubleshooting page for more information.
Make sure your API URL isn't set to point at your local GraphQL server when in production. You should be pointing to the ContentAPI.
If you are working locally, make sure your GraphQL server is running.
After choosing which starter template to deploy and being redirected to Vercel, a popup for Vercel to add their GitHub app may fail to open. Look in the bottom left corner for a toast message saying "The popup to install the GitHub App could not be opened."
Figure: Popup blocked
To fix, check your browser's address bar for blocked popups, allow them, and retry.
Yes. Tina is designed to be highly LLM-friendly, mainly because it uses Markdown for structuring content.
Markdown gives Large Language Models (LLMs) clear advantages:
Unfortunately we do not support Git LFS at this time due to limitations with the GitHub API.
When using the reference field on a collection with a large number of items, you may find the network requests time out. Currently, we do not have anything in place to paginate the reference field.
The alternative would be to add a custom field component with pagination. To retrieve the paginated results, you can use a custom query.
Video: FAQ - Getting a 503 Service Unavailable error when loading the reference field