Bike Collective Software: Difference between revisions

From Bike Collectives Wiki
No edit summary
Line 48: Line 48:


The system must:
The system must:
 
 
* Allow individuals to pre-register (volunteer) for events.
* Allow individuals to pre-register (volunteer) for events.
* Allow individuals to punch in and out of a time clock.
* Allow individuals to punch in and out of a time clock.
* Allow hours to be assigned to an event.
* Allow hours during the event for each person to be assigned to a project.  Example: Kid's bike build, Yellow Bikes
* Allow individuals to select their role at the event.  Example: coordinator, volunteer, court ordered hours
* Allow the organization to report summaries on events and individuals.
* Allow the organization to report summaries on events and individuals.
* Allow custom queries to database for more complex reporting.   
* Allow custom queries to database for more complex reporting.   

Revision as of 01:37, 26 November 2007

This is the collaborative project description for custom bike collective software.

Requirements

  1. The software will be an open source component of a CMS system. The choices we already narrowed it down to are Joomla, Drupal, and Wordpress.
  2. Component features and/or Modules will be built to handle needs of the various shops. These modules can be turned on and off through a GUI interface.
  3. A very intuitive installer will be crucial to help get all the non-profits started using the software. It should have pre-programmed data-sets for common collective / cooperative types.
  4. Internationalization via simple language file options.

CMS Systems

Here are some test systems you can experiment on. If you want a login, or even your own test site let Jonathan Morrison know.

Jonathan Morrison's Opinion

My background is in software engineering as is my degree. I actually installed Wordpress, Joomla, Drupal recently to compare them. Here is my honest opinion of each of them and their user groups. I take into account sustainability factors like, "sure I am a nerd, but if I wasn't here, could someone else cover it?"

Wordpress was by far the easiest to install and get running, however it lacks components and features to _easily_ do anything more than a blog. For example if you want to add a photo gallery, etc.,... One of my main observations is the user group that uses this is more graphic designers, not programmers. Another plus is that you, as a nonprofit, can get free hosting using Dreamhost, and they have a simple one-click-install for Wordpress. This makes upgrades really easy.

Drupal was by far the most difficult to install, however it is very universal. With flexibility comes complexity, so make sure you have a hard core nerd on staff before you commit to this one. I would for the Salt Lake City Bicycle Collective, but in the event I wasn't around, I can't see it being maintained properly. The user group for this tends to be people like me, geeks. As a result, the graphical templates aren't as impressive as other CMSs. One cool feature that Bike Geeks used is they made all the Chicago sites connect. One unique feature of Drupal is that a single installation of Drupal can run several sites. Sadly, Dreamhost does not have a one-click install feature drupal, so installations and upgrades have to be done manually.

Joomla, while I have spent the most time with it is still my personal favorite. It has the largest user base, and more addons and templates than any other CMS out there. To be fair, the big downfall isn't in technical complexity, but what how things are named. There are 1000s of templates, components, modules, mambots out there, but you need to know what they are before you can use them. Another plus is that you, as a nonprofit, can get free hosting using Dreamhost, and they have a simple one-click-install for Joomla. This makes upgrades really easy.

Existing CMS Plugins with similar functionality

Features

Generically speaking we need to keep track of hours, people, and things (sometimes in different stages) as they relate to various events. Every community bike organization has a different name for these and uses a different subset of them -- so they will need to be easily re-nameable and be able to turn on and off.

Interface

  • Hopefully ajax interface. At Yellow Bike we are having slow load times because entire list of 40 shop users has to be refreshed for each form submit. It makes using the system a bit tedious.
  • Have a way to edit and delete any record created. Example: transaction, people tracking.
    • Security: To prevent tampering require a password when hours for a person are being changed and do not match current time or location - ip matching.
    • Restrict edits for certain events to the ip address that created it. Example: allow users to login to shop only from the shop instead from their living room.
  • Database change tracking and deletions.
    • Time stamp every change to the database
    • Create database so that no data is ever deleted. Instead have a column that designates that the record is deleted and a timestamp for the action.


Hour Tracking

For Volunteers and or Staff as they commit ahead of time to events and then how to keep track of when they do or don't follow through.

The system must:

  • Allow individuals to pre-register (volunteer) for events.
  • Allow individuals to punch in and out of a time clock.
  • Allow hours to be assigned to an event.
  • Allow hours during the event for each person to be assigned to a project. Example: Kid's bike build, Yellow Bikes
  • Allow individuals to select their role at the event. Example: coordinator, volunteer, court ordered hours
  • Allow the organization to report summaries on events and individuals.
  • Allow custom queries to database for more complex reporting.
    • Have an alternate export option that dumps raw data to a delimited format for excel editing for less database oriented folk. Filters on data export would be nice.

People Tracking

The system needs to:

  • Allow for individuals to provide their contact information, required and non-required items.
  • Allow for individuals to opt into or out of an email list.
  • Allow for the organization to more than one contact at once. (ex: Paper signup forms at tabled events.)
  • Allow for the organization to designate what contact information is required and what is not.
  • Allow for the organization to create a unique set of contact types. (ex: Local Business Contacts, Distributors, Board of Directors, Members, Customers, Earn-A-Bikers, Mechanics, Cooks, Clergy, etc.,...)\
    • Several types should be able to be assigned to each person.

Inventory Tracking

Hopefully we can generalize this as well.

Examples:

  • Fleet/Library/Yellow Bikes
  • New Parts
  • Used Parts
  • Tools
  • Rentals

Event Listing

Events could be meetings, open shop nights, valet bicycle parking, tabling festivals, etc.,...

The system needs to:

  • Allow individuals to sign up for events.
  • Allow the organization to define different types of events.
    • Some properties will affect hours or inventory tracking. example: different events might have a different list of participant roles for the event. At Yellow Bike during a shop event someone can be a coordinator (cook...), volunteer, personal, court ordered hours.
  • Allow the organization to schedule different events.

Event Signups

This could be used to sign up for an event or could be used to keep track of people at an event.

Repair Tracking

This might be a part of Inventory, but a way to easily see what bikes need what work.

Accounting

Fundraising

Recycling

This module will track how many frames, wheels and miscellaneous metal recycling. It will also track items given to artists.

Art

?

Wish List Posting

This could be as simple as a classified section. (Joomla Component Example)

Software Life-cycle

Winter is a great time to get this rolling and hopefully have it ready for next spring.

  • Create the dev team Email List
  • Create a project description
  • Delegate programming / graphic design
  • Development Stage
  • Internal Testing / External Testing
  • Fix Bugs
  • Beta Release / External Testing
  • Fix Bugs
  • Final release
  • Maintenance / Feature Requests

Developers