## Inspiration

Countless individuals often search through YouTube for various mediation melodies, such as "Ocean Waves," "Wind Ambiance," and "Trees Swaying." With AMPLIFY, an individual is able to listen to these mediation melodies fused together with Lo-fi elements of music generated based on the environment the individual is located in at a specific moment in time, all while whether the individual is at the beach, the mountains, a metropolitan area, or either walking, running, cycling, or roadtripping.

## Process Of Building

Components

1. Frontend / Webpage (HTML / JavaScript)
2. Upload Image File → Drag File From Local → Send Image → Payload Base 64
3. Send File To Backend
4. Backend (Google Cloud Platform + Node)
5. Process File
6. Send File To Google Cloud Platform Vision API
7. Formulate Results To Send To Magenta
8. Machine Learning (Python / Magenta / MusicVAE)
9. Train MusicVAE
10. Generate Mediation Melodies Through Interpolating Between Various Note Sequences

## Challenges

Backend (Google Cloud Platform + Node)

* The Google Cloud Platform Vision API was not able to recognize the images in an accurate manner, so we instead recognized the images through detecting the differing colors in the image. For example, if the detected colors in the image were perhaps either red, orange, or other bright colors, the generated melodies would then be a bit more upbeat and cheerful. However, if the detected colors in the image were blue, purple, or other dark colors, the generated melodies would then be a bit more calming and serene.
Machine Learning (Python / Magenta / MusicVAE)
* MusicVAE is a hierarchical variational autoencoder that learns a summarized representation of musical qualities as a latent space, and encodes a musical sequence into a latent vector, in which can then be later decoded back into a musical sequence. We at first desired to use this pretrained MusicVAE model, however we ended up needing to personalize this MusicVAE model and thus needed to train our own MusicVAE model to generate certain parts of latent space we needed.
## Inspiration

Music has the power to evoke deep emotions, and we wanted to translate that emotional depth into visual art. SymphonicSlates bridges the gap between auditory and visual experiences, offering users a unique never-before-seen way to see the music they love.

## What it does

SymphonicSlates takes any Spotify track and generates an image that captures its underlying emotional tone. It does this by analyzing the track’s hidden semantic meaning. Unlike anything currently available on the market, our product moves beyond basic audio analysis, offering a unique "Audio2Image" experience.

## How we built it

SymphonicSlates was trained on the Moodify dataset, which contains a 278 thousand dataset mapping data about tracks such as "Tempo", "Energy", "Livelyness" to 1 of four moods: Happy, Sad, Angry, and Relaxed. Finally, the extracted mood is then combined with other metrics to be fed into an image diffusion model. To streamline the data flow, Convex was used to create and deploy a robust back-end database, allowing us to store, query, and manage both the music features and image generation outputs efficiently.

## Challenges we ran into

One of our primary challenges was cleaning and normalizing the Moodify dataset, which had inconsistent ranges for musical features. After thorough research, we found a GitHub project that offered insights into solving these issues. Another major hurdle came during deployment. The Spotify API’s browser-based authentication caused complications when we tried to integrate our app into Hugging Face, which interacts with Convex. We had to implement creative workarounds to ensure seamless Spotify integration.

## Accomplishments that we're proud of

We’re proud of creating a truly unique solution, as no similar "Audio2Image" products currently exist on the market. A thorough search on Google revealed that SymphonicSlates stands out by translating audio tracks into visual art, filling a gap in both the music and visual tech space. In addition, we successfully integrated machine learning models, music feature extraction, and image generation into a cohesive system. Overcoming the challenges with the Spotify API and deploying the app on Hugging Face was also a major achievement for the team. Convex played a vital role in ensuring the project ran smoothly by managing data flow seamlessly.

## What we learned

Throughout this project, we learned the importance of flexibility when working with external APIs like Spotify. We also gained hands-on experience with Convex for back-end management, deepened our understanding of music feature extraction, and sharpened our skills in deploying machine learning models. Most importantly, we learned how to rapidly pivot and adjust to unexpected roadblocks, making us better prepared for future challenges.

## What's next for SymphonicSlates

We plan to expand SymphonicSlates by incorporating additional music genres and moods, further enhancing the model's ability to capture subtle nuances in audio. We're also exploring real-time audio-to-image generation and expanding our use of Convex for even more advanced data handling needs.
## Meet Our Team :)

* Lucia Langaney, first-time React Native user, first in-person hackathon, messages magician, snack dealer
* Tracy Wei, first-time React Native user, first in-person hackathon, payments pro, puppy petter :)
* Jenny Duan, first in-person hackathon, sign-up specialist, honorary DJ

## Inspiration

First Plate was inspired by the idea that food can bring people together. Many people struggle with finding the perfect restaurant for a first date, which can cause stress and anxiety. By matching users with restaurants, First Plate eliminates the guesswork and allows users to focus on connecting with their potential partner over a shared culinary experience. In addition, food is a topic that many people are passionate about, so a food-based dating app can help users form deeper connections and potentially find a long-lasting relationship.
After all- the stomach is the way to the heart.

## What it does

Introducing First Plate, a new dating app that will change the way you connect with potential partners - by matching you with restaurants! Our app takes into account your preferences for cuisine location, along with your dating preferences such as age, interests, and more.

With our app, you'll be able to swipe through restaurant options that align with your preferences and match with potential partners who share your taste in food and atmosphere. Imagine being able to impress your date with a reservation at a restaurant that you both love, or discovering new culinary experiences together.

Not only does our app provide a fun and innovative way to connect with people, but it also takes the stress out of planning a first date by automatically placing reservations at a compatible restaurant. No more agonizing over where to go or what to eat - our app does the work for you.

So if you're tired of the same old dating apps and want to spice things up, try our new dating app that matches people with restaurants. Who knows, you might just find your perfect match over a plate of delicious food!

## How we built it

1. Figma mockup
2. Built React Native front-end
3. Added Supabase back-end
4. Implemented Checkbook API for pay-it-forward feature
5. Connecting navigation screens & debugging
6. Adding additional features

When developing a new app, it's important to have a clear plan and process in place to ensure its success. The first step we took was having a brainstorming session, where we defined the app's purpose, features, and goals. This helped everyone involved get on the same page and create a shared vision for the project. After that, we moved on to creating a Figma mockup, where we made visual prototypes of the app's user interface. This is a critical step in the development process as it allows the team to get a clear idea of how the app will look and feel. Once the mockup was completed, we commenced the React Native implementation. This step can be quite involved and requires careful planning and attention to detail. Finally, once we completed the app, we moved on to debugging and making final touches. This is a critical step in the process, as it ensures that the app is functioning as intended and any last-minute bugs or issues are resolved before submission. By following these steps, developers can create a successful app that meets the needs of its users and exceeds their expectations.

## Challenges we ran into

The app development using React Native was extremely difficult, as it was our first time coding in this language. The initial learning curve was steep, and the vast amount of information required to build the app, coupled with the time constraint, made the process even more challenging. Debugging the code also posed a significant obstacle, as we often struggled to identify and rectify errors in the codebase. Despite these difficulties, we persisted and learned a great deal about the React Native framework, as well as how to debug code more efficiently. The experience taught us valuable skills that will be useful for future projects.

## Accomplishments that we're proud of

We feel extremely proud of having coded First Plate as React Native beginners. Building this app meant learning a new programming language, developing a deep understanding of software development principles, and having a clear understanding of what the app is intended to do. We were able to translate an initial Figma design into a React Native app, creating a user-friendly, colorful, and bright interface. Beyond the frontend design, we learned how to create a login and sign-up page, securely connected to the Supabase backend, and integrated the Checkbook API for the "pay it forward" feature. Both of these features were also new to our team. Along the way, we encountered many React Native bugs, which were challenging and time-consuming to debug as a beginner team. We implemented front-end design features such as scroll view, flexbox, tab and stack navigation, a unique animation transition, and linking pages using a navigator, to create a seamless and intuitive user experience in our app. We are proud of our teamwork, determination, and hard work that culminated in a successful project.

## What we learned

In the course of developing First Plate, we learned many valuable lessons about app development. One of the most important things we learned was how to implement different views, and navigation bars, to create a seamless and intuitive user experience. These features are critical components of modern apps and can help to keep users engaged and increase their likelihood of returning to the app.

Another significant learning experience was our introduction to React Native, a powerful and versatile framework that allows developers to build high-quality cross-platform mobile apps. As previous Swift users, we had to learn the basics of this language, including how to use the terminal and Expo to write code efficiently and effectively.

In addition to learning how to code in React Native, we also gained valuable experience in backend development using Supabase, a platform that provides a range of powerful tools and features for building, scaling, and managing app infrastructure. We learned how to use Supabase to create a real-time database, manage authentication and authorization, and integrate with other popular services like Stripe, Slack, and GitHub.

Finally, we used the Checkbook API to allow the user to create digital payments and send digital checks within the app using only another user's name, email, and the amount the user wants to send. By leveraging these powerful tools and frameworks, we were able to build an app that was not only robust and scalable but also met the needs of our users. Overall, the experience of building First Plate taught us many valuable lessons about app development, and we look forward to applying these skills to future projects.

## What's next for First Plate

First Plate has exciting plans for the future, with the main focus being on fully implementing the front-end and back-end of the app. The aim is to create a seamless user experience that is efficient, secure, and easy to navigate. Along with this, our team is enthusiastic about implementing new features that will provide even more value to users. One such feature is expanding the "Pay It Forward" functionality to suggest who to send money to based on past matches, creating a streamlined and personalized experience for users. Another exciting feature is a feed where users can share their dining experiences and snaps of their dinner plates, or leave reviews on the restaurants they visited with their matches. These features will create a dynamic community where users can connect and share their love for food in new and exciting ways. In terms of security, our team is working on implementing end-to-end encryption on the app's chat feature to provide an extra layer of security for users' conversations. The app will also have a reporting feature that allows users to report any disrespectful or inappropriate behavior, ensuring that First Plate is a safe and respectful community for all. We believe that First Plate is a promising startup idea implementable on a larger scale.