Explore a browser application

Want a website rather than a JSON API? The existing browser starter is a project-and-task workspace: sign in, create a project, and manage its tasks.

It renders HTML on the server. HTMX enhances forms; native form submissions also work without JavaScript. You do not need a separate single-page application.

<img src={require('@site/static/img/starter/login.webp').default} alt="Server-rendered sign-in page from the starter" width="360" />

The sign-in page that ships with the starter.

What you will use

In the browser

  • A sign-in form and session cookie.
  • A project workspace and task forms.
  • Search, pagination, and complete/reopen actions.

In the Rust process

  • HTML handlers calling application services.
  • Authentication and CSRF components.
  • Owner-scoped queries to TimescaleDB.

Run the existing starter

Prerequisites: Docker with Compose, available ports 3001 and 3003, and this checkout. The first build needs network access and may take a while.

From the repository root:

sh
docker compose -f examples/htmx-starter/compose.yaml build app
docker compose -f examples/htmx-starter/compose.yaml --profile setup run --rm migrate
docker compose -f examples/htmx-starter/compose.yaml --profile setup run --rm seed
docker compose -f examples/htmx-starter/compose.yaml up -d

The steps are separate on purpose: build the app, migrate the database, seed local demo data, then start it. Normal startup does not migrate or seed.

Open http://localhost:3001/ and sign in with the development fixture:

FieldLocal demo value
Identifier[email protected]
Passworddemo-password

The seed command does not overwrite an existing password. If you reuse an old database, the credentials may differ. Do not delete a database to fix this without first checking whether it contains work you need.

After sign-in you land on the workspace:

<img src={require('@site/static/img/starter/workspace.webp').default} alt="The workspace: create a project on top, then add, edit, complete, and search its tasks below" />

Development fixture only

These credentials are public. Do not run this seed in production. Sessions and CSRF keys in the starter are process-local; this is not a multi-replica deployment recipe.

Try an actual user task

  1. Create a project. Give it a name you recognize.
  2. Add a task. The browser submits a protected form; a service performs the change.
  3. Complete and reopen it. The server updates the task and renders the result.
  4. Reload the page. Data lives in the database, not browser memory.

These interactions show the framework's pieces working together. The browser is one caller of the application services, not where their business rules belong.

Build your own page next

To stop the local stack without deleting volumes:

sh
docker compose -f examples/htmx-starter/compose.yaml down
IET Framework documentation — built with the IET Framework.