You need to deploy the Platform API first
First you'll need nodejs or io.js installed, npm takes care of the rest of our dependencies.
- nodejs v6
-
Clone the repo
git clone https://github.com/ushahidi/platform-client.git
-
Navigate to project root
cd platform-client
-
Install Build Requirements
npm install -g gulp
-
Install Packages
npm install
This will install both NPM and Bower dependencies! No separate
bower install
command is required. -
Set up build options. Create a
.env
file, you'll need to pointBACKEND_URL
at an instance of the platform apiNODE_SERVER=true BACKEND_URL=http://ushahidi-backend
-
Run gulp
gulp
-
You should now have a local development server running on http://localhost:8080
Our gulp build
- watches for changes
- compiles sass
- compiles js
- rebuilds/reloads any optional servers that are enabled
- live reloads
index.html
--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 themocked_backend/
when API calls are made. See details below.
Instead of having to type the flags every time, you can also use a .gulpconfig.json
file to set the default options for running the client.
NODE_SERVER=true
BACKEND_URL=http://ushahidi-backend
UGLIFY_JS=true
MOCK_BACKEND=false
KARMA_CHROME=false
PORT=8080
NODE_SERVER
- always run thenode-server
taskBACKEND_URL
- set the URL to your instance the platformUGLIFY_JS
- uglify js during builds. Enabled by defaultMOCK_BACKEND
- build the app with an mock backend.KARMA_CHROME
- Use chrome to run karma testsPORT
- set the port to runnode-server
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.
To run unit tests run:
gulp test
To run end-to-end integration tests run:
gulp build --mock-backend
gulp node-server # <- might need to run this in another window
npm run protractor
For test driven development we have a gulp task gulp tdd
. This watches for JS changes and re-runs the unit tests.
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.
Docker is a very simple way to run applications in completely separate server environments. Our Docker application runs a local nginx server that serves the client as simply as possible, using the official Docker nginx server.
To run the Docker container:
- docker build -t ushahidi-client-server server
- docker run --name=ushahidi-client -d -p 8080:80 ushahidi-client-server
Or using fig
fig up
This should bring
Note: If you're on Linux you may have to add your user account (the user running docker commands) to the
docker
group. This prevents any need to run commands withsudo
To check if
docker
group exist, issuegetent group | grep docker
. If the output of the command is empty, issuesudo groupadd docker
Issue
sudo gpasswd -a ${USER} docker
to add the current logged in user to thedocker
group. Log out and then log back in to effect the changes.
Note: The first build of the Docker server can take several minutes. Wait till you see server is live @ http://<ip_address_or_localhost/
before attempting to view the site.
We would love your help, but the platform is in heavy development with a rapid rate of change. If you're keen to help build something awesome, and happy to get deep into the core workings... then yes! Read about getting involved page. Most of our active development happens on the Ushahidi Phabricator. If you haven't used Phabricator before, read Phab Help after you sign up.