Project setup | JSON | Program targets

Targets · JSON · Project setup

The JSON form has no project and no build — it is the stored representation of a module. This page is where that file lives, and how it is read and rendered onward.

JSON is the canonical command form every module is stored in — the interchange the other targets render from, not a language you run. These pages describe that form.

A module is one JSON document. A project is a directory of them — one file per top module, named for the module, with nothing else required: no manifest, no lockfile, no toolchain.

Each file is the exact tree of canonical nodes — every node detailed under object format and array format — it is the whole of the “source” for this target.

Nothing compiles or runs the JSON directly. The form exists to be read — validated against the schema and then rendered onward into one of the executable targets, which is where a real project setup begins.

The renderer is the only tool that consumes the JSON; from its output you follow the chosen target's own project setup to build and run.

Storing the module as canonical JSON means every tool — editor, renderer, diff, review — reads the same lossless record, and any target can be regenerated from it at any time without going back to a particular language. The file is the program; the languages are views of it.

Recommended articles