Skip to content

Set up a productive local environment

Beginner ⏱ 25 minutes

Install dependencies, seed test data, and exercise the core APIs locally so you can iterate without touching production.

Install dependencies

Clone the repository and install dependencies with npm install. Copy the environment template and fill in provider secrets for the integrations you want to exercise.

Checklist

  • Copy .env.example to .env
  • Set database credentials
  • Provide OAuth client IDs and secrets
Use docker-compose

Spin up the supporting infrastructure with docker-compose up to get Postgres, Redis, and supporting services that mirror production.

Seed accounts

Use the admin UI or the Accounts API to create a few test accounts. Connect both Gmail and Microsoft accounts if possible so you can explore provider-specific behaviours.

Fixtures

The repository ships with scripts in cli/setup.ts that create demo accounts and labels for you. They are safe to run multiple times.

Trigger activity

Kick off a historical sync and then send a few test emails so that realtime sync and webhooks fire. The test-webhook-server.js script in the repo prints deliveries to the console so that you can verify payloads.

Use the pubsub debugger

Scripts like debug-pubsub-status.js help you confirm that new messages are flowing through the queues as expected.

Inspect logs and metrics

Use the built-in pretty logger or pipe output through the provided test-pretty-logs.js script to get structured logs while developing. You can also query the /logs route directly to pull the latest entries.

Tailing background workers

The pub/sub workers run separately from the API. Make sure you start them with npm run dev:workers (or the equivalent) so that syncs progress locally.