Try Observer with a fully populated database in under 5 minutes. The seed command fills the database with realistic test data — people, projects, support records, migration history, households, and more — so you can explore every feature without entering data by hand.

Quick start

git clone https://github.com/lbrty/observer.git
cd observer
just build
./observer setup
docker compose up -d
./observer migrate up
./observer seed
./observer serve

Open http://localhost:9000/health — you should see {"status":"healthy"}.

Start the web interface:

cd packages/observer-web
bun install
bun run dev

Open http://localhost:5173 and log in with admin@example.com / password.

What the seed command creates

WhatDetails
Reference dataCountries, states, places, offices, categories
UsersAdmin + staff accounts, all with password password
Projects2 projects (configurable with --projects)
People50 per project (configurable with --people)
Support recordsConsultation records linked to people
Migration recordsMovement history with origin/destination places
HouseholdsFamily groupings with members
NotesCase notes attached to people
PetsPet records with tags
TagsProject-scoped labels for categorization

Default credentials

EmailPasswordRole
admin@example.compasswordAdmin

Custom seed options

# More projects and people
./observer seed --projects 5 --people 200

# Reproducible data (same seed = same output)
./observer seed --seed 42
The seed command truncates ALL tables before inserting data. Never run it against a production database.

Step-by-step breakdown

1. Build

just build

Compiles the observer binary.

2. Setup

./observer setup

Creates .env with sensible defaults, keys/ and data/uploads/ directories, and generates a 4096-bit RSA key pair for JWT signing. If .env already exists, it will ask before overwriting.

3. Start services

docker compose up -d

Starts PostgreSQL and Redis in the background.

4. Migrate

./observer migrate up

Applies all database migrations.

5. Seed

./observer seed

Fills the database with demo data. This is the step that makes the difference between a blank instance and a working demo you can show to stakeholders.

6. Run

./observer serve

Starts the API server on http://localhost:9000.

7. Frontend (optional)

cd packages/observer-web
bun install
bun run dev

Starts the web interface on http://localhost:5173.

Reset

To wipe everything and start fresh:

docker compose down -v

Then re-run from step 3.