Run Grout locally
Install the application, create the database, and explore the demo.
This guide creates a local PostgreSQL database, applies migrations, and loads the demo company.
Check prerequisites
Install Node.js 22.18.0, npm 10.9.3, and Docker Desktop. Grout uses
a dedicated PostgreSQL 16 container for each worktree.
Install and start the application
npm install
cp .env.example .env.local
npm run dev:isolatedOpen http://localhost:3000.
The command applies committed migrations, provisions the restricted
grout_app role, seeds an empty database, and starts the app through
that role. It reuses only this worktree's disposable database. Run
npm run db:local:down when you want to remove its container and volume.
npm run db:seed deletes existing application data before recreating the demo company.
Sign in with demo accounts
Signing in goes through Clerk, so set CLERK_SECRET_KEY and
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY before seeding. The seed creates each demo
persona in Clerk and gives it the password in E2E_PERSONA_PASSWORD.
| Role | |
|---|---|
| Admin | admin@getgrout.com |
| Provider | maria@getgrout.com |
| Customer | nina@example.dev |
Without Clerk keys the seed still runs and every other part of the application works — there is simply no way to sign in, and the seed says so when it finishes.
Your Clerk instance must not have Force organization selection enabled. Grout treats somebody with no organization membership as a customer, so forcing the choice leaves every customer with a pending session and no way in.
The seed also prints a demo API key and creates an embedded form.
Explore the main workflows
- Open
/bookand create a native booking - Open
/adminand review the booking, calendar, and dispatch queues - Open
/proas Maria and update a job through its work states - Open
/accountas Nina and manage a booking or payment method - Open
/docs/playgroundand inspect the API
Run verification
npm test
npm run test:migrations
npm run typecheck
npm run lint
npm run build
npm run test:e2eRead Configure Grout before enabling production integrations.