Skip to content

Local setup

Requirements

Ruby4.0.1 — pinned in .ruby-version
PostgreSQLThree databases: primary, cache, cable
NodeOnly for these docs. The app uses importmap and Propshaft and needs no Node build.

Ruby is managed with mise, so every Ruby and Rails command is prefixed:

bash
mise exec -- bin/rails test

First run

bash
bin/setup

Installs gems, prepares the databases and seeds. Seeds create the permission catalogue, the system role templates, the GCC countries and a development account with a user at dev@verity.test (password from VERITY_DEV_PASSWORD, defaulting to password).

Running it

bash
bin/dev

Starts the Rails server and the Solid Queue worker together. Do not run the server by hand if you want jobs processed — asynchronous checks and webhook deliveries need the worker.

The three databases

config/database.yml defines primary, cache and cable, each with its own schema file.

db:migrate can empty the auxiliary schemas

Running a migration re-dumps every configured database. If your local verity_development_cache and verity_development_cable databases do not have their tables, the dump writes emptydb/cache_schema.rb and db/cable_schema.rb back over the real ones.

test/config/solid_store_installation_test.rb catches it. To avoid it, make sure those two databases are prepared; if it has already happened, restore the two files from git.

Providers locally

Real provider credentials are not needed for most work. .claude/launch.json defines a wathq-mock server alongside the app for Wathq calls, and adapter tests inject payloads directly.

Provider configuration is read from environment variables — see the operability runbook in docs/ for each provider's required keys.

Useful commands

bash
mise exec -- bin/rails test                      # the full suite
mise exec -- bin/rails test test/invariants/     # the honesty invariants
mise exec -- bin/rails console
mise exec -- bin/ci                              # everything CI runs
bash
DESIGN_AUDIT=1 mise exec -- bin/rails test test/design_audit/

Screenshot capture of every screen at desktop and mobile widths, into tmp/design_audit/. Skipped during a normal run.

Helper scripts

ScriptPurpose
script/dev_http_session.shCookie-jar and CSRF-aware helpers for driving the dev server over HTTP
script/dev_review_cycle_fixture.rbBuilds a realistic review cycle locally
script/dev_isic_fixture.rbLoads ISIC vocabulary fixtures
script/dev_smoke_testProvider smoke checks