Get Started
By the end of this tutorial you will have Henceforth running locally with the schema applied, and you will be logged into both Studio (the admin control plane) and App (the end-user workspace).
TODO(#787): install instructions land with the distribution spec; until then this tutorial assumes a source checkout of henceforth-labs/henceforth, built with the toolchain below.
Prerequisites
Section titled “Prerequisites”- Rust (stable toolchain) — rustup.rs
- Bun — bun.sh
- just —
cargo install justorbrew install just - Docker or Podman — for running PostgreSQL
1. Start PostgreSQL
Section titled “1. Start PostgreSQL”just db-upThis starts a PostgreSQL 18 container with SSL enabled.
2. Seed dev users
Section titled “2. Seed dev users”The server’s bootstrap process automatically creates two seed accounts on
first run. You can also run just db-seed to create them manually (before
the first server start).
| Username | Password | Role |
|---|---|---|
admin0 |
admin0 |
Admin (Studio access) |
user0 |
user0 |
Regular user (App access) |
3. Install UI dependencies
Section titled “3. Install UI dependencies”just ui-install4. Apply metadata
Section titled “4. Apply metadata”Start the server and apply the schema:
just serve &just applyStop the background server after apply completes (just stop or Ctrl-C).
5. Run the server
Section titled “5. Run the server”just serveDev mode is the default: no master key needed, auth is bypassed with a built-in admin principal, and the embedded UI is served at http://localhost:8080.
6. Log in
Section titled “6. Log in”Navigate to http://localhost:8080. You will be redirected to the login page.
- Sign in as admin0 / admin0 to access Studio (the admin control plane).
- Sign in as user0 / user0 to access App (the end-user workspace).
After login, the UI calls GET /auth/me to determine your role and redirects
you to the appropriate surface.
Verify
Section titled “Verify”Log out and sign back in as user0 to confirm you land in App, then again as
admin0 to confirm you land in Studio. If either sign-in redirects back to
the login page instead of the corresponding surface, re-run just apply and
confirm it completed without error before retrying.
What’s next
Section titled “What’s next”To model your own data, see Objects, Records, and Fields. To create your first record through the API, see Create records through the API.