docs/community/run-in-local-machine.mdx
>=22 <23 and pnpm ^11.preinstall)After installing Node.js and pnpm, clone and set up your forked version of the project:
<Steps> <Step title="Clone the repository"> <Tabs> <Tab title="Novu Org"> ```shell git clone https://github.com/novuhq/novu.git cd novu ``` </Tab> <Tab title="Forked Repo"> ```shell git clone https://github.com/{YOUR_GITHUB_USER_NAME}/novu.git cd novu ``` </Tab> </Tabs> </Step> <Step title="Install all dependencies"> ```shell npm run setup:project ```This installs dependencies with pnpm, creates default `.env` files from `.example.env`, and builds the monorepo.
```shell
docker compose -f docker/local/docker-compose.yml up -d
```
```shell
pnpm dev:portless
```
**Alternative:** use the Jarvis CLI menu:
```shell
npm run start
```
On first run, Jarvis can also install OS dependencies via **Development environment setup**.
The recommended pnpm dev:portless command starts the Dashboard, API, Worker, and shared packages through Portless proxies. If you only want to run parts of the platform, use these commands from the repo root:
If you used npm run setup:project or Jarvis, default .env files are created automatically. To test certain parts of Novu or run it in production mode, you may need to change some values. These are the main environment variables:
<Note>
When using `pnpm dev:portless`, `scripts/portless-dev-env.mjs` resolves API, WebSocket, and Dashboard URLs at runtime. Run `PORTLESS=0 pnpm start:dashboard` to bypass Portless and use the values in your `.env` file directly.
</Note>
After making changes, run tests for the respective package using the appropriate commands.
To run API E2E tests through Jarvis, choose Test the project → API tests → API E2E tests.
You can also run them directly:
npm run start:worker:test
pnpm --filter @novu/api-service test:e2e:novu-v2
The tests create a new instance of Novu and a test database, then remove the test database when finished.
Dashboard E2E tests use Playwright. Start the API, Worker, and WebSocket services in test mode, then run Playwright:
npm run start:api:test
npm run start:worker:test
npm run start:ws:test
cd apps/dashboard && pnpm test:e2e
To open the Playwright UI for debugging:
cd apps/dashboard && pnpm test:e2e:ui
| Port | Service |
|---|---|
| 3000 | API |
| 3002 | WebSocket |
| 3003 | Webhook |
| 3004 | Worker |
| 4201 | Dashboard (local Vite dev server) |
| 4566 | LocalStack (S3) |
To run tests against the providers folder:
npm run test:providers
Jarvis includes a Development environment setup option that runs this script. It tries to install OS dependencies needed to run Novu locally before npm run setup:project. You still need git and Node.js installed beforehand.
The script can also be run directly:
npm run dev-environment-setup
On supported platforms it can: