TellForm 2.0.0 ======== [![Build Status](https://travis-ci.org/tellform/tellform.svg?branch=master)](https://travis-ci.org/tellform/tellform) ![Project Status](https://img.shields.io/badge/status-2.0.0-green.svg) [![Code Climate](https://codeclimate.com/github/whitef0x0/tellform/badges/gpa.svg)](https://codeclimate.com/github/whitef0x0/tellform) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3491e86eb7194308b8fc80711d736ede)](https://www.codacy.com/app/david-baldwin/tellform?utm_source=github.com&utm_medium=referral&utm_content=whitef0x0/tellform&utm_campaign=Badge_Grade) [![Gitter](https://badges.gitter.im/whitef0x0/tellform.svg)](https://gitter.im/whitef0x0/tellform?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. [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/whitef0x0/tellform/tree/master) ## Table of Contents - [Features](#features) - [How to Contribute](#how-to-contribute) - [Quickstart](#quickstart) - [Deploying with Docker](#deploying-with-docker) - [Testing your Application](#testing-your-application) - [FORMA](#forma) - [Where to Get Help](#where-to-get-help) - [Sponsors](#sponsors) - [Backers](#backers) - [Contributors](#contributors) - [Mentions on the Web](#mentions-on-the-web) ## Features ### Currently following features are implemented: - 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 v3.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 ## How to Contribute 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 Before you start, make sure you have 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 MAILER_EMAIL_ID=SMTP_Injection MAILER_FROM=noreply@yourdomain.com MAILER_PASSWORD=your_sendgrid_apikey MAILER_SERVICE_PROVIDER=SendGrid BASE_URL=localhost DSN_KEY=yourPrivateRavenKey ``` 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 these commands ``` $ docker run -p 27017:27017 -d --name some-mongo mongo $ docker run -p 127.0.0.1:6379:6379 -d --name some-redis redis $ docker run --rm -p 3000:3000 --link some-redis:redis-db --link some-mongo:db -e "SUBDOMAINS_DISABLED=TRUE" -e "DISABLE_CLUSTER_MODE=TRUE" -e "MAILER_EMAIL_ID=" -e "MAILER_FROM=" -e "MAILER_SERVICE_PROVIDER=" -e "MAILER_PASSWORD=" -e "BASE_URL=localhost" -p 80:80 tellform/development ``` ## 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 ``` ## FORMA #### Prerequisite: Before you start, make sure you have 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) 3. [Docker](https://docs.docker.com/engine/installation/) installed and running 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: ``` $ npm install $ bower install ``` #### Prepare .env file: Create .env file at project root folder. Fill in MAILER_SERVICE_PROVIDER, MAILER_EMAIL_ID and MAILER_PASSWORD. ``` APP_NAME=forma APP_DESC= APP_KEYWORDS= NODE_ENV=development BASE_URL=localhost:5000 PORT=5000 username=forma_admin MAILER_SERVICE_PROVIDER= MAILER_EMAIL_ID= MAILER_PASSWORD= MAILER_FROM=forma@data.gov.sg SIGNUP_DISABLED=false SUBDOMAINS_DISABLED=true DISABLE_CLUSTER_MODE=true GOOGLE_ANALYTICS_ID= RAVEN_DSN= PRERENDER_TOKEN= COVERALLS_REPO_TOKEN= ``` #### Deploy with Docker: Create and start mongo & redis docker container. ``` $ docker run -p 27017:27017 -d --name forma-mongo mongo $ docker run -p 127.0.0.1:6379:6379 -d --name forma-redis redis ``` After code changes, build and start docker containers. ``` $ docker start forma-mongo && docker start forma-redis $ docker build -t forma-tellform . $ docker stop forma-tellform $ docker run --rm -p 5000:5000 --link forma-redis:redis-db --link forma-mongo:db --name forma-tellform forma-tellform ``` Your application should run on port 5000 or the port you specified in your .env file, so in your browser just go to [http://localhost:5000](http://localhost:5000) ## Where to get help [Gitter Chat](https://gitter.im/whitef0x0/tellform) [Official Twitter](https://twitter.com/tellform_real) ## Sponsors Does your company use TellForm? Help keep the project bug-free and feature rich by [sponsoring the project](https://opencollective.com/tellform#sponsor).

## Backers Love our work and community? [Become a backer](https://opencollective.com/tellform). ## Contributors | [
David Baldwynn](http://baldwynn.me)
[πŸ’»](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") | [
Samuel Laulhau](https://samuellaulhau.fr)
[πŸ’»](https://github.com/tellform/TellForm/commits?author=lalop "Code") [🌍](#translation-lalop "Translation") | [
Arun Pattnaik](http://arun.co)
[🎨](#design-arunpattnaik "Design") | [
ThiΓͺn ToΓ‘n](https://toanalien.com)
[πŸ›](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") | [
Adrian Portabales](https://github.com/AdrianP-)
[πŸ›](https://github.com/tellform/TellForm/issues?q=author%3AAdrianP- "Bug reports") [πŸ’»](https://github.com/tellform/TellForm/commits?author=AdrianP- "Code") | [
Peter Thaleikis](https://github.com/spekulatius)
[πŸ“–](https://github.com/tellform/TellForm/commits?author=spekulatius "Documentation") | [
MickaΓ«l Andrieu](http://www.mickael-andrieu.com)
[πŸ“–](https://github.com/tellform/TellForm/commits?author=mickaelandrieu "Documentation") | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | [
Ahmad Luqman](https://github.com/ahmad-luqman)
[πŸ“–](https://github.com/tellform/TellForm/commits?author=ahmad-luqman "Documentation") | [
Peter Dave Hello](https://www.peterdavehello.org/)
[πŸ“–](https://github.com/tellform/TellForm/commits?author=PeterDaveHello "Documentation") | ## Mentions on the Web [Mister Ad](http://start.mister-ad.biz/newsticker/open-source-alternative-zu-typeform-tellform-in-der-kurzvorstellung/) [t3n.de](http://t3n.de/news/open-source-alternative-typeform-tellform-707295/) [BootCSS Expo](http://expo.bootcss.com/) [Product Hunt](https://www.producthunt.com/tech/tellform) [Hacker News Post](https://news.ycombinator.com/item?id=11711095) [Reddit Posts](https://www.reddit.com/domain/tellform.com/) [Betapage](https://betapage.co/startup/tellform) [Opensource.com](http://opensource.com/article/17/2/tools-online-surveys-polls)