Ushahidi Platform Client

by ushahidi


Ushahidi Platform Web Client

Greenkeeper badge

Build Status Coverage Status Dependency Status

Try it out on Heroku


You need to deploy the Platform API first

Getting set up for development


First you'll need nodejs or io.js installed, npm takes care of the rest of our dependencies.

  • nodejs v6

Install, build and run a local dev server

  1. Clone the repo git clone

  2. Navigate to project root cd platform-client

  3. Install Build Requirements

    npm install -g gulp
  4. Install Packages

    npm install

    This will install both NPM and Bower dependencies! No separate bower install command is required.

  5. Set up build options. Create a .env file, you'll need to point BACKEND_URL at an instance of the platform api

  6. Run gulp

  7. You should now have a local development server running on http://localhost:8080

Extra config and options

Download and Activate Live Reload Plugin


Our gulp build

  • watches for changes
  • compiles sass
  • compiles js
  • rebuilds/reloads any optional servers that are enabled
  • live reloads index.html

Optional parameters

  • --node-server - start a self-hosted server, instead of using a native web server like Apache or nginx. This simple server will be running at: http://localhost:8080.
  • --mock-backend - build the app with an mock backend service, delivering the JSON files in the mocked_backend/ when API calls are made. See details below.

Set default options with .env

Instead of having to type the flags every time, you can also use a .env file to set the default options for running the client.

  • NODE_SERVER - always run the node-server task
  • BACKEND_URL - set the URL to your instance of the Platform API
  • UGLIFY_JS - uglify js during builds. Enabled by default
  • MOCK_BACKEND - build the app with an mock backend.
  • KARMA_CHROME - Use chrome to run karma tests
  • PORT - set the port to run node-server
  • APP_LANGUAGES - sets the available languages. Defaults to showing all languages
  • OAUTH_CLIENT_ID - sets the client id required by the API
  • OAUTH_CLIENT_SECRET - sets the client secret required by the API

Optional: Mock Backend

You can run gulp build with a --mock-backend option. This builds the app with an http mock service that provides a mock API that can be used for testing and client side development. When running the mock backend nothing can be persisted or deleted, but otherwise the client should be fully functional.

To build with the mock backend service, run gulp build --mock-backend.

This can be combined with the --node-server flag for a completely self-hosted Ushahidi Platform demo.

Running unit specs

To run unit tests once, run:

gulp test

For test driven development we have a gulp task gulp tdd. This watches for JS changes and re-runs the unit tests.

Native Server (Apache or Nginx)

If you are running the client with a native web server like Apache or nginx, you will need to use URL rewriting to point all non-existant files to index.html. There is a sample .htaccess file, which can be used with Apache:

% cp server/rewrite.htaccess server/www/.htaccess

Nginx users will have to manually configure rewriting in the site configuration file.

I'm a developer, should I contribute to Ushahidi 3.x?

Yes! Development moves pretty quickly but the tech stack is getting more and more stable. If you're keen to help build something awesome, jump on board..