Giter VIP home page Giter VIP logo

migrant_service_map's Introduction

Migrant Service Map

Migrant Service Map-MSM Project

(start date 9.13.18)

The Migrant Service Map is an application which allows service providers to more effectively network with one another in order to provide the best recommendations to their clients.

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, visit Refugees Welcome.

Project Founder:

MapBox Support:

Code for Boston Support:

Project Materials and Communications

Summary

The Migrant Service Map (MSM) was conceptualized as a part of Refugees Welcome!'s 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 includes a comprehensive list of all service providers and the services they offer. The data on service providers in Boston has already been collected by Refugees Welcome! and is geocoded.

Ideal Product Vision

The migrant or service provider is 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 the Refugees Welcome! 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. None of this data would be collected or stored due to security concerns.

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.

Phase One (The Product as of the December 2019 Refugees Welcome! Resource Forum)

Phase one of the Migrant Service Map is geared primarily toward service providers. When they arrive on the site, the service provider is able to select the type of provider(s) that they are looking for, specify a location to search near (such as their client's home or workplace), and choose a distance from that location (.5, 1, 3 and 5 miles) by which to filter their results by.

The categories of providers which are currently included in the map are: Cash/Food Assistance, Community Center, Education, Health, Housing, Job Placement, Legal, Mental Health, and Resettlement. According to the other selections which the user makes (ie a location and/or proximity to it), a list of providers which meet those criteria populates the map and the "Saved Providers" tab. By selecting either entries in the map or from the list in the "Saved Providers" tab, users can see more details about organizations such as their mission statement, location, and contact information. Users can also sort the "Saved Providers" list to make it easier for them to find providers.

Once a user has found organizations which they would like to recommend to a client, they may choose to save them, populating their "Saved" tab. In this tab, the user may reorder organizations manually to provide a list which is most logical to their client, then share this list via email or print it out.

Service providers are also able to update their data or add themselves to the organizations included in the map. There is a form which allows users to provide feedback on the tool as well as complete help documentation.

Next Steps

The next step in this process is soliciting user feedback about the tool. This is essential because the Migrant Service Map did not have substantial user feedback throughout its design or development stages. Getting feedback and input from service providers who are using the phase one of this product should primarily inform design decisions moving forward.

With that said, however, some features were intended for future phases in the original product vision. Those include making the tool accesible for migrants (ie by making it mobile friendly and translating it), creating profiles for providers so that they may save lists or preferences across sessions or clients, and expanding to providers beyond the Boston area. For a complete list of features which were identified for future phases, visit https://refugeeswelcomehome.org/migmap-services/.

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

Run unit tests with npm start. Tests will automatically re-run as you update files.

We use Travis CI for continuous integration and deployment. When a commit is added to a branch or a PR, travis runs tests, builds the app, and reports results in the PR conversation. Travis is configured in .travis.yml and builds are viewable in the Travis dashboard. Travis should pass before merging PR's.

We use Cypress for functional (e2e) testing. Cypress test results from Travis branch builds are viewable in the Cypress dashboard.

Running the Cypress 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.

You can run Cypress tests from the command line using npm run test:cy against a running server, or npm run test:cy-start-server to start a server, run tests, and then shut everything down.

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

migrant_service_map's People

Contributors

advencr avatar alexandraleah avatar alexjball avatar bhinebaugh avatar carpeliam avatar charlaburnett avatar davidnoftsier avatar dnmeyer06 avatar ecbypi avatar endikaserra avatar eric-lazarus avatar ericjbowman avatar grinyahoo avatar jc-clark avatar jonnyjohannes avatar kststudio avatar maiam6242 avatar mattgoldman93 avatar mikeyavorsky avatar mwellman17 avatar p-somers avatar rivison avatar sashamaryl avatar spykins avatar tbfro avatar thadk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

migrant_service_map's Issues

Popups broken

Choosing a category displays matching service providers from those categories as pins on the map. However, clicking on a service provider link from within the menu does not reliably display a popover for that pin on the map with service provider information.

User can't see full name of provider, even in expanded/detail view

In the collapsed view of providers in the results or saved tab, provider name is truncated with ellipsis, e.g. "Housing and Mobile Homeless..." -- fine, makes sense for conserving vertical space.

However upon clicking an item to expand and see more info, name doesn't show in full though it seems that would be the expected, and more helpful, behavior

As a user I'd like to manage organizations in a 'saved resource list'

Story
As a user I'd like to add and remove organizations to/from a 'saved resource list' and organize their order

Requirements:
The user must be able to do each of the following:

  • Add/remove resources to/from 'saved resources'
  • Set the order of the saved resources
  • Hide and show the saved resources on demand
  • Automatically display saved resources as collapsed cards that show only some subset of properties
  • Expand saved resources cards to display more properties
  • Filter which properties are displayed (some finite set of filterable properties must be determined)
  • Drag and drop items to change their order (possibly the ability to drag from the originating resource list to the saved resources as well)[Future Enhancement]

Google Sheets publish link no longer works due to redirect with broken CORS

The request to sheets redirects with a 307 to what looks like a cache server. That server responds with the spreadsheet content but does not set the access-control-allow-origin header, which fails the request due to CORS. This is a server side issue that we can't fix on the client. Downloading directly still works

Immediate-term we can include the csv in the site so the page loads, but we won't pull in new providers.

Long term options:

  1. We can use the Google Drive API to download the sheet. This may require authenticating as a user which would complicate things: https://developers.google.com/drive/api/v3/manage-downloads#download_a_google_document
  2. Use a server to periodically download the CSV and upload it to firebase cloud storage, where the client can access it. Servers can be configured to disregard CORS.
  3. Use a server to proxy sheets access. This could be more responsive to spreadsheet updates. I don't think it makes sense as a solution for MSM since the spreadsheet hasn't actually been touched since launch...

Add topic tags so people can find this project easier

Hello Migrant Service Map team!

I'm Tom, an engineer at Code for America and part of the team of Brigade Network members working to index projects in a way that improves discoverability of projects that are aligned with the Priority Action Areas of the network.

Since this project is featured in the Rapid Response Priority Action Area, we'd love to have it indexed in this effort as well. You can accomplish this by adding these tags to this repository:

  • code-for-america
  • code-for-boston
  • rapid-response

You may want to add other tags as well, to represent technologies in use, the format of the project, or any other affiliations. Here is a great example of a repository tagged for increased discoverability.

One more thing! While you're updating the repository, you may want to check that the repo's description and web URL are up-to-date. We will use those fields to send interested people to the right place.

Thanks! Let me know if you have any questions about this!

pick one styling system and remove others

We Chose CSS-Start Now

There are multiple styling systems here, and I think that is causing trouble. I suggest we pick one and strip the others.

I don't have too much experience with these.
@mikeyavorsky -- opinions?

PS This would be in addition to the map styling, which we can't lose, but doesn't do everything we need.

As a user I'd like to export, email and print saved resources

Story
As a user I'd like to organize, export, email and print saved resources

Requirements:
The user must be able to do each of the following:

  • Send the saved resources in an email
  • Export the saved resources into a file
  • Print the saved resources

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.