Like a car navigator but for taking public transport, based on Open Data.
Demo installation at http://dev.hsl.fi/navigator-proto
Use cases:
- Type in a destination address and get directions from the current location.
- Choose a public service by category and get directions to closest premises.
- Browse a map and tap a location to get directions.
Features:
- Current location is queried from the device automatically.
- Destination addresses are completed as you type.
- Current location is updated on the map as the device moves.
- Directions can be updated by tapping the current location.
Open Data used:
- OpenStreetMap
- Public transport timetables by Helsinki Region Transport
- Service Map by City of Helsinki
- House address database by City of Helsinki
Technologies used: HTML5, Geolocation, Local storage
Libraries used: jQuery Mobile, Leaflet, Backbone.js, Moment.js
Node.js with NPM 1.2 or newer is required to build the project. For
Ubuntu 12.04 LTS, this can be acquired with
sudo add-apt-repository ppa:chris-lea/node.js
followed by sudo apt-get install nodejs
.
If for some reason you want to build and install Node.js from sources see:
https://github.com/HSLdevcom/hsl-navigator/wiki/Building-node-from-sources
After installing Node.js go to the directory where you want to install the City Navigator.
There, run git clone https://github.com/codeforeurope/navigator-proto.git
.
In the navigator-proto directory install dependencies with npm install
.
Install build tool with sudo npm install -g grunt-cli
. Run
grunt server
and if everything goes well open
http://localhost:9001/ with your web browser.
Or, install build tool with npm install grunt-cli
and run dev server with
node_modules/.bin/grunt server
.
If you encounter errors, you may want to run commands sudo apt-get dist-upgrade
and
sudo apt-get update
to make sure everything is up-to-date.
You may want to change some settings, for example the city where the navigating is
supposed to happen. To do so, run
cp src/local_config.coffee.template src/local_config.coffee
and modify
src/local_config.coffee
according to the comments within the file.
Install testem with sudo npm install -g testem coffee-script
. Install
the headless browser Phantomjs with sudo apt-get install phantomjs
.
Run tests with grunt test
.
To test on Firefox and Chromium, run grunt test-desktop
.
To test on a different set of browsers, you can edit the option
testem.desktop.options.launch_in_ci
in Gruntfile.coffee
.
Tests can be run on mobile browsers at SauceLabs. (Unfortunately, the current SauceLabs integration for testem is mostly just a hack and that's why the current experience is quite poor.)
Install saucelauncher from source with sudo npm install -g saucelauncher
.
Add ~/.saucelabs.json
in a format:
{
"username": "mysaucelabsuserid",
"api_key": "mysecretsaucelabsapikey"
}
Run tests with grunt test-mobile
.
Run grunt test
at least once before (to generate working testem.json
).
Start watching test environment with testem
.
Follow instructions on screen to register browser with testem.
Edit test below ./tests
. Tests are run when changes in test suites are
detected.
Run python bootstrap.py --version 2.1.1
and bin/buildout
.
Run grunt test-robot-desktop
.