## Inspiration

I am going to be studying abroad next semester in Europe, and the only language I know is English. While I am there, I want to be able to learn what things are on the fly, without having to type anything in and deciphering what it is in English first.

## What it does

**Captura** allows you to take a picture of anything and then, by image processing, deciphers what it is and gives you either the English, Spanish, German, or French phrase, pronunciation, and spelling. As you take more and more photos and learn more and more words, you develop your own dictionary of pictures associated to phrases that you can reflect on and learn from.

## How I built it

I used the Clarifai API to help with image processing, the Microsoft-Translate API to convert the Clarifai output to multiple languages, the Voice-RSS API to then pronounce the word, and I chose to use Java Maven with Apache Tomcat, because it was universal between the two APIs. I also used Firebase for the backend to handle logins and user information.

## Challenges I ran into

Setting up Maven was very challenging. I had only briefly used it before, and so a majority of my time was dedicated to learning the ins and outs of Maven. PhoneGap for Maven also proved to be a challenge because I did not have all of the Apple Developer requirements established. I really wanted to get the web app done first so that way I had the logic established before I dove into mobile, however I ran out of time towards the end. As a compromise, I ended up making my app mobile compatible. I also could not figure out how to assign a proper domain to my maven project, so I had to run it on my localhost to test. Along with that, I initially spent the first night trying to set up my own database. By the wee hours of the morning on Saturday I chose to scratch that idea and just use Firebase. I decided to go with Firebase over Parse or MongoDB because I had used it before and I wanted to save time since I was learning so many new APIs and languages.

## Accomplishments that I'm proud of

Being able to create an application I will actually use while I am abroad! It is always a pain to have to go to online, type the word, and translate it. With my app, all you have to do is take a picture.

Aside from the idea, I really like the design, and I think that the code is all intuitive.

## What I learned

Maven is a pain in the butt!
This was the first hackathon or many that I have been to where I utilized the mentorship for me. I started barely knowing maven at all and now I feel like I can whip something up in a couple hours!

## What's next for captura

I definitely want to continue developing for it and making the iOS app. Once I have my credentials in line, I will be able to continue development on that end.
## Inspiration

Our team recently started an iOS bootcamp and we were inspired to make a beginner app with some of the basics we've learned as well as interact with new technologies and APIs that we would learn at the hackathon. We wanted to work on a simple, fun educational app, and wanted to bring in [Google Cloud's Vision API](https://cloud.google.com/vision/docs/) as well as the iPhone's built-in camera capabilities. The end result is a culmination of these various inspirations.

## What it does

Our app is an interactive game for young learners to come across new English words and photograph those items throughout their days. Players can track their scores throughout the day and confirm that the image matches the vocabulary word with fun audio prompts. The word and score can be reset so players can find new inspiration for their next photo journey.

## How we built it

We worked primarily with Swift on XCode, using git for our version control. We used [Google Cloud's ML Kit for Firebase](https://firebase.google.com/docs/ml-kit), a mobile SDK that allowed us to accurately label images that the player took over a certain confidence score with Google Cloud Vision. To import this library and Alamofire we used Cocoapods.

## Challenges we ran into

Because we are all beginners with mobile development, we ran into many challenges related to the intricacies of iOS development. We learned that it is difficult to collaborate on the same storyboards, which made version control and collaboration more challenging than usual. We also had trouble setting up the same environments, versions of XCode and Swift, and Apple developer teams.

After connecting to the Google Cloud Vision API, we began testing our app. To our befuddlement, the Google Cloud Vision API labeled an image of a bagel as a musical instrument and a member of our team as a vehicle. Upon closer inspection, we realized we were using the on-device API instead of the Cloud API. Switching to the Cloud API, greatly increased the accuracy of the labels.

## Accomplishments that we're proud of

Overall, we're very proud that we were able to put together this product within a day! We were able to complete our goal of connecting to the Google Cloud Vision API and using its machine learning models to analyze the objects within our images. Our game works exactly as envisioned and we're proud of our child-friendly, intuitive user design.

## What we learned

We learned an incredible amount over such a short period of time, including:

* Swift intricacies (especially optionals)
* XCode and general iOS development gotchas
* Autolayout and general design in iOS
* Connecting to an iPhone camera
* Firebase and Google Cloud setup
* importing audio files to our app
* local data persistence for our game
* the joy of pair programming with friends
* Segue modal navigation
* Loading spinners while waiting for API response.

## What's next for Learning Lens

We can envision many ways that Learning Lens can expand its offerings to more young learners, their parents, and even educators. These include:

* Accessing a more complex dictionary that can be adjusted by age or learning level as appropriate
* Parents' input to the specific word of the day or a word bank for their children
* Integrating natural language processing and/or adaptive learning techniques to provide sets of suggestions that are tailored to a learner's interests
* Integrating with school or study systems to assist educators in their existing curriculum
* Text-to-speech capability so that very young learners who have not yet learned to read will be able to play as well (and older learners can improve upon their pronunciation)
* Database integration so that learners can see previous words they've learned, as well as pictures they've taken; and parents can view their children's finds and life through their children's eyes
* A countdown timer or built-in reset feature for the app to come up with a new word at a certain time every day
* Social networking so that learners can connect with approved peers and view leaderboards for the same word as well as share images with one another

## Credits

A special thanks to Alex Takahashi (Facebook Sponsor) for providing mentorship and answering our questions.

Also thanks to Google for providing $100 credit to explore the Google Cloud API offerings.

Our logo sans text was sourced from pngtree.com.
## Inspiration

As university students, we have been noticing issues with very large class sizes. With lectures often being taught to over 400 students, it becomes very difficult and anxiety-provoking to speak up when you don't understand the content. As well, with classes of this size, professors do not have time to answer every student who raises their hand. This raises the problem of professors not being able to tell if students are following the lecture, and not answering questions efficiently. Our hack addresses these issues by providing a real-time communication environment between the class and the professor. KeepUp has the potential to increase classroom efficiency and improve student experiences worldwide.

## What it does

KeepUp allows the professor to gauge the understanding of the material in real-time while providing students a platform to pose questions. It allows students to upvote questions asked by their peers that they would like to hear answered, making it easy for a professor to know which questions to prioritize.

## How We built it

KeepUp was built using JavaScript and Firebase, which provided hosting for our web app and the backend database.

## Challenges We ran into

As it was, for all of us, our first time working with a firebase database, we encountered some difficulties when it came to pulling data out of the firebase. It took a lot of work to finally get this part of the hack working which unfortunately took time away from implementing some other features (See what’s next section). But it was very rewarding to have a working backend in Firebase and we are glad we worked to overcome the challenge.

## Accomplishments that We are proud of

We are proud of creating a useful app that helps solve a problem that affects all of us. We recognized that there is a gap in between students and teachers when it comes to communication and question answering and we were able to implement a solution. We are proud of our product and its future potential and scalability.

## What We learned

We all learned a lot throughout the implementation of KeepUp. First and foremost, we got the chance to learn how to use Firebase for hosting a website and interacting with the backend database. This will prove useful to all of us in future projects. We also further developed our skills in web design.

## What's next for KeepUp

* There are several features we would like to add to KeepUp to make it more efficient in classrooms:
* Add a timeout feature so that questions disappear after 10 minutes of inactivity (10 minutes of not being upvoted)
* Adding a widget feature so that the basic information from the website can be seen in the corner of your screen at all time
* Adding Login for users for more specific individual functions. For example, a teacher can remove answered questions, or the original poster can mark their question as answered.
* Censoring of questions as they are posted, so nothing inappropriate gets through.