JhumanJ/
OpnForm
g4t.io

OpnForm is an Open-source Form Builder Made With Laravel

by Paul Redmond

OpenForm is an open-source form builder made with Laravel, Vue.js, Tailwind CSS, and more.

README from JhumanJ/OpnForm Open on GitHub →

OpnForm

OpnForm is an open-source form builder.

Get Started

The easiest way to get started with OpnForm is to sign up for our managed service in the Cloud. You get support, backups, upgrades, and more. Your data is safe and secure, and you don't need to worry about maintenance or infrastructure. Check out our quick overview of cloud vs self-hosting.

Key Features

  • 🚀 No-code builder with unlimited forms & submissions
  • 📝 Various input types: Text, Date, URL, File uploads & much more
  • 🌐 Embed anywhere
  • 📧 Email notifications
  • 💬 Integrations (Slack, Webhooks, Discord)
  • 🧠 Form logic & customization
  • 🛡️ Captcha protection
  • 📊 Form analytics

For a complete list of features and detailed documentation, visit our Technical Documentation.

AI agents and MCP

OpnForm's remote MCP server lets AI agents create and preview a private form draft without requiring a login. OAuth adds workspace-aware form management and read-only submission search, statistics, and exports. The installable portable and native plugin package lives in plugins/opnform/. See the MCP integration guide.

Quick Start

The easiest way to get started with OpnForm is through our official managed service in the Cloud.

For self-hosted installations, please refer to our Deployment Guides. For local development, we provide a minimal Docker-based setup - check out our Docker Development Guide.

The client npm run build also checks the public form bundle size and eager dependencies. This check reads .nuxt/dist/client/_nuxt, independently of Nitro's deployment output directory (including AWS Amplify's .amplify-hosting). Run its regression tests from client/ with node --test scripts/check-public-form-bundle.test.mjs.

Form list performance

The dashboard fetches lightweight summaries in batches of 50. The API keeps its default page size of 10 and its maximum of 100 for other callers. It paginates forms before loading view and completed-submission counts for the returned IDs. Historical views use an index on form_statistics.form_id, and the aggregate is explicitly aliased as total_views_count so the model uses the preloaded value.

The index migration runs outside a transaction and uses CREATE INDEX CONCURRENTLY on PostgreSQL to keep writes available. It also recovers an invalid index left by an interrupted build. Run this migration through Laravel normally; do not wrap it in an external transaction. MySQL and SQLite use the standard schema index migration.

Codex worktrees

Codex creates an isolated local environment for each worktree. It uses a dedicated PostgreSQL Docker volume and local Laravel/Nuxt processes, so sibling worktrees do not share ports, data, or API configuration.

Use the Codex Start app, Reset DB, and Stop app actions when available. You can also run the scripts directly:

./scripts/codex-worktree-setup.sh
./scripts/codex-worktree-up.sh

The startup command prints the worktree-specific URL. Opening its root URL automatically signs in the local Codex admin (e2e@example.test / Abcd@1234). The seed also creates three forms, including five completed submissions across two public forms, so the dashboard and submission screens are immediately useful. Reset only the current worktree database with:

./scripts/codex-worktree-reset-db.sh

Run the browser suite against the running worktree with:

./scripts/codex-worktree-test-e2e.sh

PDF template fields

The PDF editor removes zones linked to deleted fields and lists them before you continue. Save the template to keep the cleanup. Mappings retain field names when created or saved, so deleted fields can still be identified. Older mappings without a saved name appear as “Deleted field” with their page number.

Support & Community

If you need help or have questions, please join our Discord community. For more information and assistance, check out the following resources:

License

OpnForm is open-source under the GNU Affero General Public License Version 3 (AGPLv3) or any later version. You can find it here.

Dual Licensing

OpnForm uses a dual-license model to make the project sustainable:

  • Core OpnForm (AGPL-3.0): The main application is free and open-source under AGPLv3, giving you the freedom to use, modify, and distribute it.
  • Enterprise Edition (Proprietary): Advanced features under api/app/Enterprise/ are available under our Enterprise License and Enterprise Terms. These features help fund ongoing development and keep OpnForm sustainable.

By offering Enterprise features alongside our open-source core, we can continue to invest in making OpnForm better for everyone while keeping the project financially sustainable.

More from the ecosystem

marcreichel/
laya-php
g4t.io
3 53

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Classify text in PHP without an LLM bill: typed decisions in 100+ languages, self-hosted. Laravel-ready SDK for Laya, a Jev AI alternative.

ai classification decision-engine
marcreichel/laya-php via Laravel News
Josh-Dovey/
postcodes-laravel
g4t.io
5 9

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Postcodes for Laravel adds typed GB postcode lookups, validation, geography data, distance searches, and test fakes through the GB Postcodes API.

Josh-Dovey/postcodes-laravel via Laravel News
RedberryProducts/
mailbox-for-laravel
g4t.io
4 115

Mailbox for Laravel: Preview and Test Rendered Email

Mailbox for Laravel captures outgoing mail in a local dashboard and lets you test rendered HTML, recipients, and attachments with fluent assertions.

RedberryProducts/mailbox-for-laravel via Laravel News