Code Monkey home page Code Monkey logo

communityconnect's Introduction

Community Connect

A tool for connecting those in need to services or materials that improve their quality of life.

Click to read more

"Community Connect" is a health resource web application that aims to consolidate information about businesses and organization available in communities that promote healthy lifestyle choices. A health resource is defined as services or materials that improve the quality of life of others, ranging from affordable child care, substance abuse counseling, domestic violence support, and more. We are working in conjunction with Massachusetts General Hospital's Center for Community Health Improvement, MGH Revere HealthCare Center, and Revere CARES Coalition to create an extensive database in our pilot region of Revere, Chelsea, Charlestown, and eventually the Greater Boston Area.


Table of Contents


Features

  • Dynamically updated resources from any Google Sheet
  • Save resources for viewing later
  • Share a link with your saved resources
  • Filter resources by category or search term

Getting Started

Live Demo

Want to see what Community Connect is all about? Check out our live site for Revere at ccfor.me/revere. To manage resources, enter the 'admin' view by adding /admin to the end of the URL, such as ccfor.me/revere/admin.

Running Locally

  1. Clone the repository
  2. Install yarn
  3. Install dependencies by running yarn
  4. Start the development server by running yarn start
  5. Visit localhost:3000 in your browser to see it running! 🎉

Customizing Google Sheet

You can use a custom Google Sheet with your local installation of Community Connect. You might want to do this for testing or development purposes. Prefer to see a gif of this process instead of reading steps? Click here

Click to see instructions for creating your own sheet
  1. Visit the current spreadsheet
  2. Click File and select Make a Copy
  3. Click OK
  4. When viewing your copy, click SHARE in the upper-right hand corner.
  5. Click "Get shareable link" in the upper-right hand corner of the modal.
  6. Ensure that "Anyone with the link can view" is selected.
  7. Copy link
  8. Click done
  9. Click File and select "Publish to the web"
  10. Click Publish
  11. Open "src/googlesheetApi.js" in the codebase
  12. Replace "revere_key" with a portion of the URL in your clipboard
  13. For Example, if the URL of your Google Spreadsheet is https://docs.google.com/spreadsheets/d/1FRd8Jw7y4CnnHCKIvkM-pjNjRVFHFHuobVU-ajXre6M/edit?usp=sharing

    Set the build-time environment variable REACT_APP_GOOGLE_SHEETS_ID to "1FRd8Jw7y4CnnHCKIvkM-pjNjRVFHFHuobVU-ajXre6M"


Contributing

Thank you for your willingness to help out! To get started on helping build Community Connect, take a look at our contribution guide.


Support

Join our Code for Boston Slack channel: #community-connect or look for us at the Code for Boston Tuesday meet-ups.


License

MIT License


History

The original architectural design for this app was designed proven out by Bob Breznak for an organization assisting with the refugee crisis in Greece in 2016, Prosper. They needed help consolidating, vetting and displaying resources on the web. In May 2018 he re-wrote the frontend in react.js to create an app that assists homeless people Seeking Shelter and resources. In August 2018 Code for Boston’s Community Connect project had similar aims and the repo was moved into their org. The data used for this project was initially collected from Nevil Desai during his internship with Revere CARES, a coalition group under the umbrella of MGH Center for Community Health Improvement.

communityconnect's People

Contributors

2001zhaozhao avatar acharliekelly avatar alxhghs avatar atul9 avatar bobbrez avatar bran-van-d avatar davidholyko avatar davidnoftsier avatar dependabot[bot] avatar dohveloper avatar fma126 avatar galiat avatar hvanaelst avatar irv-codesquad avatar johnpyp avatar khoawala avatar lucaspchartier avatar lukehollis avatar microcat49 avatar misspran avatar mzxbliss avatar ndesai06 avatar rahulmotan avatar rajchaudhry avatar sayansaha1143 avatar sbose78 avatar scapp281 avatar timtheguy avatar tshin7 avatar vipinchacko 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

Watchers

 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

communityconnect's Issues

Distance from current location is not being shown correctly on OrganizationCard

Expected behavior:
When accepting the browsers request to use location, the users current location should be loaded into the application and used when measuring the distance to organizations (as seen on the OrganizationCard components)

Actual behavior:
The distance shown on the OrganizationCard components is inaccurate.

I checked and all of the correct coordinates are getting fed into the getDistance function, so I think there is something wonky with the algorithm itself.

distancecalculatedfrommylocation
distancefrommylocationtofriendlygarden

Multiple Category Selection not working

Currently when you select multiple categories, the check box will show for what was selected, however the resource list only shows resources specific to the last category selected.

Deep Linking: use URL param to show an org

Each org now as a key called id.

If the URL contains an id (something like https://communityconnect.netlify.com?id=3), set the state as though the user has searched by that orgs name & clicked the pin on the map.

It would make sense in the callsheets function to create a hash where the key is the org's id and the value is the index of the org in the orgs array. @microcat49 is doing something similar for lat & long, so talk to him or @galiat if you have any questions about this

related to #93

When a Category is selected for filtering, display it

Would love for people with an eye for design to chime in. When a category is selected & we are filtering results, it would be handy for our user to know that a filter is in place & what that filter is.

How it currently looks is displayed below. Was thinking:

  • in the dropdown: have a checkmark or have the selected one be another color.
  • in the header next to 'Categories' display the currently selected category.

image

Add Guided Search Feature to filter out unnecessary information through "target audiences"

Yes or no questions that filter through all the resources to only display relevant to the users situation. Ex. A young man with no children with a low SES status should not have pins for WIC and breastfeeding clinics. Some questions could include: "Do you have children?", "Is English your first language?", "Have you ever experienced food or housing insecurity?"

(STAGE 1) Search Feature specific to Name and Address

On the top of the screen, a search bar that pulls from the Name (Column C) and Combined Address (Column M) so that a user can find a resource that they may already know of without having to go through the filtering process or scrolling down the list.

Refactoring codes

I think app.js is getting pretty long and will be hard to read for newcomers. Can we refactor this with some javascript structure standard that I'm not aware of?

Pin on map showing after selecting resource

If someone selects a resource from the list, then the box with the pin to its physical location should come up - this way an individual doesn't have to manually find the address in the map after scrolling through the list and seeing a resource they want to visit/learn more about.

(STAGE 1) Connect resource information on the left side to its pin on the map

If a resource is selected on the left side, then the map should show that pin with the box of information open above it. Conversely, when a pin on the map is selected, the left side of the page should display relevant information for that resource. Currently, the two sides of the screen are acting like 2 separate entities.

Mobile Responsive Application

We need to make sure the application looks and works similar to the normal application in a phone view. Fixing minor issues like being able to click the "Category" drop-down while viewing on a phone, could be a start.

Distance from current location

I think it would be helpful for users if along with the address of the location, we could add a distance in miles from the current user's location for each of our displayed result.

Issue with Multiple Resources on 1 Address

When multiple health resources have the same address, no information is shown when clicked on the cluster (goes from a blue cluster to yellow) at that point. It would be great to see a tiled list of all the resources available at the address in a similar fashion to the list on the left side of the screen.

Ex. 300 Ocean Avenue, Revere, MA 02151 has 10 health resources:

  1. MILC (Mother Infant Lactation Club) Breastfeeding Support Group
  2. Reach Out and Read
  3. WIC (Women, Infants, Children)
  4. Cambodian Diabetic Coaching Program
  5. CORE Health
  6. Diabetes Eye Program
  7. Revere on the Move
  8. ARCH (Access to Resources for Community Health
  9. Revere HealthCare Center
  10. Department of Transitional Assistance (DTA)

Improve Link on the Org Card

Clicking on the link icon should open the resource's website in a new page/tab, but right now it zooms the map & opens the link in the same tab

image

Home Button on the Top Bar

I think having a home button or something similar on the top bar would be a great feature to have so that when someone is looking at information from the box of a selected resource, they can easily navigate back to where they started (original screen) without having to refresh the whole page.

(STAGE 1) Re-working Category List

Currently, the category list is a drop down feature that only allows user to select 1 category to filter resources. It also requires users to refresh the page to select another category or view the entire list again. However, we should add boxes next to the resources so that a user can select 1 or more categories and then have the option to clear them to bring back the full resource list (see image below).

Finda Github- https://github.com/codeforboston/finda

screen shot 2018-09-25 at 8 55 02 pm

"Community Connect - Revere" in Header is no longer clickable

Before the recent header update, the "Community Connect - Revere" on the header was clickable and would refresh the page if a user wanted to start fresh after selecting multiple resources, categories, etc. This is no longer available. This could also be merged with #99 so that the logo is now the clickable option in the header.

Edit description box of a pin on map

Format those boxes to include the information from its row. A designated place for each row (ie. services provided, social media, comments, contact info, etc). Currently the box says "undefined" so maybe that is something to look at too!

Feature Request: Add icon next to name of resource to help users identify category

For each resource listing, we can add an icon right next to the name of the organization so it's easy to see what type of resource it is. For example, if it's a park, the icon chosen can be a tree and if it's a farm, it can be represented it with a carrot or corn.

The goal is to easily differentiate this resource from other categories once we implement the free-text search input

Free icons/assets can be found here: https://fontawesome.com/

Feature: Location-based Search Result

After the user enables location, a search option should be available to see all health resources within a specific radius. This options allows users in between 2 communities to access whatever is closer

(copied from todo list tab on spreadsheet)

Map zoom level

When first loaded, the map is zoomed way out:
image

It'd be easier to use if it started zoomed into a level where individual entries are visible.

Include all Available Information about a Resource when pin is selected

In the database, there's a column that includes the services provided by each resource (Column I). Currently, that information is not displayed on the org pin when the pin is selected on the map. Information like Email (Column Q), Phone (Column R), and Social Media (Column V-X) should also be displayed. For the org card, we could have a [more...] option that would direct the user to the org pin that already has the full information.

Improve Landing Page to ease navigation

At a meeting with Social Workers and a few of their clients, I saw that they were having trouble finding a place to start with the tool. Emphasizing filtering through the resources rather than the map and full list of resources would give users an easier place to start from. Similar to TripAdvisor.com

(STAGE 2) Reworking Category List

The category list should stay open until the user has selected a sufficient amount of health categories. For example, if a user wanted to select 3 options, they would have to re-click the Category list after making their first and second selection. This will also help for mobile devices once the Category list becomes clickable.

Overlay Public Transportation Availability/Information

If we can use an API to show relevant T stations and bus routes along with giving users the option of viewing the best route using public transportation between their location and the location of the business/organization, then I think it will further increase access by removing transportation barriers for individuals in vulnerable situations.

Responsive Header

On mobile, the category function interferes with the search option and moves off the screen. Some reformatting needs to done so that the search bar and category drop down stay in place when using on a mobile device.

User Login Form

Login Form - username and password with forgot password/username option (see below - without the facebook, twitter, google, linkedin account option)

basic-html5-login-form-with-massive-look

Login information will allow users to "favorite" certain resources to make them more accessible. This can be implemented by having a tab at the top of the web app. Currently, the category list is located on the top right of the web page. If we move the category list next to the resources themselves (similar to Finda - see below), this will free up the room at the top bar and to include user specific information.

screen shot 2018-09-25 at 8 55 02 pm

Clicking a location on the map does not cause the organizations sidebar to scroll to the selected organization

Expected behavior:
When clicking an organization on the map, the organizations sidebar should scroll to the selected organization.

Actual behavior:
The organizations sidebar is not effected by map clicks. When running locally the page an error is given.

An error is caused in the OrganizationCard component when trying to make this call:
this.refs.cardRef.scrollIntoView({block: "center", inline: "center"}) on line 17 of the OrganizationCard component.

It looks like <div ref="cardRef"> was recently removed from the JSX section of the OrganizationCard file and caused this to break, so I'm adding it back in.

bugscrollingtoorganization
erroronlocal

Add comments to code

We need to add comments to our code for all the new people who come in and start working on it. It would be really helpful as the code is growing with every PR. We can do this along with code refactoring.

We can start by adding comments to our important files like app.js and header.js.

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.