Git Product home page Git Product logo

lhl-finalp13's Introduction

VanCovid

This app was completed as a final project for the Lighthouse Labs Full Stack Web Development 12 week bootcamp.

As a group we were interested in exploring a variety of API’s and technologies in our final project. We decided to use React with Material UI on the front end and node with Express on the backend, using Postgres for our database. The whole app is written in Typescript. We also created some end to end tests with Cypress. Data prep for the stats page was done using Python with Pandas and NumPy. The app is deployed to Heroku at vancovid.herokuapp.com

The strange times we are in provided the inspiration for an application which would allow us to use these technologies. We created VanCovid to act as a hub for Covid-19 related information for Vancouverites.

Our idea came from the early days of the pandemic. Remember the difficulty we all had finding toilet paper, hand sanitizer and masks? We also had a desire to know what was in the news and the latest statistics.

This is the app we wished we had back then.

Contributors

Kurt Galvin, Jessie Wright and Calvin Zheng

Final Product

Map

Our map page allows users to view and update stock levels of toilet paper, hand sanitizer and masks at various stores. Users can also filter for stores with stock of a particular item. The places search bar can be used to find a particular store. If it is already in the database it will simply focus on that store, if it is not yet in the database it will be added with unknown stock levels.

map


Stats

Our stats page displays Covid-19 case counts. Users can toggle between Canada (with the ability to select provinces) and Global (with the ability to select countries). Users can select a time period which will update both the new and cumulative case charts. There is also the ability to toggle between confirmed (all) cases, recovered, active and deaths in order to dig further into the data. All data was sourced from John Hopkins. Hovering the chart will give a more granular view. We used the library ReCharts for the charting.

stats


News

Our news page enables users to view recent articles referencing Covid-19 from across Canada. Each article can be opened in a new tab by clicking. There is also a Twitter Feed on the right hand side. It is filtered to only include tweets from trusted Canadian health sources (@GovCanHealth and @CDCofBC). If a new tweet is sent by a trusted source it will appear without refreshing the page thanks to websockets.

news


Info

Our info page contains basic tips and rules from the city of Vancouver to promote healthy practices. Mostly we included this to allow us to use some CSS animations.

info


Challenges

Filtering Tweets

Figuring out how to prevent mentions and retweets from showing up in the feed took a bit of sleuthing around but it helped us become more familiar with the tweet json object.

API Limits

Both Twitter and the news API we used had limits on how often we could call them. In order to address this we added caching on our backend, serving cached data and only calling out to the API to refresh the data every 15 minutes or more.

Deployment

Due our app being in Typescript plus our frontend being React there were a number of steps to the build process. This meant we had to customize our build and start scripts on Heroku in order to successfully deploy. This was a great learning experience even if it was a bit "dev opsy".

lhl-finalp13's People

Contributors

jelywrig avatar calvinzheng1 avatar kurtgalvin avatar

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.