Bike Collective Software
This is the collaborative project description for custom bike collective software.
See Software to find out what is currently being used/developed. What is presented below is an outdated, although interesting discussion from several years ago.
- 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.
- 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.
- 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.
- Internationalization via simple language file options.
Existing CMS Plugins
The following extensions have similar functionality to what we hope to build. Perhaps we can combine efforts, or fork off their current effort.
- CiviContribute: A donation module to accept online payments via PayPal, Authorize.net, Google and Moneris. Recurring donations are also supported via PayPal and Authorize.net
- CiviEvent: An event management module for integrated event registration and management
- CiviMember: A membership module to manage your members
- CiviMail: A high performace broadcast email engine
- Events calendar with several display modes
- Mailman Subscribe Module
- Little wrapper to let visitors (un-) subscribe from a Mailman email lists. Currently used on www.bikecollectives.org and www.slcbikecollective.org
- Gallery2 and Gallery2 Bridge
- Very common photo gallery that has been bridged to Joomla.
- Vemod News Mailer
- Vemod News Mailer is a Joomla! component that allows registered users to e-mail subscribe to news categories. News are scanned at the selected interval and mailings can trigger automatically.
- Group Access (Menu ACL)
- This components allows you to give individual users access to certain menu items. This is a bit more granular than the Public/Registered/Special groups.
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.
- 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. Each database table should have a CreateUser, CreateDate, ModifiedUser, and ModifiedDate field.
- 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. This could just be the Publish and Unpublish methods in Joomla -- records aren't deleted, they are just inactive aka unpublished.
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 have the following capabilities:
- Select user for punch in and out. This should be a autofilter like many sites now use instead of a drop down. (Currently yellow bike has over 1500 people in a drop down and it is difficult to locate a particular user.
- Time Handling
- Allow individuals to punch in and out of a time clock. This should be intuitive.
- Allow for override of current time with password authorization.
- Time selection should be intuitive and quick
- Track Volunteer Hours/Credits earned as a balance.
- Tie Volunteer Hours Earned into Purchases/Inventory to maintain a balance of credits or simply allow for volunteers to subtract credits from their total hours volunteered and show it as transaction.
- Relationship to events
- Allow individuals to pre-register (volunteer) for events.
- All hours tracking should be assigned to a defined event.
- Optional fields
- Allow individuals to select their role at the event. Example: coordinator, volunteer, court ordered hours
- Allow hours during the event for each person to be assigned to a project. Example: Kid's bike build, Yellow Bikes
- Allow for a splash screen to welcome new visitors to the event or shop.
- Yellow Bike has multiple shop locations that might be running concurrently. Use IP address to keep shop sign-ins straight otherwise people will be signing into the wrong event.
- Reporting Features
- Allow the organization to report summaries on events and individuals.
- Allow custom queries to database for more complex reporting using external query tool. Example MySQL Query Browser
- 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.
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.
Hopefully we can generalize this as well.
- Fleet/Library/Yellow Bikes
- New Parts
- Used Parts
- Yellow Bike uses a transaction log tracking: Date, Sale Type, Amount, Description, Type, sold to, sold by, quantity donated (for yellow bikes and kids bikes to schools). We don't use this for inventory tracking so much as output tracking.
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.
This could be used to sign up for an event or could be used to keep track of people at an event.
This might be a part of Inventory, but a way to easily see what bikes need what work.
This module will track how many frames, wheels and miscellaneous metal recycling. It will also track items given to artists.
Wish List Posting
This could be as simple as a classified section. (Joomla Component Example)
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
- Jonathan Morrison - PHP, etc.,..
- Rich Points - CSS/XHTML
- Nathan Wilkes - PHP, MySQL
- Peter Garver - PHP
- Jay Varner - Perl, etc.,...
- Joshua Moody - Mac