Linted
This commit is contained in:
parent
e0eb7f129f
commit
cd6f6f640d
228
README.md
228
README.md
@ -1,187 +1,75 @@
|
|||||||
TellForm 2.1.0
|
OhMyForm 0.2.1
|
||||||
========
|
========
|
||||||
|
|
||||||
[](https://www.codeshelter.co/)
|
<!-- TODO: Code Shelter maybe. -->
|
||||||
[](https://travis-ci.org/tellform/tellform)
|
<!-- [](https://www.codeshelter.co/) -->
|
||||||

|
<!-- TODO: Travis CI maybe. -->
|
||||||
[](https://www.codacy.com/app/david-baldwin/tellform?utm_source=github.com&utm_medium=referral&utm_content=tellform/tellform&utm_campaign=Badge_Grade)
|
<!-- [](https://travis-ci.org/tellform/tellform) -->
|
||||||
|

|
||||||
|
<!-- TODO: Codeacy maybe. -->
|
||||||
|
<!-- [](https://www.codacy.com/app/david-baldwin/tellform?utm_source=github.com&utm_medium=referral&utm_content=tellform/tellform&utm_campaign=Badge_Grade) -->
|
||||||
<!--
|
<!--
|
||||||
Moving over to Discord so that I can manage things without hassle.
|
Moving over to Discord so that I can manage things without hassle.
|
||||||
[](https://gitter.im/tellform/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
[](https://gitter.im/tellform/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
-->
|
-->
|
||||||

|

|
||||||
> An *opensource alternative to TypeForm* that can create [stunning mobile-ready forms](https://tellform.com/examples) , surveys and questionnaires.
|
> An *open source alternative to TypeForm* that can create [stunning mobile-ready forms](https://ohmyform.com/examples) , surveys and questionnaires.
|
||||||
|
|
||||||
[](https://heroku.com/deploy?template=https://github.com/tellform/tellform/tree/master)
|
[](https://heroku.com/deploy?template=https://github.com/ohmyform/ohmyform/tree/production)
|
||||||
|
|
||||||
## Table of Contents
|
##Table of Contents
|
||||||
|
|
||||||
- [Features](#features)
|
<!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
|
||||||
- [How to Contribute](#how-to-contribute)
|
|
||||||
- [Quickstart](#quickstart)
|
|
||||||
- [Deploying with Docker](#deploying-with-docker)
|
|
||||||
- [Testing your Application](#testing-your-application)
|
|
||||||
- [Advanced Configuration](#configuration)
|
|
||||||
- [Where to Get Help](#where-to-get-help)
|
|
||||||
- [Sponsors](#sponsors)
|
|
||||||
- [Backers](#backers)
|
|
||||||
- [Contributors](#contributors)
|
|
||||||
- [Mentions on the Web](#mentions-on-the-web)
|
|
||||||
|
|
||||||
## Features
|
- [Table of Contents](#table-of-contents)
|
||||||
|
- [Features](#features)
|
||||||
|
- [Currently following features are implemented:](#currently-following-features-are-implemented)
|
||||||
|
- [On the Roadmap for v1.0.0](#on-the-roadmap-for-v100)
|
||||||
|
- [How to Contribute](#how-to-contribute)
|
||||||
|
- [Quickstart](#quickstart)
|
||||||
|
- [Configuration](#configuration)
|
||||||
|
- [Where to get help](#where-to-get-help)
|
||||||
|
- [Sponsors](#sponsors)
|
||||||
|
- [Backers](#backers)
|
||||||
|
- [Contributors](#contributors)
|
||||||
|
- [Mentions on the Web](#mentions-on-the-web)
|
||||||
|
|
||||||
### Currently following features are implemented:
|
<!-- /TOC -->
|
||||||
|
|
||||||
- Multi-Language Support
|
##Features
|
||||||
- 11 possible question types
|
|
||||||
- Editable start and end pages
|
|
||||||
- Export Submissions to XLS, JSON or CSV
|
|
||||||
- Native Analytics and Google Analytics Support
|
|
||||||
- Custom Subdomains for each User
|
|
||||||
- Embeddable Forms
|
|
||||||
- Forms as a Service API
|
|
||||||
- Deployable with Heroku and DockerHub
|
|
||||||
|
|
||||||
### On the Roadmap for v3.0.0
|
###Currently following features are implemented:
|
||||||
- Implement encryption for all form data
|
|
||||||
- Add Typeform API integration
|
|
||||||
- Add plugin/3rd party integration support (ala Slack)
|
|
||||||
- Create wiki for easy installation and setup
|
|
||||||
- Add Stripe/Payment Form field
|
|
||||||
- Add Custom Background and Dropdown Field Images
|
|
||||||
- Add File Upload Form Field
|
|
||||||
|
|
||||||
|
- Multi-Language Support
|
||||||
|
- 11 possible question types
|
||||||
|
- Editable start and end pages
|
||||||
|
- Export Submissions to XLS, JSON or CSV
|
||||||
|
- Native Analytics and Google Analytics Support
|
||||||
|
- Custom Subdomains for each User
|
||||||
|
- Embeddable Forms
|
||||||
|
- Forms as a Service API
|
||||||
|
- Deployable with Heroku and DockerHub
|
||||||
|
|
||||||
|
### On the Roadmap for v1.0.0
|
||||||
|
- Implement encryption for all form data
|
||||||
|
- Add Typeform API integration
|
||||||
|
- Add plugin/3rd party integration support (ala Slack)
|
||||||
|
- Create wiki for easy installation and setup
|
||||||
|
- Add Stripe/Payment Form field
|
||||||
|
- Add Custom Background and Dropdown Field Images
|
||||||
|
- Add File Upload Form Field
|
||||||
|
|
||||||
|
|
||||||
|
<!-- TODO: add a CONTRIBUTING.md.
|
||||||
## How to Contribute
|
## How to Contribute
|
||||||
|
|
||||||
Please checkout our CONTRIBUTING.md on ways to contribute to TellForm.
|
Please checkout our CONTRIBUTING.md on ways to contribute to TellForm. -->
|
||||||
|
|
||||||
All contributors are eligible to get a free [TellForm Sticker](https://www.stickermule.com/marketplace/15987-tellform-round-sticker). All you have to do is submit a PR, get it accepted, email your address to team [at] tellform.com and we'll send you a sticker that you can proudly put on your laptop.
|
##Quickstart
|
||||||
|
|
||||||
## Quickstart
|
Follow documentation hosted on [OhMyForm.com](https://OhMyForm.com/) it will be the main and hopefully only location to obtain the up to date documentation.
|
||||||
|
|
||||||
Before you start, make sure you have
|
##Configuration
|
||||||
1. [Redis](https://redis.io/) installed and running at 127.0.0.1:6379
|
|
||||||
2. [MongoDB](https://www.mongodb.com/) installed and running at 127.0.0.1:27017 (OR specify the host and port in config/env/all)
|
|
||||||
|
|
||||||
Also make sure to install [DNS Masq](http://www.thekelleys.org.uk/dnsmasq/doc.html) or equivalent if running it locally on your computer (look at dns_masq_setup_osx for instructions on OSX)
|
|
||||||
|
|
||||||
Install dependencies first.
|
|
||||||
```bash
|
|
||||||
$ npm install
|
|
||||||
$ bower install
|
|
||||||
```
|
|
||||||
|
|
||||||
Setup environment.
|
|
||||||
```bash
|
|
||||||
$ grunt build
|
|
||||||
```
|
|
||||||
|
|
||||||
Create your user account
|
|
||||||
```bash
|
|
||||||
$ node ./scripts/setup.js
|
|
||||||
```
|
|
||||||
|
|
||||||
OR create your .env file
|
|
||||||
```
|
|
||||||
GOOGLE_ANALYTICS_ID=yourGAID
|
|
||||||
PRERENDER_TOKEN=yourPrerender.ioToken
|
|
||||||
COVERALLS_REPO_TOKEN=yourCoveralls.ioToken
|
|
||||||
BASE_URL=localhost
|
|
||||||
DSN_KEY=yourPrivateRavenKey
|
|
||||||
|
|
||||||
# Mail config
|
|
||||||
MAILER_EMAIL_ID=user@domain.com
|
|
||||||
MAILER_PASSWORD=some-pass
|
|
||||||
MAILER_FROM=user@domain.com
|
|
||||||
|
|
||||||
# Use this for one of Nodemailer's pre-configured service providers
|
|
||||||
MAILER_SERVICE_PROVIDER=SendGrid
|
|
||||||
|
|
||||||
# Use these for a custom service provider
|
|
||||||
# Note: MAILER_SMTP_HOST will override MAILER_SERVICE_PROVIDER
|
|
||||||
MAILER_SMTP_HOST=smtp.domain.com
|
|
||||||
MAILER_SMTP_PORT=465
|
|
||||||
MAILER_SMTP_SECURE=TRUE
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
Side note: ___Currently we are using Raven and Sentry [https://www.getsentry.com](https://www.getsentry.com) for error logging. To use it you must provide a valid private DSN key in your .env file and a public DSN key in app/views/layout.index.html___
|
|
||||||
|
|
||||||
#### To run the development version:
|
|
||||||
|
|
||||||
Set ```NODE_ENV=development``` in .env file
|
|
||||||
```$ grunt```
|
|
||||||
|
|
||||||
#### To run the production version:
|
|
||||||
|
|
||||||
Set ```NODE_ENV=production``` in .env file
|
|
||||||
```$ grunt```
|
|
||||||
|
|
||||||
Your application should run on port 3000 or the port you specified in your .env file, so in your browser just go to [http://localhost:3000](http://localhost:3000)
|
|
||||||
|
|
||||||
## Deploying with Docker
|
|
||||||
|
|
||||||
To deploy with docker, first install docker [here](https://docs.docker.com/engine/installation/).
|
|
||||||
|
|
||||||
Then run follow these steps:
|
|
||||||
|
|
||||||
### Step 1: Clone the repo
|
|
||||||
|
|
||||||
`$ git clone https://github.com/tellform/docker_files.git`
|
|
||||||
|
|
||||||
### Step 2: Setup TellForm Configuration
|
|
||||||
|
|
||||||
Create your .env file by copying the .env.dist file included in the repo and changing it to suit your deployment.
|
|
||||||
|
|
||||||
Important: You need to fill out all of the ENV variables in the "Mail Settings" section or your TellForm instance won't work.
|
|
||||||
|
|
||||||
If you want to have https, make sure to change 'TLS_FLAVOR'
|
|
||||||
|
|
||||||
### Step 3: Start your TellForm instance
|
|
||||||
|
|
||||||
`docker-compose up -d`
|
|
||||||
|
|
||||||
TellForm should now be accessible on http://localhost
|
|
||||||
|
|
||||||
## Testing Your Application
|
|
||||||
You can run the full test suite included with TellForm with the test task:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ grunt test
|
|
||||||
```
|
|
||||||
|
|
||||||
This will run both the server-side tests (located in the app/tests/ directory) and the client-side tests (located in the public/modules/*/tests/).
|
|
||||||
|
|
||||||
To execute only the server tests, run the test:server task:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ grunt test:server
|
|
||||||
```
|
|
||||||
|
|
||||||
And to run only the client tests, run the test:client task:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ grunt test:client
|
|
||||||
```
|
|
||||||
|
|
||||||
Currently the live example uses heroku github deployments. The Docker file is out of date and does not work. If someone wishes to get it working feel free to submit a pull request.
|
|
||||||
|
|
||||||
To calculate your total test coverage with Istanbul, run the coverage task
|
|
||||||
```bash
|
|
||||||
$ grunt coverage
|
|
||||||
```
|
|
||||||
|
|
||||||
To calculate your server-side test coverage with Istanbul, run the coverage task
|
|
||||||
```bash
|
|
||||||
$ grunt coverage:server
|
|
||||||
```
|
|
||||||
|
|
||||||
To calculate your client-side test coverage with Istanbul, run the coverage task
|
|
||||||
```bash
|
|
||||||
$ grunt coverage:client
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
TellForm's configuration is done with environment variables. To set an option for TellForm, open/create your .env file and set add `ENV_VAR=somevalue` to set the ENV_VAR variable to the value `somevalue`.
|
TellForm's configuration is done with environment variables. To set an option for TellForm, open/create your .env file and set add `ENV_VAR=somevalue` to set the ENV_VAR variable to the value `somevalue`.
|
||||||
|
|
||||||
@ -200,7 +88,7 @@ TellForm's configuration is done with environment variables. To set an option fo
|
|||||||
| MAILER_EMAIL_ID | A string | N/A | Username credential for the SMTP MAIL service used to send signup/verification/lost password emails. | Yes |
|
| MAILER_EMAIL_ID | A string | N/A | Username credential for the SMTP MAIL service used to send signup/verification/lost password emails. | Yes |
|
||||||
| MAILER_PASSWORD | A string | | Password credential for the SMTP MAIL service used to send signup/verification/lost password emails. | Yes |
|
| MAILER_PASSWORD | A string | | Password credential for the SMTP MAIL service used to send signup/verification/lost password emails. | Yes |
|
||||||
| MAILER_FROM | A valid email | noreply@tellform.com | Email address that all mail should be sent from. | No |
|
| MAILER_FROM | A valid email | noreply@tellform.com | Email address that all mail should be sent from. | No |
|
||||||
| MAILER_SERVICE_PROVIDER | A service from https://nodemailer.com/smtp/well-known/ | | A "well-known" email service that is supported by nodemail. If MAILER_SMTP_HOST is enabled, this is ignored. | Only if MAILER_SMTP_HOST is not set |
|
| MAILER_SERVICE_PROVIDER | A service from [https://nodemailer.com/smtp/well-known/](https://nodemailer.com/smtp/well-known/) | | A "well-known" email service that is supported by nodemail. If MAILER_SMTP_HOST is enabled, this is ignored. | Only if MAILER_SMTP_HOST is not set |
|
||||||
| MAILER_SMTP_HOST | A valid URL | | URL to the SMTP server of your choice | Only if MAILER_SERVICE_PROVIDER is not set |
|
| MAILER_SMTP_HOST | A valid URL | | URL to the SMTP server of your choice | Only if MAILER_SERVICE_PROVIDER is not set |
|
||||||
| MAILER_SMTP_PORT | A valid port number from 0 - 65535 | | Port of the SMTP server of your choice. | Only if MAILER_SMTP_HOST is set |
|
| MAILER_SMTP_PORT | A valid port number from 0 - 65535 | | Port of the SMTP server of your choice. | Only if MAILER_SMTP_HOST is set |
|
||||||
| MAILER_SMTP_SECURE | "TRUE" or "FALSE" | FALSE | Boolean that enables/disables SSL support for your SMTP client. | Only if MAILER_SMTP_HOST is set |
|
| MAILER_SMTP_SECURE | "TRUE" or "FALSE" | FALSE | Boolean that enables/disables SSL support for your SMTP client. | Only if MAILER_SMTP_HOST is set |
|
||||||
@ -214,14 +102,14 @@ TellForm's configuration is done with environment variables. To set an option fo
|
|||||||
| RAVEN_DSN | A valid Sentry.io DSN | N/A | Set this to your Sentry.io Public DSN to enable remote logging | No |
|
| RAVEN_DSN | A valid Sentry.io DSN | N/A | Set this to your Sentry.io Public DSN to enable remote logging | No |
|
||||||
| GOOGLE_ANALYTICS_ID | A valid Google Analytics ID | N/A | Set this to your GA id to enable GA tracking on your TellForm instance | No |
|
| GOOGLE_ANALYTICS_ID | A valid Google Analytics ID | N/A | Set this to your GA id to enable GA tracking on your TellForm instance | No |
|
||||||
|
|
||||||
## Where to get help
|
##Where to get help
|
||||||
|
|
||||||
[Gitter Chat](https://gitter.im/tellform/Lobby)
|
[Gitter Chat](https://gitter.im/tellform/Lobby)
|
||||||
|
|
||||||
[Official Twitter](https://twitter.com/tellform_real)
|
[Official Twitter](https://twitter.com/tellform_real)
|
||||||
|
|
||||||
|
|
||||||
## Sponsors
|
##Sponsors
|
||||||
|
|
||||||
Does your company use TellForm? Help keep the project bug-free and feature rich by [sponsoring the project](https://opencollective.com/tellform#sponsor).
|
Does your company use TellForm? Help keep the project bug-free and feature rich by [sponsoring the project](https://opencollective.com/tellform#sponsor).
|
||||||
|
|
||||||
@ -229,7 +117,7 @@ Does your company use TellForm? Help keep the project bug-free and feature rich
|
|||||||
<img src="https://countable.ca/logo.cb446ab0.svg" height="30px">
|
<img src="https://countable.ca/logo.cb446ab0.svg" height="30px">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
## Backers
|
##Backers
|
||||||
|
|
||||||
Love our work and community? [Become a backer](https://opencollective.com/tellform).
|
Love our work and community? [Become a backer](https://opencollective.com/tellform).
|
||||||
|
|
||||||
@ -241,14 +129,14 @@ Love our work and community? [Become a backer](https://opencollective.com/tellfo
|
|||||||
<img src="https://opencollective.com/public/images/users/avatar-01.svg" height="64">
|
<img src="https://opencollective.com/public/images/users/avatar-01.svg" height="64">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
## Contributors
|
##Contributors
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||||
| [<img src="https://avatars2.githubusercontent.com/u/1160417?v=3" width="100px;"/><br /><sub>David Baldwynn</sub>](http://baldwynn.me)<br />[💻](https://github.com/tellform/tellform/commits?author=whitef0x0 "Code") [🔧](#tool-whitef0x0 "Tools") [🚇](#infra-whitef0x0 "Infrastructure (Hosting, Build-Tools, etc)") [📖](https://github.com/tellform/tellform/commits?author=whitef0x0 "Documentation") [💡](#example-whitef0x0 "Examples") [🎨](#design-whitef0x0 "Design") [🔍](#fundingFinding-whitef0x0 "Funding Finding") [👀](#review-whitef0x0 "Reviewed Pull Requests") [⚠️](https://github.com/tellform/tellform/commits?author=whitef0x0 "Tests") | [<img src="https://avatars2.githubusercontent.com/u/313117?v=3" width="100px;"/><br /><sub>Samuel Laulhau</sub>](https://samuellaulhau.fr)<br />[💻](https://github.com/tellform/tellform/commits?author=lalop "Code") [🌍](#translation-lalop "Translation") | [<img src="https://avatars0.githubusercontent.com/u/313507?v=3" width="100px;"/><br /><sub>Arun Pattnaik</sub>](http://arun.co)<br />[🎨](#design-arunpattnaik "Design") | [<img src="https://avatars0.githubusercontent.com/u/5405744?v=3" width="100px;"/><br /><sub>Thiên Toán</sub>](https://toanalien.com)<br />[🐛](https://github.com/tellform/tellform/issues?q=author%3Atoanalien "Bug reports") [💻](https://github.com/tellform/tellform/commits?author=toanalien "Code") [📖](https://github.com/tellform/tellform/commits?author=toanalien "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/8615608?v=3" width="100px;"/><br /><sub>Adrian Portabales</sub>](https://github.com/AdrianP-)<br />[🐛](https://github.com/tellform/tellform/issues?q=author%3AAdrianP- "Bug reports") [💻](https://github.com/tellform/tellform/commits?author=AdrianP- "Code") | [<img src="https://avatars3.githubusercontent.com/u/8433587?v=3" width="100px;"/><br /><sub>Peter Thaleikis</sub>](https://github.com/spekulatius)<br />[📖](https://github.com/tellform/tellform/commits?author=spekulatius "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/1247388?v=3" width="100px;"/><br /><sub>Mickaël Andrieu</sub>](http://www.mickael-andrieu.com)<br />[📖](https://github.com/tellform/tellform/commits?author=mickaelandrieu "Documentation") |
|
| [<img src="https://avatars2.githubusercontent.com/u/1160417?v=3" width="100px;"/><br /><sub>David Baldwynn</sub>](http://baldwynn.me)<br />[💻](https://github.com/tellform/tellform/commits?author=whitef0x0 "Code") [🔧](#tool-whitef0x0 "Tools") [🚇](#infra-whitef0x0 "Infrastructure (Hosting, Build-Tools, etc)") [📖](https://github.com/tellform/tellform/commits?author=whitef0x0 "Documentation") [💡](#example-whitef0x0 "Examples") [🎨](#design-whitef0x0 "Design") [🔍](#fundingFinding-whitef0x0 "Funding Finding") [👀](#review-whitef0x0 "Reviewed Pull Requests") [⚠️](https://github.com/tellform/tellform/commits?author=whitef0x0 "Tests") | [<img src="https://avatars2.githubusercontent.com/u/313117?v=3" width="100px;"/><br /><sub>Samuel Laulhau</sub>](https://samuellaulhau.fr)<br />[💻](https://github.com/tellform/tellform/commits?author=lalop "Code") [🌍](#translation-lalop "Translation") | [<img src="https://avatars0.githubusercontent.com/u/313507?v=3" width="100px;"/><br /><sub>Arun Pattnaik</sub>](http://arun.co)<br />[🎨](#design-arunpattnaik "Design") | [<img src="https://avatars0.githubusercontent.com/u/5405744?v=3" width="100px;"/><br /><sub>Thiên Toán</sub>](https://toanalien.com)<br />[🐛](https://github.com/tellform/tellform/issues?q=author%3Atoanalien "Bug reports") [💻](https://github.com/tellform/tellform/commits?author=toanalien "Code") [📖](https://github.com/tellform/tellform/commits?author=toanalien "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/8615608?v=3" width="100px;"/><br /><sub>Adrian Portabales</sub>](https://github.com/AdrianP-)<br />[🐛](https://github.com/tellform/tellform/issues?q=author%3AAdrianP- "Bug reports") [💻](https://github.com/tellform/tellform/commits?author=AdrianP- "Code") | [<img src="https://avatars3.githubusercontent.com/u/8433587?v=3" width="100px;"/><br /><sub>Peter Thaleikis</sub>](https://github.com/spekulatius)<br />[📖](https://github.com/tellform/tellform/commits?author=spekulatius "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/1247388?v=3" width="100px;"/><br /><sub>Mickaël Andrieu</sub>](http://www.mickael-andrieu.com)<br />[📖](https://github.com/tellform/tellform/commits?author=mickaelandrieu "Documentation") |
|
||||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||||
| [<img src="https://avatars1.githubusercontent.com/u/1522464?v=3" width="100px;"/><br /><sub>Ahmad Luqman</sub>](https://github.com/ahmad-luqman)<br />[📖](https://github.com/tellform/tellform/commits?author=ahmad-luqman "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/3691490?v=3" width="100px;"/><br /><sub>Peter Dave Hello</sub>](https://www.peterdavehello.org/)<br />[📖](https://github.com/tellform/tellform/commits?author=PeterDaveHello "Documentation") |
|
| [<img src="https://avatars1.githubusercontent.com/u/1522464?v=3" width="100px;"/><br /><sub>Ahmad Luqman</sub>](https://github.com/ahmad-luqman)<br />[📖](https://github.com/tellform/tellform/commits?author=ahmad-luqman "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/3691490?v=3" width="100px;"/><br /><sub>Peter Dave Hello</sub>](https://www.peterdavehello.org/)<br />[📖](https://github.com/tellform/tellform/commits?author=PeterDaveHello "Documentation") |
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
## Mentions on the Web
|
##Mentions on the Web
|
||||||
|
|
||||||
[t3n.de](http://t3n.de/news/open-source-alternative-typeform-tellform-707295/)
|
[t3n.de](http://t3n.de/news/open-source-alternative-typeform-tellform-707295/)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user