Bike Collective Software: Difference between revisions

From Bike Collectives Wiki
 
(21 intermediate revisions by 9 users not shown)
Line 1: Line 1:
This is the collaborative project description for custom '''bike collective software'''.
This is the collaborative project description for custom '''bike collective software'''.
==Please note==
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.


== Requirements ==
== Requirements ==
Line 8: Line 11:
# Internationalization via simple language file options.
# Internationalization via simple language file options.


== CMS Systems ==
== Existing CMS Plugins ==
 
Here are some test systems you can experiment on.  If you want a login, or even your own test site let [mailto:jonathan@slcbikecollective.org Jonathan Morrison] know.
 
* [http://drupal.bikecollectives.org/ Drupal]
* [http://joomla.bikecollectives.org/ Joomla]
* [http://wordpress.bikecollectives.org/ Wordpress]
 
=== Jonathan Morrison's Opinion ===


My background is in software engineering as is my degree.  I actually installed [http://wordpress.bikecollectives.org/ Wordpress], [http://joomla.bikecollectives.org/ Joomla], [http://drupal.bikecollectives.org/ 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?"
''The following extensions have similar functionality to what we hope to buildPerhaps we can combine efforts, or fork off their current effort.''


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 [http://bikegeeks.org/ 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 ==
* [http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,72/Itemid,35/ CiviCRM]
* [http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,72/Itemid,35/ CiviCRM]
** '''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
* [http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,95/Itemid,35/ JEvents]
** Events calendar with several display modes
* [http://www.gesellix.de/index.php?option=com_remository&Itemid=9&func=fileinfo&id=6 Mailman Subscribe Module]
** Little wrapper to let visitors (un-) subscribe from a [http://www.gnu.org/software/mailman/index.html Mailman] email lists.  Currently used on [http://www.bikecollectives.org/ www.bikecollectives.org] and [http://www.slcbikecollective.org/ www.slcbikecollective.org]
* [http://gallery.menalto.com/ Gallery2] and [http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,137/Itemid,35/ Gallery2 Bridge]
** Very common photo gallery that has been bridged to Joomla.
* [http://www.musiker.nu/objectstudio/newsmailer/index.php 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.
* [http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,103/Itemid,35/ 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.


== Features ==
== Features ==
Line 34: Line 36:


=== Interface ===  
=== 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.   
* Hopefully [http://en.wikipedia.org/wiki/Ajax_(programming) 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.  
* 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.
** 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.  
** 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.
* Database change tracking and deletions.
** Time stamp every change to the database
** 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.   
** 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.
 


=== Hour Tracking ===
=== 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.
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:
The system must have the following capabilities:
Line 54: Line 55:
** Allow for override of current time with password authorization.   
** Allow for override of current time with password authorization.   
** Time selection should be intuitive and quick
** 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
*Relationship to events
** Allow individuals to pre-register (volunteer) for events.   
** Allow individuals to pre-register (volunteer) for events.   
Line 94: Line 98:
* Tools
* Tools
* Rentals
* Rentals
Example
* 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.


=== Event Listing ===
=== Event Listing ===
Line 147: Line 154:
== Developers ==
== Developers ==


* [mailto:jonathan@slcbikecollective.org Jonathan Morrison] - PHP, etc.,..
* [[User:jonathan|Jonathan Morrison]] - PHP, etc.,..
* [mailto:rich@richpoints.com Rich Points] - CSS/XHTML
* [mailto:rich@richpoints.com Rich Points] - CSS/XHTML
* [mailto:nwilkes2@gmail.com Nathan Wilkes] - PHP, MySQL
* [mailto:nwilkes2@gmail.com Nathan Wilkes] - PHP, MySQL
* [mailto:pgarver@gmail.com Peter Garver] - PHP
* [mailto:pgarver@gmail.com Peter Garver] - PHP
* [mailto:jayvarner@gmail.com Jay Varner] - Perl, etc.,...
* [mailto:jayvarner@gmail.com Jay Varner] - Perl, etc.,...
* [mailto:moody@bicyckekitchen.com Joshua Moody] - Mac

Latest revision as of 21:03, 1 October 2016

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

Please note

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.

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.

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.

  • CiviCRM
    • 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
  • JEvents
    • Events calendar with several display modes
  • Mailman Subscribe Module
  • 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.

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. 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.

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 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
    • Comments
  • Interface
    • 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.

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

Example

  • 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.

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