Loomis
The product

Projects

What a project is, where the files are edited, how a preview is produced, and how a project gets published.

A project is a folder of files with a name, a kind, a history you can roll back and, optionally, an address it is published at. Everything the assistant writes goes into a project, which is what makes its changes reviewable rather than conversational.

The three views of a project

ScreenWhat it is for
Projects (/dashboard/projects)The list: cards with the kind, the file count, and favourites
A project folder (/dashboard/projects/[id])Managing the files themselves: what is here, what to remove
The workbench (/dashboard/code/[id])Editing, previewing and publishing

/dashboard/code lists every project in the same way and is the quicker way in when you know you want to write something rather than to organise something.

The workbench, panel by panel

PanelWhat it does
ChatThe conversation, with the project as its context
EditorMonaco, with the project's files in a tree beside it
PreviewThe running project, in a sandboxed frame
TerminalA terminal for the project's own commands
InspectorWhat changed, and the diffs waiting to be accepted
DeployWhere and how to publish, including rollback
GitHubSaving the project into a repository somebody owns
DatabaseA managed database, when the project needs one
NotificationsBuilds and deployments, as they happen

The layout is resizable, and the panels are resizable between themselves, which matters more than it sounds once somebody is working on a small screen.

How the preview exists

Two facts make the preview work without a server of anybody else's:

  • The bundler is esbuild compiled to WebAssembly and run in a worker in the browser, which is why a project can be built without a build machine.
  • The preview is a sandboxed frame, so a project with a mistake in it cannot reach into the product's own page.

The file public/vendor/esbuild.wasm is the bundler, written by scripts/vendor.mjs, which runs automatically before pnpm dev. It is why an installation needs pnpm install to have run at least once before the workbench is useful.

Diffs, and why they matter more than the chat

When the assistant writes, it proposes. The proposal arrives in the inspector as a diff, and:

  • Accepting writes the file into the project.
  • Refusing writes nothing and costs nothing.
  • Accepting some and not others is a normal thing to do.

The version history beside it means a project can be rolled back to an earlier state, which is the second half of the safety story: nothing is lost by accepting the wrong change, as long as it was accepted knowingly.

Publishing a project

Choose a target

The deploy panel lists the targets this installation is configured for. Targets come from Platform → Deployments and the integration cards in Platform → Integrations, so an installation that offers none says so rather than failing at the last step.

Give it an address

A target usually wants a domain or subdomain. What a deployment ends up at, and whether it worked, is written down in the deploy panel and again in Platform → Deployments, where the whole history lives.

Watch it happen

Builds and deployments report into the notifications panel rather than into a modal that disappears. A failure keeps its log.

Roll back when it is wrong

A previous deployment can be made current again from the deploy panel, which is the reason the history exists.

Saving the code somewhere permanent

The GitHub panel saves a project into a repository. It uses the installation's connect application, so the token belongs to the person who connected it, and it can write only to repositories they chose. Whether the card is offered at all depends on the two GITHUB_CONNECT_ names, which are read by the app: the GitHub connect application.

A project is not a repository

A project lives in the installation's own storage, with its own version history. GitHub is an export that keeps working on its own, not the place a project is edited. Both are useful, and neither replaces the other.

When something in the workbench misbehaves