Go to file
Julien Nahum 0040f785da Fix readme image 2024-08-11 12:29:15 +02:00
.github/workflows Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
app fix date condition logic (#510) 2024-08-05 14:19:00 +02:00
bootstrap Initial commit 2022-09-20 21:59:52 +02:00
client Fix sizing issue with captcha 2024-08-08 12:00:36 +02:00
config Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
database Team functionality (#459) 2024-07-04 17:21:36 +02:00
docker Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
public Clean unused google api clients to reduce bundle size 2024-06-05 16:01:19 +02:00
resources Google Sheet integration fix (#493) 2024-07-17 14:22:54 +02:00
routes Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
storage Block Temporary mail addresses (#116) 2023-04-28 11:37:39 +02:00
tests Google Sheet integration fix (#493) 2024-07-17 14:22:54 +02:00
.babelrc Initial commit 2022-09-20 21:59:52 +02:00
.dockerignore Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
.editorconfig Initial commit 2022-09-20 21:59:52 +02:00
.env.docker Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
.env.example 2f3fd laravel 11 upgrade (#436) 2024-06-10 16:10:14 +02:00
.gitattributes Initial commit 2022-09-20 21:59:52 +02:00
.gitignore Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
.styleci.yml Initial commit 2022-09-20 21:59:52 +02:00
LICENSE Changing license to AGPL 2022-09-20 22:03:59 +02:00
README.md Fix readme image 2024-08-11 12:29:15 +02:00
_ide_helper_models.php Team functionality (#459) 2024-07-04 17:21:36 +02:00
amplify.yml Attempt to simplify build 2024-01-08 22:30:58 +01:00
artisan Initial commit 2022-09-20 21:59:52 +02:00
composer.json 2f3fd laravel 11 upgrade (#436) 2024-06-10 16:10:14 +02:00
composer.lock Docker compose setup (#513) 2024-08-05 12:06:20 +02:00
docker-compose.yml Fix UI image type (#516) 2024-08-06 10:28:13 +02:00
phpunit.xml Team functionality (#459) 2024-07-04 17:21:36 +02:00
pint.json Lint PHP code psr-12, add GH action 2024-02-23 11:54:12 +01:00
server.php Initial commit 2022-09-20 21:59:52 +02:00
vapor.yml Increase lambda memory in production 2024-02-11 12:20:38 +01:00

README.md

OpnForm

Github Stars Commits per month License Report a bug Ask a question Ask a question Ask a question Open Bounties Rewarded Bounties

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:

Bounties of OpnForm

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

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

  1. Clone the repository:

    git clone https://github.com/JhumanJ/OpnForm.git
    cd OpnForm
    
  2. Set up environment files:

    cp .env.docker .env
    cp client/.env.docker client/.env
    
  3. Start the application:

    docker-compose up -d
    
  4. Access OpnForm at http://localhost

🌐 Server Deployment Note: When deploying to a server, configure the app URLs in both .env and client/.env files. Set APP_URL in .env, and both NUXT_PUBLIC_APP_URL & NUXT_PUBLIC_API_BASE in client/.env.

Customization

  • Environment Variables: Modify .env and client/.env files to customize your setup. For example, to enable email features, configure a supported mail driver in the .env file.

Upgrading

  1. Check the upgrade instructions for your target version in the documentation.
  2. Update your docker-compose.yml file if necessary.
  3. 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:

  1. Build the images:

    docker build -t opnform-ui:local -f docker/Dockerfile.client .
    docker build -t opnform-api:local -f docker/Dockerfile.api .
    
  2. Create a docker-compose override file:

    cp docker-compose.override.yml.example docker-compose.override.yml
    

    Edit the docker-compose.override.yml file to use your locally built images:

    services:
        api:
            image: opnform-api:local
        ui:
            image: opnform-ui:local
    
  3. Start the application:

    docker-compose up -d
    

This method allows you to make changes to the source code and rebuild the images as needed.

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

Deploy to RepoCloud

Tech Stack

OpnForm is a standard web application built with:

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.