Quickstart
This runs every role of the engine in one process against a local PostgreSQL, with the editor served at /editor/. The commands run from the root of the SeeAMess repository.
Get the code
Section titled “Get the code”git clone <repository URL> seeamesscd seeamessPrerequisites
Section titled “Prerequisites”- nix, which the
scripts/wrappers use to provide Rust, .NET 10 and PostgreSQL 17. No Docker is needed for SeeAMess itself. - pnpm for the editor.
Run the engine
Section titled “Run the engine”-
Start PostgreSQL.
scripts/postgresruns PostgreSQL 17 from nix.scripts/postgres start -
Build the editor’s static files.
pnpm -C editor install && pnpm -C editor build -
Build the engine.
scripts/cargo build --release -
Start it with a dev token and the editor directory.
SEEAMESS_DATABASE_URL=$(scripts/postgres url) SEEAMESS_DEV_TOKEN=dev \SEEAMESS_EDITOR_DIR=$PWD/editor/dist engine/target/release/seeamessMigrations run at start. With no
SEEAMESS_ROLES, the binary runs every role and listens on127.0.0.1:5080. -
Open
http://127.0.0.1:5080/editor/and sign in with the dev tokendev.
Push a schema
Section titled “Push a schema”An empty engine has no content types. Define them in Rust or C# (see Define content types), then push the manifest. With the sample models in the repository:
SEEAMESS_CARGO_DIR=sdk/rust scripts/cargo run -p site-models -- --out manifest.jsonengine/target/release/seeamess schema push --manifest manifest.json \ --url http://127.0.0.1:5080 --token devThe command prints the plan: the types and fields added, changed and removed. Reload the editor and create and publish some content.
Read what you published
Section titled “Read what you published”Delivery needs no token for public content. Content by ID works right away; paths resolve below a site’s start page, so register a site first (in the editor under Admin → Sites and hosts, or with PUT /authoring/v1/sites/{id}):
curl 'http://127.0.0.1:5080/delivery/v1/route?path=/en/'curl 'http://127.0.0.1:5080/delivery/v1/content/<id>?locale=en&expand=1'Every response carries an ETag; send it back in If-None-Match and you get a 304 with no body. See HTTP APIs.
Run the checks
Section titled “Run the checks”scripts/check runs every suite: engine, Rust SDK, .NET SDK, editor and this website. scripts/check engine (or rust-sdk, dotnet, editor, site) runs one.
- Architecture and modules: what the roles do and how to split them.
- Run on top of Optimizely: sync a live Optimizely site into the engine you just started.