Skip to main content

Quick Start

The minimal path to a running, production-style inundated instance: a Postgres database and the app pointed at it. No authentication required — inundated runs in userless mode (single shared workspace, no login) until you configure OIDC.

1. Provision Postgres​

Any reachable PostgreSQL server works. For a quick local one:

docker run -d --name inundated-db \
-e POSTGRES_USER=inundated \
-e POSTGRES_PASSWORD=inundated \
-e POSTGRES_DB=inundated \
-p 5432:5432 \
postgres:16-alpine

inundated applies its own schema migrations on startup — you don't need to create any tables yourself.

2. Get the app​

Option A — build the Docker image:

git clone https://github.com/LarssonOliver/inundated.git
cd inundated
docker build -f build/Dockerfile -t inundated .

Option B — build a binary (requires Go and Node.js):

git clone https://github.com/LarssonOliver/inundated.git
cd inundated
make build

This produces ./bin/inundated, a single self-contained binary with the frontend assets embedded.

3. Run it​

Point DATABASE_URL at your Postgres instance and start the app:

# Docker
docker run -d --name inundated \
-e DATABASE_URL="postgresql://inundated:[email protected]:5432/inundated" \
-p 8080:8080 \
inundated

# Binary
export DATABASE_URL="postgresql://inundated:inundated@localhost:5432/inundated"
./bin/inundated

Open http://localhost:8080 — you should see the timesheet, empty and ready to use.

That's the whole minimal setup. Everything else is optional hardening:

  • Put a TLS-terminating reverse proxy in front of it before exposing it beyond localhost — see Reverse Proxy.
  • Add per-user accounts via OIDC — see Authentication.
  • The full set of flags and environment variables (host/port, logging, etc.) is in Environment Variables.