New Project
Router.so is headless form handling and lead routing for marketing-minded developers.

This is a simple router for forms. Watch a Demo
Router supports optional first-class forms without changing its headless endpoint contract. Forms can be published on forms.router.so, embedded in an approved website, or rendered through the included WordPress block and shortcode. See the Forms implementation notes and release runbook.
Before starting, ensure you have the following:
After creating your accounts, update your .env.example to be .env.local for running the application locally. Then, update the keys for each value.
Clone the Repository
git clone https://github.com/routerso/router.gitcd router/main
Install Dependencies
This project uses pnpm (see packageManager in package.json).
Install with pnpm so the pnpm.overrides security pins are applied — installing
with npm or yarn ignores them and pulls vulnerable transitive dependencies.
pnpm install --frozen-lockfile
Set Up Environment Variables
Ensure your .env file is correctly configured as mentioned above.
Generate the Database Migrations
pnpm db:generate
Run the Database Migrations
pnpm db:migrate
Start the Development Server
pnpm dev
Set Up Environment Variables
Ensure your .env file is correctly configured as mentioned above.
**Run Docker Command
docker compose up
Run pnpm audit to check for known vulnerabilities.
The pnpm.overrides block in package.json force-resolves transitive dependencies
that a direct dependency still pins to a vulnerable version (for example, next
pins postcss 8.4.31, and tailwindcss reaches a vulnerable glob via sucrase).
Each entry can be removed once the parent package ships a release that depends on a
patched version on its own — re-run pnpm audit after removing one to confirm.
Requires Node.js >= 20.9.0.
For any issues or questions, please open an issue on the GitHub repository.