## Inspiration

I've always loved basketball more than other sports because of how fun it is as a group, but can be just as fun alone, because at the end of the day, it is about putting the ball in the basket. The problem I constantly face while practicing alone is not having an efficient way to remember how well I'm doing. This means I can't track progress, and force an habit to improve on. Well many other forms of activities, such as working out at the gym has a plethora of trackers, there isn't one for basketball. So after purchasing the apple watch, I thought this could be the perfect opportunity to make it a reality.

## What It Does

ShotTrax Creates personalized workouts for basketball shooting drills. Users will be able to create workouts and fine tune the workouts to meet their requirements. The app allows users to choose between the various locations on the basketball court and set an amount of shots at that location. With the accompanying apple watch app, users will be able to live track shots missed, and shots made during the workout. Then the iphone app will calculates field goal percentages and show progress through a calendar.

## How We Built It

We opened up xcode, and got right to it!

## Challenges We Ran Into

* Brand new to coding for the apple watch
* Working with complex designs
* Short amount of time
* Trying to create delegates without using segues, or swift

## Accomplishments That We're Proud Of

Creating a fairly attractive UI (it's getting there!), and set delegates for classes to communicate

## What We Learned

* Create multiple views on a single view controller
* Use storyboard
* Create delegates
* How to make irregular sized buttons
* Set an image logo in the navigationbar
* We learned that things that are assumed to take a short time to make, can actually take MUCH longer - especially if there's unexpected roadblocks

## What's Next For ShotTrax

* Update the interface (we want to make it look pretty)
* Create database
* Corresponding apple watch app
* Put it up on the app store
* Hit up the gym and test it out!
## 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

In school, we were given the offer to take a dual enrollment class called Sign Language. A whole class for the subject can be quite time consuming for most children including adults. If people are interested in learning ASL, they either watch Youtube videos which are not interactive or spend HUNDREDS of dollars in classes (<https://deafchildren.org> requiring $70-100). Our product provides a cost-effective, time-efficient, and fun experience when learning the new unique language.

## What it does

Of course you have to first learn the ASL alphabets. A, B, C, D ... Z. Each alphabet has a unique hand gesture. You also have the option to learn phrases like "Yes", "No", "Bored", etc. The app makes sure you have done the alphabet correctly by displaying a circular progress view on how long you have to hold the gesture. We provide many images to make the learning experience accessible. After learning all the alphabets and practicing a few words, time for GAME time :). Test your ability to show a gesture and see how long you can go until you give up. The gamified experience leads to more learning and engaging for children.

## How we built it

The product was built using the language Swift. The hand-tracking was done using CoreML Components. We used hand landmarks and found distances between all points of the hand. Comparing the distances it SHOULD be and what it is as a specific time frame helps us figure out whether the hand pose is occurring. For the UI we planned it out using Figma and later wrote the code in Swift. We used the SwiftUI components to save time. For data storing we used UIData which syncs across devices with the same iCloud account.

## Challenges we ran into

There are 26 alphabets. That's a lot of arrays, comparing statements, and repetitive work. Testing would sometimes become difficult because the iPhone would eventually become hot and get temperature notifications. We only had one phone to test, so phone testing was frequently used for hand landmarks mostly. The project was extremely lengthy and putting so much content in one 36 hours is difficult, so we had to risk sleep. A cockroach in the room.

## Accomplishments that we're proud of

The hand landmark detection for an alphabet actually works much better than expected. Moving your hand super fast does not glitch the system. A fully functional vision app with clean UI makes the experience fun and open for all people.

## What we learned

Quantity < Quality. We created more than 6 functioning pages with different level of UI quality. It's very noticeable which views were created quickly because of the time crunch. Instead of having so many pages, decreasing the number of pages and maybe adding more content into each View would make the app appear flawless. Comparing arrays of the goal array and current time-frame array is TEDIOUS. So much time is wasted from testing. We could not figure out action classifier in Swift as there was no basic open-source code. Explaining problems to Chat GPT becomes difficult because the LLM never seems to understand basic tasks, but perfectly performs in complex tasks. Stack Overflow will still be around (for now) if we face problems.

## What's next for Hands-On

The app fits well on my iPhone 11, but on an iPad? I do not think so. The next step to take the project further is to scale UI, so it works for iPads an iPhones of any size. Once we fix that problem, we could release the app to the App Store. Since we do not use any API, we would have no expenses related to hosting the API. Making the app public could help people of all ages learn a new language in an interactive manner.