/tinacms

Tina is a site editing toolkit for modern React-based sites (Gatsby and Next.js)

Primary LanguageTypeScriptApache License 2.0Apache-2.0

TinaCMS

Build Status Slack Lerna

Getting Started

Tina Demo

Development

To get started:

git clone git@github.com:tinacms/tinacms.git
cd tinacms
npm install && npm run bootstrap
npm run build

# Start Gatsby demo
cd packages/demo-gatsby
npm run start

Do not run npm install from inside the packages directory

TinaCMS uses Lerna to manage dependencies when developing locally. This allows the various packages to reference each other via symlinks. Running npm install from within a package replaces the symlinks with references to the packages in the npm registry.

Commands

Commands Description
npm run bootstrap Install dependencies and link local packages.
npm run build Build all packages.
npm run watch Watch all packages for rebuilds.
npm run test Run tests for all packages.
lerna run build --scope <package> Build only <package>.

Release Process

Tina has three main branches:

  • master: The bleeding edge of tinacms
  • next: A preview of the next release
  • latest: The current stable release

The flow of changes therefore looks like:

fix-some-bug => master => next => latest

The process happens over a week:

  • On Monday
    1. next is merged into latest; then latest is published to npm
    2. master is merged into next; then next is published to npm
  • Any hot fixes for bugs will be cherry picked into next and latest and the published accordingly.
  • Every pull request merged to master automatically triggers a canary release.

With this process:

  • all accepted changes are available as canary releases for early testing
  • critical fixes are published as soon as possible
  • new features and minor fixes take ~1.5 weeks to be published