Ruby on Rails application for managing Ranger data.
This application is built by the Rangers to manage personnel, scheduling, and operational needs of the department. During Burning Man, Secret Clubhouse runs on site to manage people on duty, assets checked out, and upcoming shift scheduling. Year round, it serves as a database about old and new volunteers and allows people to plan their participation in training and event work.
BMEM originally set out to be an application framework for managing event volunteers, allowing groups to plug in their own personnel and operational modules. To simplify and accelerate development, the BMEM scheduling module has been pulled into the Rangers application. Once we have a year or two of operational experience with the system we might pull it back out or non-Ranger groups who wish to use it.
Developers and other interested parties should read the information architecture document. Some key concepts:
-
People (past, current, and prospective volunteers)
-
Callsign (handle)
-
Wallet name (John Smith)
-
Contact information (email, phone, post)
-
Personnel status (active, prospective, retired…)
-
Assorted demographics (birthday, shirt size, gender, languages…)
-
-
Position (Dirt Ranger, Shift Lead, HQ Window…)
-
A type of work someone can be qualified for
-
Basis of organization for scheduling
-
-
Events (Burning Man, training season, special events)
-
Organizational unit for most data in the system
-
Defined by a name and a date range, possibly overlapping
-
Many reports are scoped to a single Event
-
-
Involvements (information about a Person’s activity in an Event)
-
The Person’s callsign and barcode at the time of the Event
-
Their involvement status in the Event (planned, confirmed, withdrawn…)
-
Their personnel status at the time
-
On-site information (camp location, emergency contact, …)
-
-
Shifts (grave, morning, afternoon, swing…)
-
Periods of time when a group of people will be working
-
-
Slots (Thursday grave dirt rangers, Saturday afternoon shift leads, …)
-
A Position within a Shift
-
Linked to a Person through an Involvement
-
-
Work Logs
-
Actual sign in and sign out times for People (through Involvements)
-
-
Users
-
Identified by email address and password
-
Tied to a Person record, but not all People are authorized users
-
In the future we can use auth plugins to allow login via Facebook, Google, or other methods that don’t require people to remember yet another password
-
For now there’s a 1:1 correspondence between people and users, but this could change to support people without users (deceased people or unfinished registrations)
-
Role-based authentication is performed using the cancan library. Most users have no role and can only edit their own information. HQ users can edit other people’s information and schedules, run reports, and perform various tasks. Admin users can do anything. Mentor and Trainer roles have not yet been fleshed out.
-
These concepts are discussed further in the information architecture.
This code is copyright The Burning Man Project and is made available under the open source Apache license. By contributing code to BMEM or Secret Clubhouse, you consent for that code to be used under the BMEM license. See the LICENSE file for details.
If you are interested in contributing to this project, send a message to ranger-tech-cadre at burningman dot com and explain your interest.
BMEM and Secret Clubhouse are hosted on GitHub. Git is a distributed source control system that lets you make unlimited local edits and branches and effectively merge your changes with others working on the same project. If you’re new to Git or GitHub, read the Beginner section of help.github.com/
When you’re ready to hack on BMEM, fork github.com/bmem/ranger and send pull requests to bmem with your changes. If you’re working on something significant, please discuss it first in an issue or on the mailing list.
To check out and run the code (assuming you have installed Ruby, Rails, Ruby Gems, Bundler, and perhaps RVM):
mkdir bmem && cd bmem git clone [email protected]:bmem/ranger.git cd ranger bundle install rake db:setup bundle exec rails server # visit http://localhost:3000/ and take a look around # the first account created will be an admin # if you want some test data, run rake db:fixtures:load # you can log in as [email protected] with password admin # if you've changed how data is indexed, run rake index:rebuild
The maintainers would love it if you included tests along with your changes. Also, please keep most code to 80 columns wide in a readable style. Use idiomatic Ruby on Rails practices and document anything that’s particularly tricky. Ease of readability usuallyt trumps speed of authorship. The next person who edits your code (and it may be you!) will thank you.
In addition to RESTful views, Secret Clubhouse development will focus on task-centric views, tailored to the needs of groups within the organization. For instance, volunteer coordinators and mentors will view people with a focus on contact information and training status while folks at the HQ window will have a view that makes shift sign-in and asset check-out as quick and easy as possible.
Thanks for your interest, Ranger Stonebeard, stonebeard _at_ burningman _dot_ com on behalf of the Ranger Tech Team