Before you begin

The development environment is deliberately reproducible.

dam.rs uses mise for the Rust, Node, PostgreSQL client and media toolchain versions. Docker runs PostgreSQL with pgvector and SeaweedFS, the local S3-compatible object store.

You need mise, Docker with Compose, and enough disk space for images, build output and local object storage. The repository does not assume a globally installed Rust or Node version.

Install and seed

  1. 01

    Install the pinned dependencies

    Run mise from the repository root. It installs the versions described by the project rather than whatever happens to be on the machine.

  2. 02

    Start PostgreSQL and object storage

    The development Compose file starts the services and health checks expected by the API and worker.

  3. 03

    Create the development tenant

    The seed task migrates the database and prints a development API key once. Treat the key as a credential even though it belongs only to the local stack.

Repository root shell
mise install
mise run up
mise run dev:seed

Start the three processes

Keep each long-running process in its own terminal.

Terminal 1 · API shell
mise run dev:api
Terminal 2 · worker shell
mise run dev:worker
Terminal 3 · Svelte app shell
mise run dev:web

Connect and verify

Open the URL printed by Vite, go to Settings, and paste the key from dev:seed. The development client keeps that key in this browser only.

Visit Assets after connecting. A new tenant is expected to be empty. Upload a small image and watch it move from the upload queue into the grid; that proves the API, object store, worker, derivative path and search index are all participating.

Fast health check shell
curl -fsS http://127.0.0.1:8080/health
curl -fsS http://127.0.0.1:8080/ready