Book My Vaccine
An iOS app that serves as a medium for people to book COVID-19 vaccines from the comfort of their homes.
What It Does
We wanted to highlight the fact that the general masses are now getting vaccinated and we wanted to help more to this process. So we created BookMyVaccine.
Booking Vaccines
Users can look for their nearest hospitals, book the available time slots and select the type of vaccines they want and all this can be done with just a few clicks from this App.
Widget
We have incorporated Widgets too with the help of WidgetKit and we display the total number of people getting vaccinated in a specific country with the help of the widgets as we wanted to be optimistic of the fact that we are slowly defeating COVID-19.
QR Code
Once the user is finished with booking his/her slot, we provide them with a QR code that is generately automatically with the help of their username.
Dark Mode And Light Mode
We have implemented this app in both Dark and Light Mode and users can choose either of the two according to their convenience.
Building the App
Use Case Diagram
Wireframe
API
We started working on the client and server side by side and successfully implemented our bookings API with the help of Node.JS and Express.JS. We have hosted our API on Heroku.
- GET to check available timeslot
- POST to create appointment, send back a hash that can be made into a QR code
- GET to show time, location, vaccine info and hash after appointment is booked
* How to uniquely identify each hospital
- MapKit will find hospitals near you
- MapKit will provide the coordinates of the hospital
- When requesting to backend, send the coordinates, so backend will hash it and check records in the database
- If two hospitals ends up with same hash, send 400 Bad Request
Endpoints
Part related to handle registration to be vaccinated
GET /slots/:hospitalNameEndpoint returns all slots for needed hospital Params:hospitalName: StringGET /appointments/:userIdEndpoint returns appointments for user ID Params:userId: StringPOST /bookAppointmentEndpoint books appointment and returns its uuid if slot is free Params needed:userId: StringhospitalName: StringtimeSlot: StringPOST /addHospitalEndpoint creates new hospital Params needed:hospitalName: StringGET /clearSlotsDataUtility endpoint to clear database recordsGET /clearAppointmentsDataUtility endpoint to clear database records
Part related to fetch data related to numbers of vaccinations in different countries
GET /newestData/:countryNameEndpoint returns the newest statistics for the country selected in request parameters Params needed:countryName: StringGET /allData/:countryNameEndpoint returns the all statistics for some country selected in request parameters Params needed:countryName: String
Database schema
hosital_slots table
hospital_name[String] The name of hospitalslots: [Dictionary<String, String>]List of the possible slots. Each slot has two values free or value of uuid If it's free then it's possibe to book appointment for that time otherwise it's uuid of appoitment.
appointment table
uuid: [String]This uuid is the same as in hospital_slots table.user_id: [String]- hospital_name: [String]
time_slot: [String]
Problems We Faced
We had some issues in order to implement the QR code logic, and we didnt want to provide the QR code to the users who have not booked , so that was a bummer for us, but we overcame that problem shortly.
What's Next
- Voice Over - We could surely implement a VoiceOver feature for the Differently Abled so that they can also easily access the app.
- Scalability - Right now, our app only has a handful of data of few hospitals and time slots, we could surely add more hospitals of different cities and their time slots too.
- OAuth which allows users to login functionality by using their Apple, Facebook, or Twitter account


Log in or sign up for Devpost to join the conversation.