tellform/README.md

210 lines
7.7 KiB
Markdown
Raw Normal View History

2016-11-08 22:59:35 +00:00
TellForm 2.0.0
2015-12-12 20:08:48 +00:00
========
2015-06-29 22:51:29 +00:00
2015-11-23 19:19:02 +00:00
[![Build Status](https://travis-ci.org/whitef0x0/tellform.svg?branch=master)](https://travis-ci.org/whitef0x0/tellform)
2016-11-08 22:59:35 +00:00
![Project Status](https://img.shields.io/badge/status-2.0.0-green.svg)
2015-12-12 20:08:48 +00:00
[![Code Climate](https://codeclimate.com/github/whitef0x0/tellform/badges/gpa.svg)](https://codeclimate.com/github/whitef0x0/tellform)
2016-04-29 08:07:19 +00:00
[![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)
2016-04-29 08:08:26 +00:00
[![Gitter](https://badges.gitter.im/whitef0x0/tellform.svg)](https://gitter.im/whitef0x0/tellform?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
2015-11-13 01:00:18 +00:00
2017-04-09 23:23:25 +00:00
TellForm is an *opensource alternative to TypeForm* built ontop of NodeJS that can create [stunning mobile-ready forms](https://tellform.com/examples) , surveys and questionnaires.
2015-08-21 01:10:06 +00:00
2017-03-30 19:54:28 +00:00
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/whitef0x0/tellform/tree/master)
2017-03-22 23:30:24 +00:00
## Features
### Currently following features are implemented:
- Multi-Language Support
2017-04-09 23:23:25 +00:00
- 11 possible question types
- Editable start and end pages
2017-03-22 23:30:24 +00:00
- Export Submissions to XLS, JSON or CSV
- Native Analytics and Google Analytics Support
2017-04-09 23:23:25 +00:00
- Custom Subdomains for each User
2017-03-22 23:30:24 +00:00
- Embeddable Forms
2017-04-09 23:23:25 +00:00
- Forms as a Service API
- Deployable with Heroku and DockerHub
2017-03-22 23:30:24 +00:00
2017-04-09 23:23:25 +00:00
### On the Roadmap for v3.0.0
2017-03-22 23:30:24 +00:00
- 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
2017-04-09 23:23:25 +00:00
- Add Stripe/Payment Form field
- Add Custom Background and Dropdown Field Images
- Add File Upload Form Field
2015-08-21 01:10:06 +00:00
2015-07-09 22:15:34 +00:00
## Quickstart
2015-06-29 22:51:29 +00:00
2016-11-08 17:46:46 +00:00
Before you start, make sure you have
1. Redis installed and running at 127.0.0.1:6379
2. MongoDB installed and running at 127.0.0.1:27017 (OR specify the host and port in config/env/all)
2016-06-07 19:44:52 +00:00
2016-11-02 18:30:04 +00:00
Also make sure to install DNS Masq or equivalent if running it locally on your computer (look at dns_masq_setup_osx for instructions on OSX)
2016-06-07 19:44:52 +00:00
2015-07-09 22:15:34 +00:00
Install dependencies first.
2015-06-29 22:51:29 +00:00
```bash
$ npm install
2015-07-09 22:15:34 +00:00
$ bower install
2015-06-29 22:51:29 +00:00
```
2015-11-23 19:19:02 +00:00
Setup environment.
```bash
$ grunt build
```
2016-05-10 07:56:58 +00:00
Create your user account
```bash
$ node ./scripts/setup.js
```
OR create your .env file
2016-04-12 06:04:21 +00:00
```
2016-04-24 21:10:53 +00:00
GOOGLE_ANALYTICS_ID=yourGAID
PRERENDER_TOKEN=yourPrerender.ioToken
COVERALLS_REPO_TOKEN=yourCoveralls.ioToken
MAILER_EMAIL_ID=SMTP_Injection
2016-04-12 06:04:21 +00:00
MAILER_FROM=noreply@yourdomain.com
2016-04-24 21:10:53 +00:00
MAILER_PASSWORD=your_sparkpost_apikey
MAILER_SERVICE_PROVIDER=SparkPost
2016-04-12 06:04:21 +00:00
BASE_URL=yourdomain.com
2016-05-11 02:44:33 +00:00
DSN_KEY=yourPrivateRavenKey
2015-08-21 01:03:05 +00:00
```
2016-05-11 02:44:33 +00:00
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___
2016-04-25 15:49:15 +00:00
2017-04-09 23:24:19 +00:00
#### To run the development version:
2016-04-21 19:10:00 +00:00
2016-05-13 22:34:53 +00:00
Set ```NODE_ENV=development``` in .env file
2016-10-24 07:09:10 +00:00
```$ grunt```
2016-04-25 15:49:15 +00:00
2017-04-09 23:24:19 +00:00
#### To run the production version:
2016-04-21 19:10:00 +00:00
2016-10-24 07:09:10 +00:00
Set ```NODE_ENV=production``` in .env file
```$ grunt```
2015-06-29 22:51:29 +00:00
2016-05-13 22:34:53 +00:00
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)
2015-06-29 22:51:29 +00:00
2017-04-09 23:23:25 +00:00
## Deploying with Docker
2016-12-01 00:29:44 +00:00
To deploy with docker, first install docker [https://docs.docker.com/engine/installation/](here).
Then run these commands
```
$ docker run -p 27017:27017 -d --name some-mongo mongo
2017-04-03 20:28:24 +00:00
$ 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 tellform/development -e MAILER_EMAIL_ID='mailer_username' \
-e POSTGRES_ENV_POSTGRES_PASSWORD='foo' \
-e POSTGRES_ENV_POSTGRES_USER='bar' \
-e POSTGRES_ENV_DB_NAME='mysite_staging' \
-e POSTGRES_PORT_5432_TCP_ADDR='docker-db-1.hidden.us-east-1.rds.amazonaws.com' \
-e SITE_URL='staging.mysite.com' \
-p 80:80 \
2016-12-01 00:29:44 +00:00
```
2015-06-29 22:51:29 +00:00
2017-04-09 23:23:25 +00:00
## Sponsors
Does your company use TellForm? Help keep the project bug-free and feature rich by [sponsoring the project](https://opencollective.com/tellform#sponsor).
<a href="https://m.do.co/c/a86fd8843e09">
2017-04-09 23:28:51 +00:00
<img src="https://www.digitalocean.com/assets/media/logos-badges/png/DO_Logo_Horizontal_Blue-3db19536.png" width="70px">
2017-04-09 23:23:25 +00:00
</a>
<a href="https://getsentry.com/">
<img src="https://raw.githubusercontent.com/docker-library/docs/831b07a52f9ff6577c915afc41af8158725829f4/sentry/logo.png"
2017-04-09 23:28:51 +00:00
width="70px">
2017-04-09 23:23:25 +00:00
</a>
<a href="https://statuspage.io/">
2017-04-09 23:28:51 +00:00
<img src="https://dka575ofm4ao0.cloudfront.net/assets/base/logos/common-aececb0b4319b8fb61ac5b47a6983f96.png" width="70px">
2017-04-09 23:23:25 +00:00
</a>
<a href="https://www.stickermule.com/unlock?ref_id=0939360701">
2017-04-09 23:28:51 +00:00
<img src="http://bcsrq.com/wp-content/uploads/2014/04/StickerMuleLogo300.png" width="70px">
2017-04-09 23:23:25 +00:00
</a>
<a href="https://sparkpost.com/">
2017-04-09 23:28:51 +00:00
<img src="https://app.sparkpost.com/assets/images/sparkpost-logo-color.svg" width="70px">
2017-04-09 23:23:25 +00:00
</a>
<a href="https://therooststand.com/">
2017-04-09 23:28:51 +00:00
<img src="https://cdn.shopify.com/s/files/1/0192/8184/t/11/assets/logo.png?2608345842081938086" width="70px">
2017-04-09 23:23:25 +00:00
</a>
## Backers
2017-04-09 23:28:51 +00:00
Love our work and community? [Become a backer](https://opencollective.com/tellform).
2017-04-09 23:23:25 +00:00
<a href="https://opencollective.com/tellform/backers/0/website" target="_blank"><img src="https://opencollective.com/apex/backers/0/avatar"></a>
2015-06-29 22:51:29 +00:00
## Testing Your Application
You can run the full test suite included with MEAN.JS 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
```
2015-07-30 00:42:55 +00:00
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.
2015-06-29 22:51:29 +00:00
2015-11-23 21:06:02 +00:00
To calculate your total test coverage with Istanbul, run the coverage task
2015-11-23 19:19:02 +00:00
```bash
$ grunt coverage
```
2015-11-23 21:06:02 +00:00
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
```
2016-05-25 21:36:35 +00:00
## Where to get help
2015-06-29 22:51:29 +00:00
2016-05-25 21:36:35 +00:00
[Gitter Chat](https://gitter.im/whitef0x0/tellform)
[Official Twitter](https://twitter.com/tellform_real)
## Contributor list
[David Baldwynn](https://github.com/whitef0x0/)
[Samuel Laulhau](https://github.com/lalop)
2015-12-12 20:08:48 +00:00
2016-06-06 03:32:26 +00:00
[Arun Pattnaik](https://github.com/arunpattnaik)
2016-05-18 23:12:08 +00:00
## Mentions on the Web
2016-05-18 23:29:59 +00:00
2016-06-03 00:32:19 +00:00
[Mister Ad](http://start.mister-ad.biz/newsticker/open-source-alternative-zu-typeform-tellform-in-der-kurzvorstellung/)
2016-05-18 23:12:08 +00:00
[t3n.de](http://t3n.de/news/open-source-alternative-typeform-tellform-707295/)
2016-05-18 23:29:59 +00:00
[BootCSS Expo](http://expo.bootcss.com/)
2016-05-18 23:12:08 +00:00
[Product Hunt](https://www.producthunt.com/tech/tellform)
2016-05-18 23:29:59 +00:00
2016-05-18 23:12:08 +00:00
[Hacker News Post](https://news.ycombinator.com/item?id=11711095)
2016-05-18 23:29:59 +00:00
2016-05-18 23:12:08 +00:00
[Reddit Posts](https://www.reddit.com/domain/tellform.com/)
2016-07-21 01:55:51 +00:00
[Betapage](https://betapage.co/startup/tellform)
[Opensource.com](http://opensource.com/article/17/2/tools-online-surveys-polls)
2016-05-25 21:36:35 +00:00
## Credits
2016-10-01 11:15:16 +00:00
Inspired/built off the great work of the [MeanJS team](https://github.com/meanjs/) and [Typeform](http://typeform.com)