Coder Social home page Coder Social logo

heyform / heyform Goto Github PK

View Code? Open in Web Editor NEW
5.7K 24.0 392.0 2 MB

HeyForm is an open-source form builder that allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.

Home Page: https://heyform.net

License: GNU Affero General Public License v3.0

Dockerfile 0.07% TypeScript 94.15% JavaScript 0.10% HTML 0.36% CSS 0.05% SCSS 5.28%
form quiz survey

heyform's Introduction

heyform logo

HeyForm is an open-source form builder that allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.

Website | Documentation | Blog | Twitter

HeyForm

Features

HeyForm simplifies the creation of conversational forms, making it accessible for anyone to gather information or feedback through engaging surveys, quizzes, and polls. We are committed to enhancing HeyForm with regular updates, including bug fixes, new features, and performance improvements.

Build Forms with Ease

  • 📝 Versatile Inputs: From basic text, email, and phone number fields to advanced options like picture choices, date pickers, and file uploads, HeyForm supports a wide array of input types.
  • 🧠 Smart Logic: Conditional logic and URL redirections for dynamic, adaptable forms.
  • 🔗 Powerful Integrations: Connect with webhooks, analytics, marketing platforms, and tools like Zapier and Make.com.

Customize to Your Brand

  • 🎨 Visual Themes: Tailor the look and feel of your forms to match your brand identity with customizable fonts, colors, backgrounds, and more.
  • Advanced Theming: Gain greater control with extensive customization options, including custom CSS for deeper personalization.

Analyze and Act on Data

  • 📊 Insightful Analytics: Gain insights with detailed analytics, including drop-off rates and completion rates.
  • 📤 Data Export: Easily export your form results to CSV for further analysis or integration into your systems.

Getting started with HeyForm

The simplest and most efficient way to dive into HeyForm is through our official hosted service. When you choose this cloud version, you're getting the advantage of high reliability, automatic backups, robust security, and hassle-free maintenance—all carefully managed by us, the passionate duo behind HeyForm.

Choosing our hosted version not only saves a significant amount of time and resources but also supports HeyForm's development and the open-source community. Get a great service while backing innovation. 💙

Structure

.
└── packages
    ├── answer-utils       (form submission utils for server and webapp)
    ├── shared-types-enums (shared types/enums for server and webapp)
    ├── utils              (common utils for server and webapp)
    ├── server             (node server)
    └── webapp             (react webapp)

Self-hosting

Interested in self-hosting HeyForm on your server? Take a look at the self-hosting installation instructions.

One Click Deployment

Deploy on Railway Deploy on Zeabur Deploy on Sealos

Local development

Follow the local installation instructions to run the project locally.

How to Contribute

You are awesome, let's build great software together. Head over to the contribute docs to get started. 💪

Support & Community

You'll find a lot of resources to help you get started with HeyForm in the help center. However, if you can't find what you're looking for there, don't hesitate to reach out to us:

License

HeyForm is open-source under the GNU Affero General Public License v3.0 (AGPL-3.0), you will find more information about the license and how to comply with it here.

heyform's People

Contributors

dearroy avatar eltociear avatar imsingee avatar imufeng avatar michaelyuhe avatar objccodingtogether avatar peterdavehello avatar vfasky avatar yangchuansheng avatar zonywhoop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heyform's Issues

Double form submissions

To Reproduce
Create a form
Fill it
check submissions

Expected behavior
Must be only one submissions

Screenshots
image

HeyForm:

  • Install: Selfhosted
  • Version: latest docker (0.0.4)

Desktop:

  • OS: Win11
  • Browser Chrome
  • Version 123.0.6312.86

Ranashahzaibmunawar

A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots or videos to help explain your problem.

HeyForm (please complete the following information):

  • Install: [heyform.net or self hosted]
  • Version: [commit sha if self hosted]

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 100]

Mobile (please complete the following information):

  • Device: [e.g. iPhone15]
  • OS: [e.g. iOS17.1]
  • Browser [e.g. stock browser, safari]

Self-hosted Slack Integration

I'm trying to follow the instructions here: https://docs.heyform.net/integrate-with-slack

I complete steps 1-3, and they all seem to work. I can even confirm my webhook works with Slack by using curl and sending a "Hello World" message to my Slack channel. But for step 4, I don't see any option to connect to slack. I just see a webhook option, and when I put the webhook URL into it, it doesn't work.

Screenshot 2024-04-05 at 6 41 22 PM

I can also watch the logs for my docker container and it shows it failed:

heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:45 AM   [Queue] WebhookQueue#2 started
heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:45 AM   [Queue] WebhookQueue#2 failed, attempts 1 of 3 times
heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:48 AM   [Queue] WebhookQueue#2 started
heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:48 AM   [Queue] WebhookQueue#2 failed, attempts 2 of 3 times
heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:51 AM   [Queue] WebhookQueue#2 started
heyform-heyform-1  | [Nest] 45   - 04/06/2024, 1:38:51 AM   [Queue] WebhookQueue#2 failed, attempts 3 of 3 times

"Hey" name is already established

The company 37signals develops the HEY email and HEY Calendar apps.

Then name of this project is confusing, as I initially thought it's a new product from 37signals.

This will cause confusion on the long run, causing annoyances both for this project and 37signals. It doesn't matter that both HEY Email and HeyForms are high quality products, it will probably cause worse brand awareness because of the confusion.

--

Sorry for the wrong report, please ignore this.

File upload is not working

A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'https://hey.diagramly.ai/form/da8boDn2'
  2. Click on 'Upload file'
  3. Select a file
  4. See file size is displayed but file is not uploaded.

Expected behavior
File is uploaded.

Screenshots

image

HeyForm (please complete the following information):

  • Install: Self-hosted
  • Version: Not sure where to find the version. We hosted it with docker-compose. It was setup on 4th April 2024.

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: Chrome
  • Version: Version 123.0.6312.105 (Official Build) (arm64)

Trojan Alert on Downloaded Zip

A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Download the repository as zip

Expected behavior
Not a trojan alert

Screenshots
image

HeyForm (please complete the following information):

  • Install: [self hosted]
  • Version: [commit sha if self hosted]

Desktop (please complete the following information):

  • OS: Windows
  • Browser: All
  • Version: 11

Failed to fetch error when creating a new account

Here's the compose file:

version: "3"

services:
  heyform:
    container_name: heyform_app
    image: heyform/community-edition:latest
    ports:
      - "8001:8000"
    depends_on:
      - mongo
      - redis
    environment:
      APP_HOMEPAGE_URL: http://127.0.0.1:8000
      COOKIE_DOMAIN: 127.0.0.1
      SESSION_MAX_AGE: 15d
      SESSION_KEY: "key1"
      FORM_ENCRYPTION_KEY: "key2"
      MONGO_URI: "mongodb://mongo:27017/heyform"
      UPLOAD_FILE_TYPES: ".jpg,.png,.bmp,.gif,.txt,.md,.doc,.docx,.xls,.xlsx,.csv,.ppt,.pptx,.pdf,.mp4,.wmv,.zip,.rar,.7z"
      REDIS_HOST: redis
      REDIS_PORT: 6379
      REDIS_DB: 0

  mongo:
    container_name: heyform_mongo
    image: mongo:4.4.29
    restart: "always"
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - /mnt/docker/containers/heyform/mongo:/data/db

  redis:
    container_name: heyform_redis
    image: redis
    restart: "always"
    command: "redis-server --appendonly yes"
    ports:
      - "6379:6379"
    volumes:
      - /mnt/docker/containers/heyform/redis/:/data

Everything starts now, but I am unable to create an account:

image

heyform docker not starting up

Hi,

I wanted to try out heyform and used the docker compose selfhosting example.

Sadly, my heyform container just crashes on startup with the following log:

> [email protected] migrate:seed
> mongoose-cli seed --name apps.ts

[mongoose-cli] Using environment "undefined"
[mongoose-cli] apps.ts: migrating
[mongoose-cli] Invalid URL

I tried with MONGO_URI set to mongodb://mongo:27017/heyform (as in the example), I tried with the example showing mongo authentication. I also tried renaming the mongo container. In all cases, the heyform container starts up for about 8-10 secs and then restarts. The only log entries are the ones provided above over and over again.
I did replace the key environment variables with my own random values.

My mongodb and redis are fresh containers only for this purpose, there is nothing in them. They start up as expected.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://docs.heyform.net/self-hosting and copy the "Run on your own computer" example
  2. docker compose up
  3. Look at the log of the restarting container

Expected behavior
heyform starts up.

HeyForm (please complete the following information):

  • Install: self hosted
  • Version: v0.0.6, latest container tag

Desktop (please complete the following information):

  • OS: Ubuntu 22.04.3

Submissions not properly displayed after schema change

If you change the schema after a form is published, new submissions are not properly displayed.

To Reproduce
Steps to reproduce the behavior:

  1. Publish a form and make a submission, you'll see 1 entry.
  2. Change the schema by deleting a field and adding one.
  3. Make another submission. You'll see "2 submissions" in summary, but only 1 submission in details. CSV export shows both submissions correctly.

HeyForm (please complete the following information):

  • Install: self hosted
  • Version: 0.0.5

Add hidden fields

Discussed in https://github.com/orgs/heyform/discussions/23

Originally posted by dearroy April 5, 2024
As suggested by the Discord community, the feature "hidden fields" was requested to bring external data to HeyForms.

Here's a use case: Let's say I have my survey embedded in an application and when a user clicks on the link abc?phone=3242424232, after they complete the survey, their phone number should automatically be connected.

Nodejs error with docker - cannot start Heyform

Here's the docker-compose file that I am using:

version: "3"

services:
  heyform:
    image: heyform/community-edition:latest
    ports:
      - "8001:8000"
    depends_on:
      - mongo
      - redis
    environment:
      APP_HOMEPAGE_URL: http://127.0.0.1:8000
      COOKIE_DOMAIN: 127.0.0.1
      SESSION_MAX_AGE: 15d
      SESSION_KEY: "key1"
      FORM_ENCRYPTION_KEY: "key2"
      MONGO_URI: "mongodb://mongo:27017/heyform"
      UPLOAD_FILE_TYPES: ".jpg,.png,.bmp,.gif,.txt,.md,.doc,.docx,.xls,.xlsx,.csv,.ppt,.pptx,.pdf,.mp4,.wmv,.zip,.rar,.7z"
      REDIS_HOST: redis
      REDIS_PORT: 6379
      REDIS_DB: 0
      # Assuming these are the minimum required for your setup
      # Add any other environment variables here that your application cannot run without

  mongo:
    image: mongo:4.4.29
    restart: "always"
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  redis:
    image: redis
    restart: "always"
    command: "redis-server --appendonly yes"
    ports:
      - "6379:6379"

However, I am getting this error and the heyform container just exits:

> [email protected] start /app
> node dist/main.js
/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/apollo-server/dist/exports.js:17
Object.defineProperty(exports, "GraphQLUpload", { enumerable: true, get: function () { return apollo_server_core_1.GraphQLUpload; } });
       ^
TypeError: Cannot redefine property: GraphQLUpload
    at Function.defineProperty (<anonymous>)
    at Object.<anonymous> (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/apollo-server/dist/exports.js:17:8)
    at Module._compile (node:internal/modules/cjs/loader:1364:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
    at Module.load (node:internal/modules/cjs/loader:1203:32)
    at Module._load (node:internal/modules/cjs/loader:1019:12)
    at Module.require (node:internal/modules/cjs/loader:1231:19)
    at require (node:internal/modules/helpers:177:18)
    at Object.<anonymous> (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/apollo-server/dist/index.js:30:14)
    at Module._compile (node:internal/modules/cjs/loader:1364:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
    at Module.load (node:internal/modules/cjs/loader:1203:32)
    at Module._load (node:internal/modules/cjs/loader:1019:12)
    at Module.require (node:internal/modules/cjs/loader:1231:19)
    at require (node:internal/modules/helpers:177:18)
    at Object.<anonymous> (/app/dist/utils/directives/lower.js:4:25)
Node.js v18.20.0
 ELIFECYCLE  Command failed with exit code 1.

Unable to disable registration

Even though the environment variable APP_DISABLE_REGISTRATION is set to true I can create new user accounts.

To Reproduce
Steps to reproduce the behavior:

  1. Set environment variable APP_DISABLE_REGISTRATION to true
  2. Go to http://heyform.local/login
  3. Click on "create an account"
  4. Fill out and submit form

Expected behavior

  1. There shouldn't be an option to create an account
  2. Account creation should be blocked

Screenshots

# inside docker container

/app # env | grep APP_DISABLE_REGISTRATION
APP_DISABLE_REGISTRATION=true

HeyForm:

  • Install: self hosted
  • Version: docker.io/heyform/community-edition@sha256:6f1b976464fe2aea8d2dbd9d565dccb81e9b219b82ff82720cac225e69a82072

Desktop:

  • OS: MacOS
  • Browser: Chrome
  • Version: 123.0.6312.107

docker 部署没有起来

部署后显示运行都正常, 但是访问 http://192.168.8.92:9091 没法访问

docker.env

[root@ERPNext-Basic-guanfangbanbenyanshi heyform]# cat docker.env
# https://docs.heyform.net/configuration

# App serve
# If you are developing locally, you can use http://[ip]:[port].
APP_HOMEPAGE_URL=http://192.168.8.92:9091

# If you are using docker:
# ports:
#  - "9090:8000"
# The url should be http://127.0.0.1:9090 but not :8000.

# If you are deploying to a server, please replace it with your domain.
# APP_HOMEPAGE_URL=https://heyform.net

# Auth
SESSION_MAX_AGE=15d
SESSION_KEY="key1"
FORM_ENCRYPTION_KEY="key2"

# Mongo
MONGO_URI="mongodb://localhost:27017/heyform"
MONGO_USER=
MONGO_PASSWORD=

# Upload
UPLOAD_FILE_TYPES=".jpg,.png,.bmp,.gif,.txt,.md,.doc,.docx,.xls,.xlsx,.csv,.ppt,.pptx,.pdf,.mp4,.wmv,.zip,.rar,.7z"

# SMTP
SMTP_FROM="HeyForm <[email protected]>"
SMTP_HOST="example.com"
SMTP_PORT=465
SMTP_USER=
SMTP_PASSWORD=

# Social login
APPLE_LOGIN_TEAM_ID=
APPLE_LOGIN_WEB_CLIENT_ID=
APPLE_LOGIN_KEY_ID=
APPLE_LOGIN_PRIVATE_KEY_PATH=

# https://docs.heyform.net/login-with-google
GOOGLE_LOGIN_CLIENT_ID=
GOOGLE_LOGIN_CLIENT_SECRET=

# Submission spam filter
AKISMET_KEY=

# Anti bot
# https://www.geetest.com/en/
GEETEST_CAPTCHA_ID=
GEETEST_CAPTCHA_KEY=

# https://www.google.com/recaptcha/about/
GOOGLE_RECAPTCHA_KEY=
GOOGLE_RECAPTCHA_SECRET=

# Bull & redis
BULL_JOB_ATTEMPTS=3
BULL_JOB_BACKOFF_DELAY=3000
BULL_JOB_BACKOFF_TYPE=fixed

REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0

# Unsplash
UNSPLASH_CLIENT_ID=

# Stripe
# https://docs.heyform.net/connect-with-stripe
STRIPE_PUBLISHABLE_KEY=pk_
STRIPE_SECRET_KEY=sk_
STRIPE_CONNECT_CLIENT_ID=ca_
STRIPE_WEBHOOK_SECRET_KEY=whsec_

docker-compose.yml

version: "3"

services:
  heyform:
    image: heyform/community-edition:latest
    restart: "always"
    env_file: ./docker.env
    ports:
      - "9091:8000"
    depends_on:
      - mongo
      - redis

  mongo:
    image: mongo:4.4.29
    restart: "always"
    ports:
      - "27017:27017"

  redis:
    image: redis
    restart: "always"
    command: "redis-server --appendonly yes"
    ports:
      - "26379:6379"

Persist Data for Docker Compose

I have the project set up under Docker Compose following the self-hosted instructions.

From the documentation, I'm using the basic docker-compose.yml file:

version: "3"

services:
  heyform:
    image: heyform/community-edition:latest
    restart: "always"
    depends_on:
      - mongo
      - redis
    ports:
      - "9513:8000"
    environment:
      # The homepage of a website is the URL that you open in your browser
      # The port here should be consistent with the exposed one (should be 9513 NOT 8000)
      APP_HOMEPAGE_URL: http://127.0.0.1:9513
      SESSION_KEY: "key1"
      FORM_ENCRYPTION_KEY: "key2"
      MONGO_URI: "mongodb://mongo:27017/heyform"
      REDIS_HOST: redis
      REDIS_PORT: 6379

  mongo:
    image: mongo:4.4.29
    restart: "always"
    ports:
      - "27017:27017"

  redis:
    image: redis
    restart: "always"
    command: "redis-server --appendonly yes"
    ports:
      - "6379:6379"

Recently, I decided to update the images. I ran docker compose pull and docker compose up -d but then I realized all my data was destroyed.

Then I noticed that in this docker-compose.yml file, there are no persistent volumes.

What volumes should I persist in order to make sure that my data isn't destroyed between bringing a container down and spinning it back up again?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.