/migrant_service_map

Refugees welcome

Primary LanguageJavaScript

Migrant Service Map

Migrant Service Map-MSM Project

(start date 9.13.18)

Partners: MapBox and Code for Boston

Thanks for choosing to support our initiative to support and strengthen migrant service provision in the greater Boston area. For more information about our organization, vist Refugees Welcome.

Project Lead:

MapBox Support:

Code for Boston Support:

Project Materials and Communications

Summary

The Migrant Service Map (MSM) was conceptualized as a part of our ongoing research on streamlining migrant services in Boston. The objective of the map is to act as a spatial guide for migrants and service providers to find specific types of services closest to them and their clients. The database would include a comprehensive list of all service providers and services offered desegregated by service type and migrant status. The data on service providers in Boston has already been collected by Refugees Welcome! and is geocoded.

Features

The migrant or service provider would needs to be able to click on the MSM link and be transferred to a questionnaire page where they would be asked whether they are service providers or migrants. The next page would ask the service provider if they have become a part of our network and offer a separate link to apply to the RW! Network. This page would also ask what the legal status is of their client, the address of the client, and what types of services they are looking for. The legal status is important because undocumented and asylum seekers cannot receive all public services.

The types of services include, housing, work placement, english, legal assistance, registration, health, mental health, community centers, and education. The map would conduct a spatial analysis to highlight each service provider within .5, 1, 3, and 5 miles of the address entered for whichever legal status and service applies to their search. The migrant or service provider will be able to click on the service provider points and is provided with a comprehensive overview of the services provided and contact information. This tool will be used by service providers and migrants to find and plan the integration of new arrivals to Boston. As a result, it would be helpful if the platform could keep a record of each point of interest that then could be easily printed. That way service providers can give clients an easy list of service providers to contact upon arrival.

Getting Started

Prerequisites

Node

If you don't have nodejs installed, install it. If you don't know, do node --version in your terminal/command prompt. If you don't get a number, you don't have it.

Git and Github

If you're new to github check out Github Guide, Hello World to make an account and get started with Github and How to: fork a repo to learn how to fork a repo.

Setup

  1. Fork the repository: On GitHub, navigate to the repository. In the top-right corner of the page, click Fork.
  2. On GitHub, navigate to your fork of the migrant_service_map repository. In the Clone with HTTPs section, click to copy the clone URL for the repository.
  3. Clone your fork: In your terminal type git clone, paste the URL you copied and press enter. In your terminal/command prompt cd (change directory) into the new folder. Inside the directory:
git clone \
https://github.com/YOUR-USERNAME/migrant_service_map.git
cd migrant_service_map
  1. Add the migrant_service_map repository as a remote to your fork:
git remote add upstream \
https://github.com/codeforboston/migrant_service_map.git
  1. Installing: Checkout branch reboot and install
git checkout reboot
npm install

Reboot is the active development branch. Do not touch the master branch.

Running the App

  • In your terminal/command prompt run npm start to start the app. It will open automatically in a browser window.

  • To stop the local server press ctrl + c in your terminal

Updating

To learn more about keeping your fork up to date view this article,1. When there is an update, in your terminal inside your local repo:

git checkout reboot
git pull upstream
git pull upstream reboot

After running this command once, you may omit the git pull upstream step, and only enter git pull upstream reboot.

If there is a merge conflict that cannot be resolved automatically, the output from the git pull command will read: "Automatic merge has failed; fix conflicts and then commit the result." For more information, read this article.

REMEMBER: If there are no merge conflicts, or after resolving any conflicts, run the following in terminal:

npm install

Testing

We use Travis CI for continuous integration and deployment (automatically run tests and deploy the website). Travis is configured in .travis.yml and builds are viewable in the Travis dashboard.

Travis builds the app (it runs npm run build) when a commit is added to a branch or open pull request. This provides a basic sanity check for the app. Pull requests should build successfully before being merged.

We use Cypress for functional (e2e) testing. To install Cypress, run the following from within the migrant_service_map directory:

npm install cypress --save-dev

Running the test suite requires that a local version of the site is available at [http://localhost:3000/]. This can be done with the command npm start. Then in a separate terminal, run the following to open the Cypress interface:

$(npm bin)/cypress open

All tests can be run by clicking Run all specs in the top-right of the application window.

Deployment

We use Firebase to host the app at migrant-service-map.web.app and migrant-service-map.firebaseapp.com. Firebase is configured using .firebaserc, firebase.json, and the migrant-service-map project page. We use the free Spark plan, which should be more than enough for development, testing, and demos. If we go over the monthly limits, the site is disabled until the next month (or we upgrade to a paid plan).

We use Travis to automate the deployment process. Whenever the prod (production) branch is updated, Travis builds the app as for any other commit. Then, if the build succeeds, it uploads the site to Firebase using the token stored in .travis.yml. The token is set up using these instructions.

Tech Stack