codebar's tutorials
JavaScript HTML CSS Ruby
Failed to load latest commit information.
_includes/post render stylet markdown on Jekyll Oct 29, 2013
_layouts Linkify text on index page, add favicon Nov 16, 2016
android/introduction Fix markdown formatting because github Nov 16, 2016
coaches Fix markdown headings Mar 24, 2016
command-line/introduction Explain what happens if you 'rm -rf /' Aug 29, 2016
examples add sixth tutorial Jan 29, 2014
general/setup fixing merge conflicts in general/setup/ Aug 27, 2015
html Added linebreaks to ensure headings render correctly. Nov 9, 2016
javascripts-dev Fix the test for the asynchronous zip generation Sep 24, 2016
js Fix typo in JavaScript tutorial (#333) Jan 19, 2017
php/lesson1 Minor improvements to the PHP tutorial 1 May 15, 2016
python amends to js tutorials Nov 4, 2016
stylesheets Correct CSS 'property: value' spacing. Aug 8, 2014
version-control Fix markdown headings Mar 24, 2016
.gitignore Add gulp to concat/minify JS and serve the specs page May 21, 2016
.ruby-version Add ruby version file Nov 30, 2015
CNAME setting up DNS Mar 31, 2014
Gemfile Dependancies: Lock down with Gemfile Jun 17, 2015
Gemfile.lock Upgrade all the gems Nov 30, 2015 Reword README and provide a link explaining how to install Ruby Sep 24, 2016
_config.yml amends to js tutorials Nov 4, 2016
favicon.ico Linkify text on index page, add favicon Nov 16, 2016
gulpfile.js Add the main and the bundle of all files for production May 21, 2016
index.html Linkify text on index page, add favicon Nov 16, 2016 made some little tweaks to the HTML tutorials Oct 23, 2015
package.json Add gulp to concat/minify JS and serve the specs page May 21, 2016
params.json Create gh-pages branch via GitHub Oct 23, 2013

This is the source code for

Getting started

This is a GitHub Pages repo, so you can render the pages with Jekyll. First make sure to install the version of Ruby indicated in .ruby-version, as well as the bundler gem. Then:

  1. bundle install, which will install Jekyll
  2. bundle exec jekyll serve --watch
  3. go to http://localhost:4000

(you could also use your favorite manager, chruby, rbenv, rvm, etc. See intructions for rvm at the end of this README)

If you are just updating or adding new tutorials, follow steps 1 to 3 only.

If you also want to make changes to the structure of the site (i.e. if you want to modify the site's Javascript files) and run the tests, you need to install Node (follow the link for installation instructions). Then:

$ npm install
$ gulp

and go to http://localhost:4000/test/specrunner.html to run the tests. Tests should be green.

Gulp is only used for development, not in production. In your local copy of this repo, it will concatenate and minify the files inside the javascripts-dev folder, as well as watch for changes in that folder. The concatenated and minified JS file will be generated inside the javascripts folder. You can push both folders when you are finished with your changes. GitHub pages will then generate the site in production with whatever is inside the javascripts folder.

Getting in Touch

You can go to the general codebar Slack channel here or the dedicated tutorials channel here. Use it to get in touch and chat to other codebar students/coaches, or if you need help.

If you are not on Slack use this link to get an invite.


We encourage you to contribute with your suggestions and corrections. Head to our issues page and open a new issue or help on the existing ones.

General tutorial rule
  1. All tutorials get the students to build something that they are able to show around at the end of the workshop.

  2. All tutorials follow a structure:

    • Objectives - "In this tutorial we are going to look at..."
    • Goals - "By the end of this tutorial you will have..."
    • Then the exercises.
      • Bonus - This is not always required but if you feel there is something that could be added then please include it.
      • Further reading - Again this is not always required but if you feel there was something in the tutorials that could be covered in more depth then please include any good reading materials/videos or extra tutorials.
  3. Repetition is good. A tutorial can contain multiple exercises that ask the students to take similar steps (e.g. for HTTP Requests one exercise introduces GET, another has GET and POST etc).

  4. Explaining and getting the students to focus on one new thing at a time, presenting students with lots of new content and usage examples can be confusing.

  5. Before starting to write a new tutorial please speak with someone from codebar to see whether it is of interest to students.

To add downloadable files to a new or existing tutorial:
  • Add a folder with your exercise files inside the tutorial folder. For example, for Javascript lesson 3:
├── assets/
├── files/
│   ├── index.html
│   ├── jquery.js
│   ├── script.js
│   └── style.css
  • Add a frontmatter variable files to the tutorial page with a list of the files you added, including folder name:
layout: page
title: Introduction to jQuery
  - files/index.html
  - files/jquery.js
  - files/script.js
  - files/style.css
  • In the copy of the tutorial, add your link to the files, making it point to just download:
Download the files that you will need to work through the example

And you're done. Commit and push as usual.


Another way of installing the project depdendencies is via RVM. Follow the quick installation guide and then run:

$ rvm install 2.2.1  # inside `codebar/tutorials` folder
$ rvm gemset use codebar-tutorial --create
$ gem install bundler
$ bundle install
$ jekyll serve  # go to

If you also want to make changes to the JavaScript of the site, you'll need to have Node installed. This can be done with a tool like NVM.


codebar Tutorials are released under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).