fac18 / signpost

A community-driven service for those experiencing or at risk of homelessness in Islington
https://signpost-app.herokuapp.com/
4 stars 3 forks source link

signpost

Build Status

codecov

A community-driven service for those experiencing or at risk of homelessness in Islington

Readme Contents:

Team

🐰Scrum master: Renata\ 🐝UX/UI lead: Beth \ ✅DevOps lead: Rosa\ 🥐Quality assurance lead: Gillian

Overview

Signpost is an app/desktop website that lets people experiencing or at risk of homelessness find services relevant for them. Services are organised into categories and displayed as pins on a map. Further information such as opening hours and contact details are available for each service. Users can contribute their own suggestions and services to make sure the data is relevant and maintainable.

💾Installation Guide

  1. Clone the repo git clone https://github.com/fac18/signpost.git
  2. Intall the dependencies by running npm i && cd client && npm i && cd ..
  3. Set up two .env files (ask for the keys if you're reviewing us). There should be two .env files, one in the client folder root and one in the server folder root too. *
  4. To check tests run npm test
  5. Start the server with npm run start:dev and go to localhost:3000 *

User Stories

User stories doc

Design Process

Initial Exploration

Moodboard and similar services

Screenshot 2020-01-10 at 12 22 04

'Crazy 8' rapid page sketching

User story brainstorming

Collaborated Storyboard

User Research

Our top 5 user research insights were:

  1. Non-linguistic communication is very important, since many users will have a low level of English, and others a low level of literacy. Accessibility is also particularly relevant as many users may be older and are more likely to have health problems.
  1. Mental health issues are very prominent in the community, influencing the profile of average users.
  1. Building trust and reassurance are very popular, since this community is vulnerable and may have had bad experiences from people and services offering 'help' in the past. Their outlook may also be made worse by mental health problems. Collection of data is a particularly sensitive issue.
  1. The target community is very diverse with different levels of need. Some people will definitely not be able to help themselves much with an app.
  1. Data is not available in one easy-to-use package (e.g. a well-maintained API), so we will need to manually collect and enter data points.

Prototyping

Prototyping wasn't too hard because the previous steps had given us a very clear idea of what we wanted to build 😊 We made a list of all the 'screens' and divided them up between us

Figma snapshots

User Testing

We wrote our user testing script and questions, and tracked responses in this Google Doc

More Prototyping

Our changes following user testing:

🏃First Build Sprint

Mon/Tues: slow start: planning and researching. Lots of big initial blockers. Weds: trying to figure out how to build Express backend with React front end, also how to overwrite Git project Thurs: Lift off! Move Google Maps call to front end, stick with Express for AirTable. Connected pages by using React Router Fri: Displayed markers by accessing dummy data - made improvements with making a connection between both our map API and our airtable API - made initial style for main pages - added all of necessary svg icons - rendered the components in App by passing their states too so they can be updated/accessed where needed.

🏃Second Build Sprint

Monday: Sprint #1 mini presentations (we've talked about what we've found interesting from the prev. week and showed our estimates and actuals to the class). Start new week with a new sprint planning. Continue with styling/svg and connections between routes. Connected both the map API and the airtable API, managed to display the pins with the correct data accessed from our database. Initial search bar that finds the places inputed by the user. Tuesday: Updated database - small map error handling has been implemented - initial move to make the app responsive for mobile as our approach was more desktop at the beginning. - set up CodeCov and Travis - EsLint and prettier have been configured - made services' element clickable by adding mailto: and phone: - add SVG animation for thank you page and add a small pop-up after being in the map for 6 seconds, needs fixing. We have separated the tasks and each one has taken an specific task to do. Pretty well organised. Wednesday: Kill the InfoBar when moving onto different pages and coming back to the map. Added svg loading animation. Thursday: Sorted mobile responsiveness. Made the postdata function work to airtable from the backend. React testing. Fixed travis/node_modules bug to get our first. Friday: Presentation!

🏃Second Build Sprint

Problems: entering opening hours into Airtable in consistent way - no data validation

Google analytics

Potential Future Developments

Learning Outcomes

We learnt:

🎨 DESIGN

Rapid prototyping\ User research\ User testing, using Figma to build a prototype\ SVG files

💽INFRASTRUCTURE

Building a React app with an Express backend\ ...and setting up Travis and Codecov with them\ Airtable\ Google Maps and Geocoding APIs

🤸REACT

React Router\ React Refs\ React useReducer\ Styled components

✅ TESTING

Testing with React Router\ jest.useFakeTimers\ Mocking

💻 Tech Stack

React, Express, AirTable Google Maps API, Google Geocoding API

Presentation

https://www.canva.com/design/DADyewMfXjQ/iKPmKiOdVbBxuggMUKcB1A/view?utm_content=DADyewMfXjQ&utm_campaign=designshare&utm_medium=link&utm_source=publishsharelink

We used canvas for our presentation, amending the style to match our design scheme. To make it more interesting, and to learn from each other, we decided to talk about what another team member had worked on. We pulled up interesting cases and specific elements in order to highlight important points.