Event management & volunteer recruitment (i.e. Helfersuche Türmefest)
JavaScript HTML CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.meteor
client
lib
public/img
server
.gitignore
README.md
package.json

README.md

events

meteor based events volunteer management platform.

Screenshot

Admin view

Development

See http://guide.meteor.com/

Deployment

Important: when switching from old mupx to mup, you don't have to run setup again. Just init, set up the mup.js and you can deploy.

You can choose from different deployment methods, the recommended is mup:

npm install -g mup
mkdir events-prod && cd events-prod
mup init

Example mup.js:

module.exports = {
    servers: {
        one: {
            host: 'production.meteor.example.com',
            username: 'root',
            pem: '~/.ssh/id_rsa',
        }
    },

    meteor: {
        name: 'events',
        path: '/project/path/events',
        servers: {
            one: {},
        },
        buildOptions: {
            serverOnly: true,
        },
        env: {
            ROOT_URL: 'http://events.example.com',
            MONGO_URL: 'mongodb://localhost/meteor',
            HTTP_FORWARDED_COUNT: 1, // nginx proxy
            MAIL_URL: "smtp://mail.example.com:25/"
        },

        dockerImage: 'abernix/meteord:base',
        deployCheckWaitTime: 300, // the default value didn't work for me
        enableUploadProgressBar: true
    },

    mongo: {
        oplog: true,
        port: 27017,
        version: '3.4.1',
        servers: {
            one: {},
        },
    },
};

Deploy:

mup deploy

Backup database:

ssh root@production.meteor.example.com docker exec mongodb mongodump --archive --db events > backup_events_`date "+%Y%m%d-%H%M"`.dump

Make user a system admin (first argument can be {} instead of {_id: ...} if there's only one user in the db, otherwise you have to provide a user id):

ssh root@production.meteor.example.com
docker exec -it mongodb mongo events
db.users.update({_id:"GQ4fy3aRrBQfFqD6h"}, {$set: {roles: {__global_roles__: ["system_admin"]}}});

This user can then use the web GUI to set other system or event admins and create events. S.b. for details on access roles used in this project.

Roles

This project uses the meteor package alanning:roles. Check out its documentation and examples first!

System admins

role: __global_roles__: ["system_admin"]

  • add and remove system admins
  • create and remove events
  • add and remove event admins
  • most operations from the other roles (forgot to document it)

Event admins

role: event_id: ["event_admin"]

  • add and remove event admins
  • manage the event, i.e. change properties
  • send emails to all volunteers of this event
  • create and remove event tasks
  • add and remove task admins
  • add and remove event coordinators

Users added as event admins in the web UI automatically become event coordinators as well

Task admins

role: task_id: ["task_admin"]

  • add and remove task admins
  • manage the task, i.e. change properties
  • send emails to all volunteers of this task
  • create, remove and modify time slots
  • manage volunteers for this task, i.e. list and check in the volunteers

Users added as task admins in the web UI automatically become event coordinators as well

Event coordinators

role: event_id: ["coordinator"]

  • add and list volunteers