Loomio is a collaborative decision-making tool that makes it easy for anyone to participate in decisions which affect them. If you'd like to find out more, check out Loomio.org.
- Issues and bugs should be reported here
- To learn how to setup, develop or translate Loomio visit the wiki.
- To see what's being worked on and what's planned, vote on development priorities, and find tasks to pick up, check out the Loomio Roadmap. To participate in discussions about the app, potential features, and more, join the Loomio Community group on Loomio.
If you have any questions or feedback, get in touch via [email protected].
Facebook Twitter Google+
This is the beginnings of a document to introduce people to the AngularJS parts of Loomio. It is assumed that you have the rails parts of loomio running already.
Install the latest version of node.js for your system. (Some of us quite like NVM)
$ npm install -g bower
$ npm install -g lineman
in the loomio folder
$ cd lineman
$ npm install
$ bower install
Run the rails development server and Private Pub
(loomio) $ rails s
For production environments only, run Private Pub (this is unnecessary for development)
$ rackup private_pub.ru -s thin -E production
Then start lineman from the loomio/lineman folder
$ cd lineman
$ lineman run
- First go to the rails app at localhost:3000 and sign in.
- After logging in, visit localhost:3000/angular to enable the angular dashboard for your User.
- After activating the angular interface, you can use the javascript app at localhost:8000
We're going for high test coverage of our JS frontend here. You can run the unit tests with
$ lineman spec
We're not using linemans default e2e testing stuff. Insted we're going for cucumber.js integration tests.
To run the integration tests, you'll need Protractor and Webdriver-manager
$ npm install protractor
$ webdriver-manager update --standalone
(NB: This will require a java development kit to function correctly, go here for more details on installing a JDK)
To run the e2e tests, you need a bit of environment running. It's probably easiest if you run these each in their own terminal window.
From the loomio folder:
$ rails s
From the loomio/lineman folder:
$ lineman run
$ webdriver-manager start
Then finally to run the tests:
$ lineman grunt spec-e2e
RACK_ENV=development
APP_LOGO_PATH
Hostname of the loomio instance. For us it's "www.loomio.org"
Groups can have subdomains rather than paths to locate them. ie: plainka.loomio.org rather than www.loomio.org/g/2423d23/palinka. Default subdomain is usually "www".
When sending messages to the FAYE websocket server, use delayed job. This is a dumb hack incase the websocket server is down, so that that error does not break the user experience.
generate a secret with rake secret and use it here.
Should we try to send messages to the websocket server. IE: is the 1.0 interface live updating enabled? and have you setup your FAYE server?
FAYE_ENABLED
FAYE_URL
Should all links be https? If so enable this and we'll force all traffic to be https FORCE_SSL
If you are hosting www.loomio.org then enable this. the loomio marketing will show. You do not want to set this ever
SHOW_COMMERCIAL_PAGE
SHOW_LOOMIO_ORG_MARKETING
see config/environments/production.rb and http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
SMTP_DOMAIN
SMTP_PASSWORD
SMTP_PORT
SMTP_SERVER
SMTP_USERNAME
So that people can reply by email, you can setup a loomo-email-gateway box. This needs an address such as reply.loomio.org. We generate custom email addresses for custombit@ENV['REPLY_HOSTNAME'] so that you can reply by email.
Set to 1 if you want to allow robots (search engines) to crawl the public data of the site. In practice this controls the robots.txt file.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_BUCKET
FACEBOOK_KEY
FACEBOOK_SECRET
TWITTER_KEY
TWITTER_SECRET
FB_APP_ID_META
AIRBRAKE_API_KEY
HEAP_APP_ID
INTERCOM_APP_API_KEY
INTERCOM_APP_ID
INTERCOM_APP_SECRET
METRICS_LISTENER_URL
METRICS_NAMESPACE
NEW_RELIC_APP_NAME
TAG_MANAGER_ID
BING_TRANSLATE_APPID
BING_TRANSLATE_SECRET
TRANSIFEX_PASSWORD
TRANSIFEX_USERNAME
ERRBIT_KEY
ERRBIT_HOST
ERRBIT_PORT
GMAIL_PASSWORD
GMAIL_USER_NAME
YAHOO_KEY
YAHOO_SECRET
BUNDLE_GEMFILE
CFLAGS
GEM_HOME
GEM_PATH
GOOGLE_KEY
GOOGLE_SECRET
LIBS
MAX_THREADS
MIN_THREADS
NO_RUBYGEMS
OMNI_CONTACTS_GOOGLE_KEY
OMNI_CONTACTS_GOOGLE_SECRET
PARSE_GROUP_ID
PARSE_ID
PARSE_KEY
PARSE_SUBDOMAIN
PUMA_WORKERS
SECRET_COOKIE_TOKEN
TLD_LENGTH
UNICORN_TIMEOUT
UNICORN_WORKERS
callbackName
grep -rIso -P "(?<=ENV)(\.fetch\(|\[).[A-Z_]+.(\)|\])"
grep -rIsoh -P "(?<=ENV)(\.fetch\(|\[).[A-Z_]+.(\)|\])" | grep -oP "[A-Z_]+" | sort -u > temp