PeerMind
The goal of this application is to improve how we do group decision making in our communities. Instead of just digitizing current voting practices and moving them online, without much added value, this project aims to explore and improve technologies we use for decision making. Some current ideas:
- support for communities which meet offline, but want to use online tools to augment their decision making
- tools for better facilitation of discussions
- score voting for better multiple-choices decision making
- dynamic statistical quorum
- vote delegation
- visual feedback on decision making process and progress
The project is in very early stages. Any feedback is welcome.
Development
The application uses Meteor web framework. Install it:
curl https://install.meteor.com/ | sh
Clone the repository:
git clone --recursive https://github.com/peer/mind.git
Run it:
meteor
And open http://localhost:3000/.
Currently you will have to manually create accounts using meteor shell
:
var userId = Package['accounts-base'].Accounts.createUser({username: 'admin', password: 'password'});
Package['alanning:roles'].Roles.addUsersToRoles(userId, ['admin', 'moderator', 'manager', 'member']);
Furthermore, currently the app has hard-coded four user groups with hard-coded permissions for them:
member
s can add discussion items, add comments to them, propose motions, upvote content, and vote on motionsmoderator
s can make points, and edit content of othersmanager
s can add discussion items, comment, and propose motionsadmin
s can manage user accounts
After you have created an admin account, you can invite new users into the app. They will get an e-mail with instructions how to setup their password. To invite a user, run the following function in your browser's web console:
Meteor.call('User.invite', 'email@example.com', 'username', console.log.bind(console));
Invited users initally do not belong to any group. Currently this means that effectively they cannot do anything in the app without being added to at least one group. To add them to a group, you can use an admin interface at http://localhost:3000/admin/accounts.
Used technologies
The application is built on top of many other technologies and Meteor packages:
- Blaze for rendering HTML through Blaze Components abstraction.
- MongoDB through PeerDB abstraction.
- CoffeeScript.
- Material Design through Materialize.
- job-collection for background tasks through Classy Job abstraction.
Running
To run the application in production you can use Docker.
The application is provided as mitar/council-app Docker image. It is based on tozd/meteor image for Meteor applications. tozd/meteor-mongodb image is recommended for MongoDB because it creates necessary Meteor MongoDB database configuration automatically.
You can see run.sh
file for an example how to run it.
You have to adapt the script for your installation. It contains hard-coded values for another installation.