Council application – final report
I wanted to write a proper summary, but it’s almost 2am local time for me and I have to get up in 3 hour or so to leave, so I’ll just give a short-yet-covering-everything sumamry I wrote for README of the project. I’ll try to write something more once I’m back. Also you may be interested in README and bug for deploying to Gentoo Infra.
This project has three parts:
- Website written in Ruby (using Rails and Hobo). This site helps to prepare meetings, collect ideas and feedback from community.
- Modified MeetBot (MeetBot is supybot plugin). This plugin handles meetings. You can use
#commandsto list available commands and
#command <command>to view help for each command.
- Reminder plugin. This supybot plugin pulls reminder information from the website and sends messages to all council members to remind them about upcoming meeting.
What you can do in the webapp depends on your role. You can be guest or a registered user. Once you register administrators can give you administrator and council member roles.
Guest
As guest you can only view:
- Current and past agendas
- Items for agendas
- Voting results
- Meeting summaries approved by council
- Council attendance
Registered user
Once you register you can do everything a guest can and:
- Suggest items for council
- Participate in community vote
Council member
When administrator will give you a council member role you will be able to do everything a regular registered user can and:
- Change agendas states (available states are open, submissions closed, meeting_ongoing, old)
- Add suggested items to agenda
- Reject suggested items
- Vote during meetings (IRC bot handles voting)
Administrator
As administrator you can manage users – give them new roles and take away old roles.
Bot has a separate list of commands:
- #startmeeting
- #startvote
- #vote
- #endvote
- #nextitem
- #previtem
- #changeitem
- #option list
- #option add
- #option remove
- #timelimit list
- #timelimit add:
- #timelimit remove
- #endmeeting
hopefully command names are self-explanatory. In addition bot obtains agenda items, voting options and timelimits for each item from website when you #startmeeting and sends voting option changes and voting results to webapp when you #endmeeting.