|
|
||
|---|---|---|
| .github/workflows | ||
| app | ||
| bootstrap | ||
| client | ||
| config | ||
| database | ||
| docker | ||
| integrations/zapier | ||
| public | ||
| resources | ||
| routes | ||
| scripts | ||
| storage | ||
| tests | ||
| .babelrc | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.docker | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .styleci.yml | ||
| LICENSE | ||
| README.md | ||
| _ide_helper_models.php | ||
| amplify.yml | ||
| artisan | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.yml | ||
| phpunit.xml | ||
| pint.json | ||
| server.php | ||
| vapor.yml | ||
README.md
OpnForm
An open-source form builder. It's an alternative to products like Typeform, JotForm, Tally etc.
Features
- No-code form builder, with infinite number of fields & submissions
- Text inputs, Date inputs, URL inputs, Phone inputs, Email inputs, Checkboxes, Select and Multi-Select inputs, Number Inputs, Star-ratings, File uploads & more
- Embed anywhere (on your website, in your Notion page, etc)
- Email notifications (for both form owner & form respondents)
- Hidden fields
- Form passwords
- URL form pre-fill
- Slack integration
- Webhooks
- Form logic
- Customize colors, add images or even some custom code
- Captcha form protection
- Form closing date
- Limit the number of submissions allowed
And much more!
Bounties
Get paid for contributing to OpnForm! Here are our open bounties:
Getting started with OpnForm
The easiest way to get started with OpnForm is with the official managed service in the Cloud.
It takes 1 minute to try out the builder for free. You'll have high availability, backups, security, and maintenance all managed for you.
Requirements
- PHP >= 8.0
- MySQL/MariaDB or PostgreSQL
- Node.js and NPM/Yarn/... to compile assets
Installation
Environment Setup
Before you can run the application, you need to set up the environment variables. We have provided a script that will automate the process of creating your .env files from the provided examples.
Follow these steps to set up your environment:
-
Make sure you have
opensslinstalled, as it is required by the setup script to generate secure keys. -
Run the setup script from the root of the project:
chmod +x ./scripts/setup-env.sh ./scripts/setup-env.shIf you are using Docker and want to prepare a Docker-specific environment, run the script with the
--dockerflag:./scripts/setup-env.sh --docker -
After running the script, review the
.envandclient/.envfiles to ensure all settings are correct for your environment.
Remember to never commit your .env files to version control. They should be kept private as they contain sensitive information.
Docker Installation 🐳
OpnForm can be easily set up using Docker. Pre-built images are available on Docker Hub, which is the recommended method for most users.
Prerequisites
- Docker
- Docker Compose
Quick Start
-
Clone the repository: <<<<<<< HEAD
git clone https://github.com/JhumanJ/OpnForm.git cd OpnForm -
Set up environment files:
cp .env.docker .env cp client/.env.docker client/.env
=======
```
git clone https://github.com/JhumanJ/OpnForm.git
cd OpnForm
```
-
Set up environment files by running the provided setup script. For detailed instructions, refer to the Environment Setup section above:
./scripts/setup-env.sh --docker
0a94004926```
-
Start the application:
docker-compose up -d -
Access OpnForm at http://localhost
🌐 Server Deployment Note: When deploying to a server, configure the app URLs in both
.envandclient/.envfiles. SetAPP_URLin.env, and bothNUXT_PUBLIC_APP_URL&NUXT_PUBLIC_API_BASEinclient/.env.
Customization
- Environment Variables: Modify
.envandclient/.envfiles to customize your setup. For example, to enable email features, configure a supported mail driver in the.envfile.
Upgrading
- Check the upgrade instructions for your target version in the documentation.
- Update your
docker-compose.ymlfile if necessary. - Apply changes:
docker-compose up -d
Initial Login
After installation, use these credentials to access the admin panel:
- Email:
admin@opnform.com - Password:
password
⚠️ Change these credentials immediately after your first login.
Note: Public registration is disabled in the self-hosted version. Use the admin account to invite additional users.
Building from Source
For development or customization, you can build the Docker images locally:
-
Build the images:
docker build -t opnform-ui:local -f docker/Dockerfile.client . docker build -t opnform-api:local -f docker/Dockerfile.api . -
Create a docker-compose override file:
cp docker-compose.override.yml.example docker-compose.override.ymlEdit the
docker-compose.override.ymlfile to use your locally built images:services: api: image: opnform-api:local ui: image: opnform-ui:local -
Start the application:
docker-compose up -d
This method allows you to make changes to the source code and rebuild the images as needed.
Clearing all resources
To completely remove all Docker containers, networks, and volumes created by docker-compose and also remove all images used by these services, you can use the following command:
docker-compose down -v --rmi all
Using Laravel Valet
This section explains how to get started locally with the project. It's most likely relevant if you're trying to work on the project. First, let's work with the codebase and its dependencies.
# Get the code!
git clone git@github.com:JhumanJ/OpnForm.git && cd OpnForm
# Install PHP dependencies
composer install
# Install JS dependencies
cd client && npm install
# Compile assets (see the scripts section in package.json)
npm run dev # or build
Now, we can configure Laravel. We just need to prepare some vars in our .env file, just create it with cp .env.example .env then open it!
Configure the desired database in the DATABASE_ section. You can fine tune your installation on the laravel documentation.
Run these artisan commands:
# Generate needed secrets 🙈
php artisan key:generate
php artisan jwt:secret # and select yes!
# Creates DB schemas
php artisan migrate
Now, create an S3 bucket (or equivalent). Create an IAM user with access to this bucket, fill the environment variables: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET. In your AWS bucket permissions, add the following under "Cross-origin resource sharing (CORS)":
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["PUT", "POST", "GET", "DELETE"],
"AllowedOrigins": ["*"],
"ExposeHeaders": []
}
]
🎉 Done! Enjoy your personal OpnForm instance at: http://opnform.test.
One-Click Deployment
Tech Stack
OpnForm is a standard web application built with:
- Laravel PHP framework
- NuxtJs Front-end SSR framework
- Vue.js 3 Front-end framework
- TailwindCSS
Contribute
You're more than welcome to contribute to this project. We don't have guidelines on this yet, but we will soon. In the meantime, feel free to ask any question here.
License
OpnForm is open-source under the GNU Affero General Public License Version 3 (AGPLv3) or any later version. You can find it here.