Skip to main content
This guide takes you from an empty repository to a live blog. You need a GitHub repository you can push to, which can be a new one or a folder in an existing monorepo.
Notra Sites is in private beta. If Sites is missing from the Studio sidebar, email hello@usenotra.com or ask on Discord and we’ll turn it on for your workspace.
1

Add a first post

Create blog/hello-world.mdx in your repository and push it to your default branch:
blog/hello-world.mdx
Posts go in blog/ and changelog entries in changelog/, and you don’t need a blog.json yet.
2

Import the repository

In Notra, switch the sidebar to Studio, open Sites and click New site. If the Notra GitHub App isn’t installed yet, click Install GitHub App and give it access to the repository, then click Import next to the repository.
3

Configure the site

  • Site name defaults to the repository name.
  • Address is your free Notra address, <address>.notra.site.
  • Production branch is the branch that goes live, so pushes to it deploy the site.
  • Turn on Site is in a subdirectory if the files live in a folder like apps/blog.
  • Under Blog and Changelog, set the path for each section (/blog, /changelog), or leave a path empty to turn that section off.
Click Create & deploy.
4

Watch the first deploy

The build log streams live, and when it says Your site is live, click Visit. Your post is at https://<address>.notra.site/blog/hello-world.
5

Add your domain

Open Domains → Add domain and enter blog.acme.com or acme.com/blog. See Choose a domain for both options.

Make it yours

When the repository has no blog.json, the Configure step offers Open starter PR (optional). Notra reads your Brand Identity and website and opens a pull request with a blog.json, a header.mdx, a footer.mdx and a first post that already use your logo, colors and links, so merging it takes the site live with your brand. To set things up by hand, add a blog.json next to your posts:
blog.json
The $schema line gives you autocomplete and inline errors in VS Code, Cursor and other editors.

Next steps

Repository layout

Where every file goes and how paths become URLs.

Components

Callouts, cards, tabs, steps and your own React components.

Match your website

Your own header, footer and sections on every page.

Previews

A link for every pull request.
Last modified on October 8, 2026