## Inspiration

As a mobile developer, I was sick of coding user interfaces. These days, if you're creating a chat app, for example, you'll probably find by far the longest part is designing and coding the user interface. I wanted to find a way to speed this process up.

## What it does

UICode is an iPad app that has a mobile screen as a canvas. You can drag and drop mobile elements such as Views (UIView), buttons (UIButton) and images, then quickly align and adjust their properties, for instance, color, corner radius, and shadows to name a few.

Next, you can resize the mobile canvas to see how your UI will respond in real time to different phone sizes. This saves developers a lot of time, as previously, one would have to essentially "guess" the coordinates of an element they were placing, then wait for their code to compile to see the result.

## How I built it

UICode is built in pure Swift using Xcode. I made use of a few notable iOS libraries and frameworks, such as Snapkit, and a few smaller open source projects for managing minor aspects such as gradients.

## Challenges I ran into

I ran into quite a few challenges. Originally, UICode was intended to be a Mac app, similar to the UI program, Sketch, however, I found developing for iOS to be infinitely times easier for me so I just went with an iPad app instead.

Another challenge was coding the logic for aligning elements with each other. It became fairly complicated when a user drags an element, UICode had to determine when and where was appropriate to snap a view.

## Accomplishments that I'm proud of

I'm proud that I've taken an idea that I wanted to exist, and brought it into existence as a tangible product. This is a product I am going to be happy to use for my app development.

## What I learned

I learned a lot about constraints and handling views with gestures. UICode has a UIScrollView as it's canvas, then inside that it has multiple elements that can be dragged around and manipulated. This created a level of complexity in terms of when what gesture would be triggered (e.g scroll view or dragging an element), that I had to learn to navigate to ensure a smooth user experience.

## What's next for UICode

I plan to keep adding features to UICode and releasing it on the AppStore. It will be free to use, however, if you want to export your UI Designs to code you will have to purchase a subscription.
## Inspiration

Every project aims to solve a problem, and to solve people's concerns. When we walk into a restaurant, we are so concerned that not many photos are printed on the menu. However, we are always eager to find out what a food looks like. Surprisingly, including a nice-looking picture alongside a food item increases sells by 30% according to Rapp. So it's a big inconvenience for customers if they don't understand the name of a food. This is what we are aiming for! This is where we get into the field! We want to create a better impression on every customer and create a better customer-friendly restaurant society. We want every person to immediately know what they like to eat and the first impression of a specific food in a restaurant.

## How we built it

We mainly used ARKit, MVC and various APIs to build this iOS app. We first start with entering an AR session, and then we crop the image programmatically to feed it to OCR from Microsoft Azure Cognitive Service. It recognized the text from the image, though not perfectly. We then feed the recognized text to a Spell Check from Azure to further improve the quality of the text. Next, we used Azure Image Search service to look up the dish image from Bing, and then we used Alamofire and SwiftyJSON for getting the image. We created a virtual card using SceneKit and place it above the menu in ARView. We used Firebase as backend database and for authentication. We built some interactions between the virtual card and users so that users could see more information about the ordered dishes.

## Challenges we ran into

We ran into various unexpected challenges when developing Augmented Reality and using APIs. First, there are very few documentations about how to use Microsoft APIs on iOS apps. We learned how to use the third-party library for building HTTP request and parsing JSON files. Second, we had a really hard time understanding how Augmented Reality works in general, and how to place virtual card within SceneKit. Last, we were challenged to develop the same project as a team! It was the first time each of us was pushed to use Git and Github and we learned so much from branches and version controls.

## Accomplishments that we're proud of

Only learning swift and ios development for one month, we create our very first wonderful AR app. This is a big challenge for us and we still choose a difficult and high-tech field, which should be most proud of. In addition, we implement lots of API and create a lot of "objects" in AR, and they both work perfectly. We also encountered few bugs during development, but we all try to fix them. We're proud of combining some of the most advanced technologies in software such as AR, cognitive services and computer vision.

## What we learned

During the whole development time, we clearly learned how to create our own AR model, what is the structure of the ARScene, and also how to combine different API to achieve our main goal. First of all, we enhance our ability to coding in swift, especially for AR. Creating the objects in AR world teaches us the tree structure in AR, and the relationships among parent nodes and its children nodes. What's more, we get to learn swift deeper, specifically its MVC model. Last but not least, bugs teach us how to solve a problem in a team and how to minimize the probability of buggy code for next time. Most importantly, this hackathon poses the strength of teamwork.

## What's next for DishPlay

We desire to build more interactions with ARKit, including displaying a collection of dishes on 3D shelf, or cool animations that people can see how those favorite dishes were made. We also want to build a large-scale database for entering comments, ratings or any other related information about dishes! We are happy that Yelp and OpenTable bring us more closed to the restaurants. We are excited about our project because it will bring us more closed to our favorite food!
## Inspiration

We got the inspiration while solving some math questions. We were solving some of the questions wrong, but couldn't get any idea in what step we were doing wrong. Online, it was even worse: there were only videos, and you had to figure all of the rest out by yourself. The only way to see exactly where you did a mistake was to have a teacher with you. How crazy! Then, we said, technology could help us solve this, and it could even enable us to build a platform that can intelligently give the most efficient route of learning to each person, so no time would be wasted solving the same things again and again!

## What it does

The app provides you with some questions (currently math) and a drawing area to solve the question. While you are solving, the app can compare your handwritten solution steps with the correct ones and tell if your step was correct or false. Even more, since it also has educational content built-in, it can track and show you more of the questions that you did incorrectly, and even questions including steps you did incorrect while solving other questions.

## How we built it

We built the recognition part using the MyScript math handwriting recognition API, and all the tracking, statistics and other stuff using Swift, UIKit and AVFoundation.

## Challenges we ran into

We ran into lots of challenges while building all the data models, since each one is interconnected with the others, and all the steps, questions, tags, etc. make up quite a large variety of data. With the said variety of data, also came a torrent of user interface bugs, and it took *some* perseverance to solve them all as quickly as possible. Also, probably the one of the biggest challenges we dealt with was to deal with the IDE itself crashing :)

## Accomplishments that we're proud of

We are proud of the data collection and recommendation system that we built from the ground up (entirely in Swift!), and the UI that we built, since even though the app doesn't have a large quantity of educational content inside yet, we built it with the ability to expand easily as content gets added, in mind.

## What we learned

The biggest thing we learned was how to build a data set large enough to give personalized recommendations, and also how to divide and conquer it before it gets too complex. We also learned to go beyond what the documentation on the internet offers while debugging, and to solve things by going from examples, without documentation on how to implement.

## What's next for Tat

We think that Tat has quite a potential to redefine education for years to come if we can build more upon it, with more content, more data and even the possibility of integrating crowd-trained AI.