This repository contains the user interface of the Rural Accessibility Map, a tool that allows one to assess the accessibility of rural populations in relation to critical services. For more information and an overview of related repositories, please see RAM Backend.
The steps below will walk you through setting up a development environment for the frontend.
To set up the development environment for this website, you'll need to install the following on your system:
If you use nvm
, activate the desired Node version:
nvm install
Install Node modules:
yarn install
The config files can be found in app/assets/scripts/config
. After installing the project, there will be an empty local.js
that you can use to set the config. This file should not be committed.
The configuration is overridable by environment variables, expressed between []:
api
- The address for the API. [API]iDEditor
- The address of the iDEditor. Defaults to themaster
branch of the RAM fork of iD, hosted on GH Pages. (Default: https://id.ruralaccess.info). [IDEDITOR]mbtoken
- The Mapbox Token to load map tiles from. [MBTOKEN]rahUrl
- The url for the Rural Accessibility Hub. [RAH_URL]roadNetEditMax
- Maximum value over which the road network editing is disabled. Must match the value of the same config on the backend. [ROAD_NET_EDIT_MAX]auth
- The configuration for optional authentication with Auth0. By default, no authentication is set (Default: {})auth.domain
- See instructions below [AUTH_DOMAIN]auth.clientID
- See instructions below [AUTH_CLIENTID]auth.redirectUri
- See instructions below [AUTH_REDIRECTURI]auth.audience
- See instructions below [AUTH_AUDIENCE]
Example:
module.exports = {
api: 'http://localhost:4000',
idEditor: 'https://id.ruralaccess.info',
mbtoken: 'asfd23rlmksjdf023rnnsafd',
rahUrl: 'http://hub.ruralaccess.info'
auth: {}
};
For authentication using Auth0, you must setup a client on Auth0 and get your client key. The API must also be setup as in the API section on Auth0.
The config should have the auth
key with the following settings:
auth: {
domain: '<Auth0 namespace>.auth0.com',
clientID: <Auth0 client ID>
redirectUri: 'http://localhost:3000/', # Or your deployment URL at the root
audience: <API audience>
}
yarn serve
Compiles the sass files, javascript, and launches the server making the site available at http://localhost:3000/
The system will watch files and execute tasks whenever one of them changes.
The site will automatically refresh since it is bundled with livereload.
To prepare the app for deployment run:
yarn build
This will package the app and place all the contents in the dist
directory.
The app can then be run by any web server.
The RAM frontend is also available in a Docker container. This container builds the site and serves the interface through nginx. Environment variables will be picked up when the container is run:
version: '3'
services:
ram-frontend:
image: wbtransport/ram-frontend
environment:
API: 'https://new.api.io'
ports:
- 8080:80
To run the full RAM stack in Docker, you can use the docker-compose.yml
file that's available in the RAM backend repo.
The process to release a new version:
- still on
develop
, bump the version inpackage.json
- set up PR, have somebody do a review and merge
develop
intomaster
- CircleCI will add a new tag to git using the version in
package.json
- if the tagging was successful, CircleCI will build the Docker image, tag it with the version number and push it to Docker Hub. If the tagging failed (because the version wasn't updated in
package.json
), the build fails
Once this is done, you can add a new release on Github with useful notes that describe it.