## Inspiration

Booking appointments through the phone can be a chore to do sometimes. Verbal communication is less clear, concise and easily mistranslated, and it can be a hassle to wait for reception to be available, callbacks, and picking the best available time. In this day and age, we live in a world where talking is often not required to get things done. With just a few clicks on a screen, we can get transportation, food or things delivered right to our doorsteps. So why not make booking appointments just as easy? Our project is inspired based on our desires to make booking our appointments quicker, easier, and eliminate any miscommunication with just a touch of a button.

## What it does

You don't have to call up your dental office or your car repair centre. Just open Book Better, and in 2 clicks, you have got yourself an appointment scheduled!

## How we built it

We used HTML, Bootstrap and CSS for the front-end and used JavaScript, Firebase, jQuery, MomentsJS and Full Calendar API to implement back-end. In regards to Firebase, we specifically used it for authentication (i.e. registering users), cloud database, and hosting.

## Challenges we ran into

* Asynchronous programming with JavaScript despite JavaScript being single-threaded!
* It took us a long time to read through and fully understand the Full Calendar API and integrate it with our app
* Designing a complex database structure: it's our first time dealing with so many different types of data to store. We had to design a data structure that is efficient for lookups and reduce redundancy.
* Trying to host it using Domain.com

## Accomplishments that we're proud of

* Fully implemented a working minimum viable product. We have implemented all the core functions of the app that we had planned
* To have successfully used Firebase as our cloud database platform since having a good cloud database structure can be scalable for the future
* Visually pleasing front-end with cute logo. We are happy with the overall look and minimalistic design of the app. Its clean and intuitive UI makes this app easy-to-use for everyone.
* Responsive web design allow accessibility in any type of device

## What we learned

* Understanding how Firebase works (i.e. how they store data, API): we are all very new to Firebase so implementing our app with Firebase was a real challenge to us
* JavaScript, learning more about its JavaScript-ness. Having built mobile apps in the past, transitioning into web app has been quite the challenge, especially with a language (i.e., JavaScript) that works differently than the one we're used to (Java)
* Constructing a good database structure for the core functions of the app
* Allowing the authorization of two types of users that leads to their respective interface

## What's next for BookBetter

* Mobile app
* More flexibility and powerful options in booking (i.e. change bookings, share appointments with someone, customize alerts)
* Recruiting organizations to register with BookBetter to digitize their booking process
* Promoting a sustainable relationship between businesses and their clients
* Colour coding events of different categories
## Inspiration

Flyers are everywhere around our campuses advertising various kinds of meetups and events. It's hard to keep track of them and often it's impossible to copy them down when in a rush. We provide a solution to that problem while also using weather and transportation data to supplement the flyer information so that you can stay informed and up to date on all the happenings around you!

## What it does

Our solution is a mobile app that allows users to take a picture of a flyer and automatically sync the event information with their calendar and eventually integrate with other conveniences of modern life. Our app will look at the event location and suggest a lyft ride if appropriate. It also notifies you of the weather forecast so that you can plan ahead.

## How we built it

We built out the backend of our app using Flask, and a frontend using iOS and React. The backend we built as an API to be agnostic to the frontend as Will and Michael continued to develop the mobile applications.

## Challenges we ran into

Over the weekend, we ran into two primary challenges: Platform integration and image segmentation. Although leveraging the Google Cloud Vision API made character detection much simpler, it was still difficult to associate each word with event fields it represents. We tried a few approaches while solving this and decided to use a combination of wit.ai, parsing, and geocoding techniques. We also had issues sharing images between mobile and server applications with low latency.

## Accomplishments that we're proud of

It works! Just like we'd imagined, we can use our phones to take pictures of fliers and add them to our calender's. Not only was it fulfilling to build, but we're also happy to go home with a nifty new utility.

## What we learned:

We learned how to debug POST/GET requests between our front-end and back-end as a team. In addition, we learned how to use Expo with React-Native as our development environment, as well as the ES6 syntax for async processes. We learned how to make calendar events for iOS. Finally, we learned how to use the Google Cloud Vision API to process our images to find important and relevant information.
## Inspiration

Automation is at its peak when it comes to technology, but one area that has lacked to keep up, is areas of daily medicine. We encountered many moments within our family members where they had trouble keeping up with their prescription timelines. In a decade dominated by cell phones, we saw the need to develop something fast and easy, where it wouldn’t require something too complicated to keep track of all their prescriptions and timelines and would be accessibly at their fingertips.

## What it does

CapsuleCalendar is an Android application that lets one take a picture of their prescriptions or pill bottles and have them saved to their calendars (as reminders) based on the recommended intake amounts (on prescriptions). The user will then be notified based on the frequency outlined by the physician on the prescription. The application simply requires taking a picture, its been developed with the user in mind and does not require one to go through the calendar reminder, everything is pre-populated for the user through the optical-character recognition (OCR) processing when they take a snap of their prescription/pill bottle.

## How we built it

The application was built for Android purely in Java, including integration of all APIs and frameworks. First, authorization of individualized accounts was done using Firebase. We implemented and modified Google’s optical-character recognition (OCR) cloud-vision framework, to accurately recognize text on labels, and process and parse it in real-time. The Google Calendar API was then applied on the parsed data, and with further processing, we used intents to set reminders based on the data of the prescriptions labels (e.g. take X tablets X daily - where X was some arbitrary number which was accounted for in a (or multiple) reminders).

## Challenges we ran into

Working with the OCR Java framework was quite difficult to implement into our personalized application due to various dependency failures - it took us way too long to debug and get the framework to work *sufficiently* for our needs. Also, the default OCR graphics toolkit only captures very small snippets of text at a single time whereas we needed multiple lines to be processed at once and text at different areas within the label at once (e.g. default implementation would allow one set to be recognized and processed - we needed multiple sets). The default OCR engine wasn't quite effective for multiple lines of prescriptions, especially when identifying both prescription name and intake procedure - tweaking this was pretty tough. Also, when we tried to use the Google Calendar API, we had extensive issues using Firebase to generate Oauth 2.0 credentials (Google documentation wasn’t too great here :-/).

## Accomplishments that we're proud of

We’re proud of being able to implement a customized Google Cloud Vision based OCR engine and successfully process, parse and post text to the Google Calendar API. We were just really happy we had a functional prototype!

## What we learned

Debugging is a powerful skill we took away from this hackathon - it was pretty rough going through complex, pre-written framework code. We also learned to work with some new Google APIs, and Firebase integrations. Reading documentation is also very important… along with reading lots of StackOverflow.

## What's next for CapsuleCalendar

We would like to use a better, stronger OCR engine that is more accurate at reading labels in a curved manner, and does not get easily flawed from multiple lines of text. Also, we would like to add functionality to parse pre-taken images (if the patient doesn’t have their prescription readily available and only happens to have a picture of their prescription). We would also like to improve the UI.

## Run the application

Simply download/clone the source code from GitHub link provided and run on Android studio. It is required to use a physical Android device as it requires use of the camera - not possible on emulator.