Workspaces and projects

Where work lives in raea: a workspace is a git repository of projects and controllers, and each project has a brief and folders for media and renders.

View as Markdown

You can render a single .tsx file from any folder, and for a quick piece that's all you need. For ongoing work, raea keeps things in workspaces and projects, so an agent always knows what the work is for, what the person likes, and where the files go.

A workspace

A workspace is a git repository, one per studio or client, that holds projects and controllers. Workspaces live under your raea root, which is ~/Studio unless you set another:

Terminal
git config --global raea.root ~/Work      # optional: put workspaces somewhere else
raea workspace init acme                  # makes ~/Studio/acme
raea workspace adopt ~/clients/acme       # or makes an existing folder a workspace
raea workspace                            # shows the current one (--json for its projects and paths)

A project

A project is one piece of work inside a workspace. In the raea app it shows as a channel.

Terminal
cd ~/Studio/acme
raea project new spring-launch

That makes the project's folder:

PathHolds
brief.tsWhat the work is: who it's for, the one thing they should believe, its modes, its deliverables
media/Footage, music and other source files
out/Renders
brand/The brand kit: brand.css, brand.json, logos

A project can live inline in the workspace or as a repository of its own; both keep its history:

Terminal
raea project split spring-launch      # its own repository
raea project join spring-launch       # back inline

The spec files

raea's specs are TypeScript files whose default export is checked against a schema:

FileWhat it says
brief.tsThe project's brief
NAME.script.tsA storyboard: scenes of beats, what's on screen, what each scene must land
~/.raea/taste/taste.tsThe person's taste, which beats any guide's default
plan.tsA frozen plan for a build, checked by raea
controllers/ID.tsThe workspace's settings and workflows
Terminal
raea spec brief.ts        # prints the brief as JSON, checked against its schema

A brief, written with the brief helper from raea/brief. Only title is required; believe (the one thing the audience should think afterwards) and mode are what an agent needs most:

TS
import { brief } from "raea/brief";

export default brief({
  title: "Spring launch",
  for: "Acme Running",
  audience: "runners who already own our shoes, on their phones",
  believe: "the new sole makes an easy run feel easier",
  mode: ["pitch"],
  deliver: [{ name: "launch-9x16", specs: ["30 s", "9:16", "with sound"] }],
});

The full list of each spec's fields is in Files and specs.

Controllers

Controllers are the workspace's settings and workflows: delivery specs, who reviews what, the tools every agent gets. Every change to one is a git commit.

Terminal
raea controller ls                          # every controller, with its groups and fields
raea controller get CONTROLLER.GROUP.FIELD  # one value
raea controller set CONTROLLER.GROUP.FIELD VALUE   # change it, as a commit

Reading a project before working on it

Terminal
raea context .

prints, in order, everything an agent should read before making anything in the project: the person's taste, the workspace's taste, the brief, the look, the controllers, the craft floor and the guides for the brief's modes. See How an agent should use raea.