
Router.so / Open Source Form Backend
Description
This is a simple router for forms. Watch a Demo
Self-Hosting router
Prerequisites
Before starting, ensure you have the following:
- An account with Resend
- An account with Vercel
- A PostgreSQL database (we recommend Vercel Postgres)
Environment Variables
After creating your accounts, update your .env.example to be .env.local for running the application locally. Then, update the keys for each value.
Step-by-Step Instructions
-
Clone the Repository
git clone https://github.com/routerso/router.gitcd router/main
Without Docker
-
Install Dependencies
This project uses pnpm (see
packageManagerinpackage.json). Install with pnpm so thepnpm.overridessecurity 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
.envfile 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
With docker
-
Set Up Environment Variables
Ensure your
.envfile is correctly configured as mentioned above. -
**Run Docker Command
docker compose up
Deploying to Vercel
- Push your code to a GitHub repository.
- Connect your repository to Vercel.
- Set the environment variables in Vercel's dashboard under "Settings > Environment Variables".
Dependency Maintenance
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.
Additional Resources
For any issues or questions, please open an issue on the GitHub repository.


