HTML Ruby CSS JavaScript
Permalink
Failed to load latest commit information.
app Fixed workshop times and schedule Feb 28, 2017
bin Ready to merge Aug 22, 2015
config Fixed workshop times and schedule Feb 28, 2017
db Moved to GMail and fixed administration errors Feb 20, 2017
doc adding setup notes for getting started with ubuntu Sep 3, 2014
features Made user email case insensitive Jan 7, 2017
lib/tasks 2016 design May 10, 2016
nbproject Some updates to translation engine, added dotenv but have not yet set… Apr 30, 2014
public Replaced delayed job with sidekiq Jun 29, 2016
script 2016 design May 10, 2016
tmp/locales moved translation-info.yml to temporary directory since it is only us… Sep 3, 2014
vendor/assets Added conference list page, administration tools, and re-designed con… Dec 12, 2016
.coveralls.yml Bumped VERSION to 0.1.3 Apr 20, 2013
.gitignore Long tail of style and accessibility fixes Jun 3, 2016
.rspec Some updates to translation engine, added dotenv but have not yet set… Apr 30, 2014
.slugignore moved files to proper folder Apr 19, 2013
.travis.yml setup the test db Sep 11, 2014
CHANGELOG.md Updated gems Sep 28, 2013
Capfile Added capistrano to help speed up sass compilation May 21, 2016
DB specs.txt Fixed some issues with registration Mar 16, 2014
Gemfile Moved to GMail and fixed administration errors Feb 20, 2017
Guardfile Some updates to translation engine, added dotenv but have not yet set… Apr 30, 2014
LICENSE Bumped VERSION to 0.1.3 Apr 20, 2013
README.md Edited git and deploment workflow Oct 9, 2015
Rakefile Fixed city caching Dec 14, 2016
VERSION Updated gems Sep 28, 2013
bower.json The working basics Mar 9, 2014
config.rb The working basics Mar 9, 2014
config.ru Bumped VERSION to 0.2.0 May 2, 2013
jpegoptim.exe The working basics Mar 9, 2014
optipng.exe The working basics Mar 9, 2014
pngquant.exe Fixed 404 and 403 errors Dec 25, 2016

README.md

Bike!Bike!

This is the development repository for Bike!Bike! Progress can currently be seen at preview.bikebike.org and in production at bikebike.org

If you're about to get started contributing please contact Godwin: goodgodwin@hotmail.com. Also try to familiarize yourself with the technologies we're using, our collaboration tools, requirements, coding conventions, style guide, and testing practices.

Technologies

Internal Gems

We will make a commitment to extract any functionality that makes sense to do so, into separate gems in order to share functionality with others, with our other projects (such as bikecollectives.org), and to enable easier collaboration amongst ourselves.

Here is a list of the gems we have created so far, if you are a collaborator on this project you may need to become a collaborator on these gems as well. Don't hesitate to make a request, it won't be denied:

Lingua Franca

Lingua Franca provides an easy way to include translatable content and provides a user interface for translators to provide translations. See Translations for best practices on the Bike!Bike! website.

Bumbleberry

Bumbleberry provides cross-browser support with little effort and minimum file sizes. Basically it creates a different stylesheet for every known browser and only includes supported rules for each using information obtained from caniuse.com.

Collaboration Tools

Github Workflow

If you are a git wiz, feel free to adjust the steps below slightly, otherwise follow these steps until you are familiar enough to stray. What should remain constant is that we need to branch, code review, and merge with master.

  1. Before you start working on a new feature, start working on a new branch (alternatively you can fork): git checkout -b myname_new_feature
  2. Write your new feature
  3. Add tests and execute them using bundle exec rake cucumber
  4. Make any adjustments, make sure you have included comments and abided other coding conventions
  5. Check your git status to make sure you are on the correct branch and have any new files to add: git status
  6. Add any new files using: git add [myfile]
  7. Commit your changes: git commit -am 'My commit message'
  8. Switch back to the master branch and pull the latest: git checkout master && git pull
  9. Switch back to your branch: git checkout myname_new_feature
  10. If there were any changes, rebase (if in doubt, rebase). This merges in the new code with your new code: git rebase -i origin/master
  11. Push your changes: git push origin myname_new_feature
  12. Make a pull request and wait for your code to be reviewed
  13. If any changes are required, make them commit your changes, and rebase again. This time you need to make sure that you squash your commits (makes sure you only add one commit in the end). Where you see your commit message, change 'pick' to 'fixup' or 'f'.
  14. Push your code again and repeat 12 and 13 until your code gets merged with master

Deployment Process

Please note, we currently don't have this process set up, we're working to get here.

  1. Write code and get it pulled into master
  2. Your changes will be automatically be deployed to our preview site
  3. Your changes will be tested there, if tests fail deployers will be notified
  4. Once that deployment process completes and tests pass, translators will be notified if there are new translations
  5. Once translators have completed translations, translations will be committed to master and your changes will be deployed to production

Requirements Overview

Bike!Bike! is a conference which is held in and hosted by a different city each year. The conference is specifically for not for profit bicycle collectives (5013c or equivalent status is not required). There are also 'Reginal Bike!Bike!s' which can be hosted by any organization at any time of the year.

The Bike!Bike! website will help coordinate these conferences, allowing users to register, to create organizations, and organize conferences.

Users

Users should be able to register and log in, either with our system or using Facebook. We will store user name, encrypted passwords, email addresses, avatars, and user settings.

Organizations

An organization can be created by any user. An organization has a name, location, logo, email address, and some additional optional settings. An organization also contains a list of users which can interact and represent the organization on the site. A user is added to the organization by either:

  1. Creating the organization
  2. Requesting membership
  3. Being invited by an existing member

Organizations can be set up to allow anyone to become a member, require verification, require a secret password, or only allow invitations.

Conferences

Conferences can be created by any user who is associated with an organization. A conference has a name, date, location, a list of host organizations, and optional administrators.

A conference can be modified by anyone who has been added as an administrator directly, or is a member of any of the host organizations.

Registration

Any member of the site can register for a conference. A form must be constructed by the conference corrdinators and must then be completed by the registrant.

Workshops

Any user who is register for a specific conference can propose workshops for that conference. A workshop is later scheduled by the conference coordinators if they decide to include it in the conference. A workshop can have one or more facilitators which are added in a similar process as users are added to an organization.

Events

Events are created and scheduled by conference coordinators.

Coding Conventions

Ruby

CoffeeScript

Haml

SCSS

Translations

Translating our site into multiple languages is a key part of opening it up to the world. When coding, never include any English text as in a string or Haml. Instead, we shall always use the underscore helper method _. The method takes a translation key and some optional parameters.

All translation is done in a collaborative, volunteer based system on the site itself, even the English text. If a user has sufficient permissions, the underscore method will produce highlighted text which can be edited directly by the user.

The method can be used as follows:

_ 'basename.my_key'

_ 'basename.my_key', :paragraph

end

If the key does not exist, the previous lines will produce the following respectively:

'my_key'

'Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
    Vivamus magna justo, lacinia eget consectetur sed, convallis at
    tellus. Proin eget tortor risus. Donec sollicitudin molestie
    malesuada. Donec rutrum congue leo eget malesuada.'

If the user has sufficient rights, these blocks will also be surrounded by the necessary markup to allow them to be selected and edited by the user.

Translations are recorded during testing and committed to the repository when pushing to github. After pulling down the latest version from github you should always run rake translations:migrate to put the latest migrations into your database.

Style Guide

On hold until our design team determines a director for our identity.

Testing Practices

Our focus will be on integration testing using Capybara. While testing the app records all translations that it finds, whether or not they exist, and which pages that they were found on.