Skip to main content

Running Locally

This covers working on inundated's source. For running a built instance in production, see Quick Start.

Prerequisites​

  • Go
  • Node.js
  • PostgreSQL — optional; the backend falls back to an in-memory store when no DATABASE_URL is set, which is enough for most day-to-day frontend/backend work.

Backend​

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

make dev runs go run cmd/server/main.go with defaults — in-memory store, text-format info logging, userless auth, listening on 0.0.0.0:8080.

Frontend​

In a separate terminal:

cd frontend
npm install
npm run dev

The frontend dev server opens at http://localhost:5173 and proxies API requests to the backend.

Connecting to a real Postgres database​

Set DATABASE_URL before starting the server — migrations are applied automatically on startup:

export DATABASE_URL="postgresql://user:password@localhost/inundated"
make dev

Testing the OIDC login flow​

make dev runs userless. To exercise the full authenticated flow locally against a mock provider, see Local Auth Testing.

Building for production​

Build a single self-contained binary (frontend assets embedded):

make build
./bin/inundated

Or build and push a multi-arch Docker image via buildx:

make image-push

Testing and linting​

make test # backend + frontend
make test-backend
make test-frontend

make lint # backend + frontend
make lint-backend
make lint-frontend
make lint-openapi # lints openapi/inundated.yaml with redocly