Go to file
Philip Gatzka 49d1a237ef
Add docker compose setup (#73)
* Add docker compose setup

* Shorten healthcheck interval for faster startup

* Add .env file for docker setup. Take changes in composer/package-lock into account.

* Add readme entry

* JWT force command + readme minor changes

* Udpated readme

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2023-02-22 19:13:32 +01:00
.github/workflows Added github workflow, clean remaning spatie stuff 2022-09-21 09:17:56 +02:00
app File upload fixes (#93) 2023-02-22 17:00:07 +01:00
bootstrap Initial commit 2022-09-20 21:59:52 +02:00
config fix: navbar help link (#77) 2023-01-26 09:33:43 +01:00
database [Added] Discord Webhook Notification (#81) (#83) 2023-02-19 13:19:16 +01:00
public Better code split for faster pages + image compression 2022-12-14 10:27:21 +01:00
resources char count for textarea (#94) 2023-02-22 17:41:37 +01:00
routes Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
storage Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
tests Form visibility closed (#91) 2023-02-19 13:11:50 +01:00
.babelrc Initial commit 2022-09-20 21:59:52 +02:00
.editorconfig Initial commit 2022-09-20 21:59:52 +02:00
.env.docker Add docker compose setup (#73) 2023-02-22 19:13:32 +01:00
.env.example Add default s3 filesystem 2023-01-10 14:59:46 +01:00
.eslintrc.js Initial commit 2022-09-20 21:59:52 +02:00
.gitattributes Initial commit 2022-09-20 21:59:52 +02:00
.gitignore Add docker compose setup (#73) 2023-02-22 19:13:32 +01: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
Makefile Add docker compose setup (#73) 2023-02-22 19:13:32 +01:00
README.md Add docker compose setup (#73) 2023-02-22 19:13:32 +01:00
artisan Initial commit 2022-09-20 21:59:52 +02:00
composer.json Fix JS middlewares ⚒️ 2023-01-27 18:55:02 +01:00
composer.lock Fix JS middlewares ⚒️ 2023-01-27 18:55:02 +01:00
docker-compose.yml Add docker compose setup (#73) 2023-02-22 19:13:32 +01:00
package-lock.json fix: navbar help link (#77) 2023-01-26 09:33:43 +01:00
package.json Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
php-cli.Dockerfile Add docker compose setup (#73) 2023-02-22 19:13:32 +01:00
phpunit.xml Fix JS middlewares ⚒️ 2023-01-27 18:55:02 +01:00
postcss.config.js Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
server.php Initial commit 2022-09-20 21:59:52 +02:00
tailwind.config.js Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
vapor.yml Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00
vite.config.js Migrate to Vite (#71) 2023-01-21 12:57:37 +01:00

README.md

OpnForm

Build Status

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!

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 🐳

There's a docker compose setup automating most of the manual steps:

make up

The application is now running on http://localhost:4000. Alternatively, you may use the compose setup on its own

# Start the application
docker compose up -d server

# Run php commands, for example
docker compose run php-cli artisan about

# ...or update npm dependencies
docker compose run node-cli npm ci

make keeps track of all executed targets using .make.* files. In case you'd like to start from scratch (re-install dependencies, reset jwt token, run migrations, ...), run

make clean

After that, make will re-execute all targets upon the next execution.

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 and JS dependencies
composer install && 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.

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.