Forms and web services
Form Forge
A self-hosted form platform with an inspectable delivery pipeline. Run your own form service: publish versioned forms, collect responses in PostgreSQL, and deliver them to signed webhooks.
- Release
- v0.2.0, Oct 18, 2026
- Runs on
- Self-hosted: Node.js, PostgreSQL, Inngest; Docker Compose or Netlify
- License
- Apache-2.0
Open the public deployment: Requires signing in with GitHub, Google or GitLab. No service level is published for it.
What it looks like

pnpm install
cp apps/web/.env.example apps/web/.env
pnpm db:migrate
pnpm devWhat it does
Define a form as a schema, publish an immutable version, and collect responses through a hosted page, an embedded iframe or the public API. Every webhook delivery is signed and recorded with its attempts and errors, so you can see what happened to each response. Data stays in your PostgreSQL database.
Who it is for
- Teams that want forms on their own infrastructure instead of a SaaS form builder.
- Developers who need reliable webhook delivery with retries and diagnostics.
Limitations
- Not a hosted SaaS: you operate PostgreSQL, the web app and the background-job server.
- Sign-in uses GitHub, Google or GitLab OAuth; there are no email and password accounts.
- Unfinished responses are not collected, and workspace packages are not published to npm.
Typical uses
Collect sign-ups on your site
Embed a published form with automatic height, or post to the idempotent submission API from your own frontend.
Feed another system
Each response goes to a signed webhook through a transactional outbox with automatic retries and manual recovery.
Close intake on time
Pause a form, set a closing time or an acceptance limit, and show a custom closed message.
Download
Latest stable release v0.2.0, published Oct 18, 2026. Release notes for v0.2.0. Release data checked Oct 31, 2026 from GitHub Releases.
Any platform
Available files (1)
- Release source archive (.tar.gz), Any platform Source · Source · 371 kB · Package
Extract and follow the getting-started guide.
Verify a download
SHA256SUMS lists SHA-256 hashes for the release files. A matching hash shows that your file is identical to the one uploaded with the release. It is a checksum, not a signature from the author: it does not prove who built the file.
shasum -a 256 -c --ignore-missing SHA256SUMSFirst run
Install Node.js (22.22.2+, 24.15.0+ or 26+), pnpm 12.10.1 and PostgreSQL, and create a GitHub OAuth app.
Clone the repository, configure apps/web/.env, run the migrations and start the app:
pnpm install pnpm db:migrate pnpm devStart the local background-job server in another terminal:
npx --ignore-scripts=false inngest-cli@latest dev -u http://localhost:3000/api/inngestOpen localhost:3000, create a form, publish it and submit a test response.
Platforms and how they were checked
- Self-hosted with Docker ComposeDeclared support, no recorded runtime check
Production guide in deploy/README.md.
- NetlifyVerified running
The public deployment linked from the repository runs on Netlify.
- RespondentsDeclared support, no recorded runtime check
Hosted and embedded forms open in a modern web browser.
Documentation and support
Questions and bug reports go to the project’s issue tracker. Report security problems as described in its security policy.