Git Product home page Git Product logo

vaxxnz's Introduction

Banner

Welcome to Vaxx.nz

The intuitive NZ COVID Vaccination Finder for New Zealand

Perhaps you visited bookmyvaccine.nz, only to find that all of the places closest to you are booked out weeks or months in advance?

In response to this, we've built vaxx.nz to make the experience of finding an earlier vaccine appointment close to you easier.

Built by:

Contributors

How does it work?

Choose your location, set the distance you wish to travel and it will show ALL of the earliest available vaccination slots using those search parameters. After you find the vaccine clinic with your desirable slot, you can proceed to bookmyvaccine.nz and book your appointment. We fetch data every 30 minutes from the official APIs, so slot information should be near real-time.

Over the course of one week, our team of 6 developers and 2 designers built a website to aide residents of New Zealand in booking their COVID-19 vaccine the intuitive way! Rather than selecting your location, and booking the next available slot, Vaxx.nz (aka. The NZ COVID Vaccination Finder) let's you choose when you want to receive your vaccine at a provider near you. Eliminating the filtering hassle and subsequent frustration.

A vaccine centre is missing!

We automatically load any locations giving vaccines listed on bookmyvaccine.nz, but if you know of one we don't have, contact Healthpoint to profile the missing location: https://www.healthpoint.co.nz/register/

How to get involved

We recognise that the best projects aren't built alone. If you would like to contribute, check out the guides below:

Getting Started Guide / Developer Guide

Press

Vaxx.nz has been featured in the following:

Uptake

Following our launch, we welcomed an average of 2,800 users every 30 minutes! All up, we helped over 29,000 people to explore vaccine availability options via our calendar.

Analytics

Resources

vaxxnz's People

Contributors

abhijnan-bajpai avatar al-abbas-nz avatar allen1996 avatar anandamideshakyan avatar anthonywongnz avatar francismb avatar geeksteph avatar gpoliko avatar ingpatricia avatar isaacy2012 avatar j-eld avatar jacksonlaw avatar jimmymasaru avatar keison-tang avatar kevinsj avatar matt-prompt avatar minhphu0304 avatar noway avatar oeed avatar olafwrieden avatar rafcontreras avatar rodrigohdiaz avatar rquitales avatar ryanlangfordnz avatar supesu avatar tausani-ah-chong avatar visagemedia avatar waltzaround avatar wseagar avatar y1hao 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

vaxxnz's Issues

Hide booking times that have already passed

Looking for appointments renders appointments today (which is good) but shows times that have passed (eg. Pharmacy in Rosedale, Auckland showing appointments for this morning)

The fonts are mismatched for different languages

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Click on the language selector
  3. Observe mismatched font styles

Screenshots
image
should look more like this
image

Loading state layout is not properly aligned

Describe the bug
Loading state layout is not properly aligned

To Reproduce
Steps to reproduce the behavior:

  1. Switch between radius
  2. observe loading state
  3. styling is not right

Screenshots
image

Code Linting with ESLint is not setup

create-react-app ships with ESLint and it seems it is not being used. There's no "lint" script in the package.json, yet there is an eslintConfig.

image

Re-implement linting as it seems the project is setting up code best practices. See #77

Use URL search params as lat/lng/placeName 'state'

Is your feature request related to a problem? Please describe.
I'm always frustrated when it's confusing and error prone to deal with lat/lng/placeName in our code. Initial implementation was shipped on a tight timeline, it was improved a bit now, but we can make it even better.

Describe the solution you'd like
Only have lat/lng/placeName state in URL. If you want to change those parameters, you HAVE to push to History API.

Additional context
Shareable URL links is a crucial feature for us, we've seen a lot of growth through clever use of suburb links in subreddit communities. Making this feature robust is important to set up our platform for growth.

When selecting Auckland Region in location selector, no results are yielded.

Describe the bug
When selecting Auckland Region or Wellington Region in location selector, no results are yielded.

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Search Auckland Region
  3. No results shown

Screenshots
image

Additional context
I think the best solution here is to hide Regions in AddressFinder completely. They are way too unspecific. Let's only do residential adresses or at most suburbs.

Create privacy policy page

As a user, I want to see a privacy policy
so that I know how my data is being treated and I have peace of mind

This issue covers the creation of a privacy policy, and the addition of a link to it at the footer of the page

Border width is inconsistent across the website

Describe the bug
We use a variety of border widths. Looks untidy.

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Click into a "Open today" website
  3. " Walk-in vaccinations available" border is different from calendar border

Screenshots
image

Additional context
1 pixel should be good everywhere

Use AddressFinder.nz for reverse geocoding.

Is your feature request related to a problem? Please describe.
We switched Google Autocomplete to AddressFinder.nz autocomplete, but:
We still use Google Reverse Geocoding to fetch suburb name for the "Use my current location" feature.
image

Describe the solution you'd like
Can we use https://addressfinder.nz/api/nz/address/reverse_geocode/ to replace Google Reverse Geocoding?

Additional context
The documentation says we need both API KEY and API SECRET, does it mean we have to have a backend? We want to stay 100% static to reduce number of moving parts and be web scale.
If we absolutely HAVE TO have a server, we can deploy a Netlify Function? I'd rather not tho

"Public Holidays" for Life Pharmacy St Lukes is cut-off

Describe the bug
"Public Holidays" text for Life Pharmacy St Lukes is cut-off

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Find Life Pharmacy St Lukes in Open Today
  3. Observe Public Holidays

Screenshots
image
image

Additional context
Props to @geeksteph for spotting this.
Might be a data issue...

Internationalise Healthpoint Instructions

Is your feature request related to a problem? Please describe.
Please internationalise the Healthpoint instructions in HealthpointData.ts by adding them to the i18n translations file.

export enum Instruction {
  anyoneEligible = "Anyone currently eligible can access",
  makeAppointment = "Make an appointment",
  enrolledOnly = "Eligible GP enrolled patients only",
  walkIn = "Walk in",
  invitationOnly = "By invitation only",
  driveThrough = "Drive through",
  allowsBookings = "Allows bookings",
}

Language picker should show 'English' by default

Describe the bug
Currently the language picker says 'Language' by default. For someone who doesn't know English, they mightn't know what language means and to click there to change it. I would assume though that they recognise 'English' as a place to change the language.

This stays as English once set in local storage though.

Add an on-brand cookie banner to the website

Is your feature request related to a problem? Please describe.
It's good practice to supply a cookie notice on the website as we have implemented GA and potentially other cookies.

Describe the solution you'd like

  1. Design an unobtrusive cookie notification that looks better and more on-brand than the default react-cookie-consent library banner.
  2. Implement a cookie notice library that supports the design.
  3. Memorise consent for 6 months (usually a built-in option with cookie consent libraries, or manually store in localStorage)

Additional resources
https://www.npmjs.com/package/react-cookie-consent

The doctor image is levitating on some locales

Describe the bug
Doctor image is a bit off from the container on some languages.

To Reproduce
Steps to reproduce the behavior:

  1. Go to main site.
  2. Select Espanol
  3. See doctor image. It's different from English language.

Screenshots
image

Additional context
We should fix it in a way which works for any header height.

Minor - Link to 'bookmyvaccine.nz' broken in README

Hey team!

Loving the work so far! This is inspiring to me as a junior dev. Would love to help out where I can :)


Just a minor fix to link in the first paragraph of the README

The link currently takes you to here:

Screen Shot 2021-09-07 at 6 40 38 AM

Screen Shot 2021-09-07 at 6 40 25 AM

Show number of vaccination sites on calendar container

When using the app, I was excited to see days that had a lot of available time slots, only to be disappointed when drilling down onto that day and discovering that the slots are only for 1 vaccination centre that is in an inconvenient location.

I propose adding another line of text under each calendar entry that indicates how many locations there are as well.

Language select label doesn't change when selecting another language

Describe the bug
Language select label doesn't change when selecting another language

To Reproduce
Steps to reproduce the behavior:

  1. Go to vaxx.nz
  2. Click on English
  3. Select some other language
  4. The language label doesn't change

Additional context
Something is up with the way we're using Select component from base web

Internationalise Opening Hours

Is your feature request related to a problem? Please describe.
It would be amazing for someone to internationalise the opening hours using the currently selected locale and date-fns library. We already do this in the calendar, but not in the opening hours.

Mon – Tue 9:00 AM – 6:00 PM
Wed 9:00 AM – 7:30 PM
Thu – Fri 9:00 AM – 6:00 PM
Sat 9:00 AM – 7:30 PM
Sun 10:00 AM – 5:00 PM

Implement a nicer-looking error state

Is your feature request related to a problem? Please describe.
The error message is a bit cluttered among other content. It needs room to breath. Maybe add an icon or an SVG image too to make it fun too?

Describe the solution you'd like
Design a better error state which looks better than what we have now.

Additional context
image

Layout issue: some languages are wrapped over to the new line

Describe the bug
Some language names are a bit too long and are wrapped over to the new line. We shouldn't word wrap in that dropdwon.

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Click on language selector

Screenshots
image

Additional context
Add any other context about the problem here.

Shareable links for languages

Is your feature request related to a problem? Please describe.
E.g. I'm always frustrated when my family member sends me a website link, but it's not in my native language.

Describe the solution you'd like
Shareable link to your language. Either ?lang=lang or maybe /lang? Not sure

Note that not all booking options are searched

The header on your page says "See every available vaccination booking slot near you."

But I'm not sure it's showing the booking slots that are available that are outside the official booking system? There's quite a few at bargain chemist in CHCH https://www.bargainchemist.co.nz/pages/covid-19-vaccination as well as Unichem in CHCH https://unichemcashelpharmacy.gettimely.com/ From what I could see your system doesn't check those?

It might be worth changing the wording to note there are other options (maybe just if someone puts in a CHCH address)?

Clicking radius filter on mobile brings up keyboard

Describe the bug
Clicking radius filter on mobile brings up keyboard. It shouldn't, there's no text to input.

To Reproduce
Steps to reproduce the behavior:

  1. Open vaxx.nz on mobile
  2. Click "within 10km"
  3. You'll see keyboard pop up
  4. It shouldn't

Screenshots
IMG_929F609BEDA9-1

Device:

  • iPhone 7 plus
  • Safari

Additional context
Base web Select component can take input, but for our use case we should disable that and make it dropdown only. Maybe there's a prop for that?

Document the various data APIs

While the data is public isn't not at all obvious at the moment how to actually use the data. It'd be good to create a doc that illustrates how the data is structured and what's needed to use it.

Setting location by a city doesn't retrieve the city name

Describe the bug
Setting location by a city doesn't retrieve the city name

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'vaxx.nz'
  2. Click on set your location to any city/region e.g. Rotorua
  3. placeName gets set to either lat or lng in both URL and location picker

Screenshots
Screen Shot 2021-09-10 at 10 15 05 PM
Screen Shot 2021-09-10 at 10 15 09 PM

Device:

  • Device: MacBook Pro
  • Browser: Firefox

Additional context
This is probably due to us setting placeName params by suburb.

Scraping issues

Describe the bug
website displays wrong time

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'vaxx.nz'
  2. look at some of the walk-in locations
  3. compare the time

Screenshots

Screen Shot 2021-09-11 at 3 13 05 PM
Screen Shot 2021-09-11 at 3 12 22 PM

persisting the language selection to localStorage

Is your feature request related to a problem? Please describe.
E.g. I'm always frustrated when my language selection doesn't save.

Describe the solution you'd like
persisting the language selection to localStorage

Optimise render method

Describe the bug
Our site is getting a bit laggy. We do a lot of data processing in render method - we should memoize it as much as possible.

To Reproduce
Steps to reproduce the behavior:

  1. Go to website
  2. Open React Profiler
  3. Start profiling
  4. Open a modal
  5. Observe long-running renders

Screenshots
image

Additional context
We need to useMemo a bunch of variables. especially when we do .sort, .filter and .reduce.
image

Warning message when selecting a large radius larger than 10km

The offical guidance from the Ministry Of Health is that you shouldn't be travelling too far out of your local area to get a vaccine.

We should show a message letting users know that its not recommended to travel outside of their local area to get a vaccine when they are filtering by any radius larger than 10km.

Link for map directions broken

Hello,

An example where link to map is broken:

Epsom Vaccination Centre
382 Manukau Road Epsom, Auckland 1344. Parking at Alexandra Park, entry from 30 Campbell Crescent. (4km away)

And the link for walking direction:
https://www.google.com/maps?t=r&daddr=382+Manukau+Road+Epsom,+Auckland+1344.+Parking+at+Alexandra+Park,+entry+from+30+Campbell+Crescent.&dirflg=w

The link shouldn't include the Parking info. Have included screenshot of maps unable to find it.

epson

Maps would work if the link was:
https://www.google.com/maps?t=r&daddr=382+Manukau+Road+Epsom,+Auckland+1344

Thanks,
William.

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.