Content Outside the App Folder

Introduction

In some projects, your content files live outside the application folder where TinaCMS is installed. For example, your Next.js app might be in packages/website/ while your markdown content is in a top-level content/ folder.

TinaCMS supports this layout using the localContentPath config option. This guide walks through how to set it up.

If your content lives in a completely separate Git repository, see the Separate Content Repo guide instead.

Example Structure

my-monorepo
content (your markdown/MDX content)
pages
home.mdx
posts
hello.md
tina (required, TinaCMS writes generated files here)
packages
website (your Next.js app)
tina
config.ts (TinaCMS config lives here)
...
package.json

Step 1: Configure localContentPath

In your tina/config.ts, set localContentPath to point at your content directory. The path is resolved relative to the tina/ config folder, not the project root.

Use an environment variable for localContentPath since the relative path may differ per developer depending on where they clone the repo.

Step 2: Create a tina/ Folder in the Content Directory

TinaCMS writes generated files (tina-lock.json, __generated__/ etc.) into a tina/ folder inside the content root. This folder must exist or the CLI will fail with:

Create it:

You can add a .gitkeep file to ensure it's tracked by Git:

Step 3: Set Collection Paths Relative to the Content Root

When localContentPath is set, collection path values are resolved relative to the content root — not the application folder.

For example, if your content lives at content/posts/:

Step 4: Run the Dev Server

No special CLI flags are needed. Just run from your app directory as usual:

You should see:

Troubleshooting

"Unable to find TinaCMS folder ... specify --rootPath"


Documents not found or empty collections


Path resolution reference

Last Edited: February 18, 2026