## Inspiration

We were inspired by the theme of the hackathon; nostalgia. We thought that aside from smell, sight would be the most nostalgic sense to target and what more nostalgic than a photo album? Because phones are more common than ever, we tried to capture the nostalgia of a photo album in a modern way by turning the camara roll into a personalized photo album.

## What It Does

Select the photos you want to be used for one/multiple albums, then select the categories you want to use as filters for the photo album. Such as the filtering by the time period the photo was taken, the city it was taken in, the perceived emotion of the image, and by being able to differentiate people. Then the app generates a photo album using set templates that is custom tailored to you.

## How We Built It

We used expo go for rapid mobile app development and react-native. We also tried to use Auth0 for login authentication, and we managed to use Kintone for database storage. Then using image metadata and Python's deepface library, the pictures were sorted to match the categories chosen and a webpage was made to display the final photo album.

## Challenges We Ran Into

All of us had windows computers and iphones which turned out to be a really bad combination for mobile app development and expo go. Windows can't use testflight and iphones can't download apks so it was near impossible to build and test development builds and features during the hackathon, without a paid developer subscription. Especially being new to app development. We also ran into issues with retrieving IOS photo metadata, where you could not access it externally due to IOS security. Which proved to be a problem as we could not use Expogo to retrieve Apple's specific photo metadata, which only Swift was found to work. As a work around we found that by accessing the photos stored within the icloud folder would allow us to access the Apple metadata, but as soon as the file was moved outside of the icloud folder the Apple metadata would be removed. Resulting in a huge stop in the automation and integration of our backend to the front end app.

## Accomplishments That We're Proud Of

We are proud of the amount which we have learned through the immense amount of troubleshooting done this weekend. In specific about full app development and the interactions between the front and back ends. The skills and experiences gained in project communication and planning before beginning development. As well as the fact that both our app and backend codes worked as intended with it being unfortunate that we did not know of the language compatibility issues for IOS mobile development before finishing both codes and attempting to integrate.

## What We Learned

Front-end frameworks such as JavaScript, CSS, HTML, React-Native, Kitone, deepface, and Python. We also learned back-end frameworks such as Django, and Flask.
However, one of the most important things we learned was the importance of very careful project planning when working on a team project with not a lot of time to work with. Ensuring that all of the relevant overhead research is done on the languages, frameworks and API's before beginning development.

## What's Next For MyPhotoAlbum App

For this app we have a lot in mind for the future. Some of these ideas include:

* Redeveloping the app in Swift when we get access to means to simulate the app.
* Fully integrating the app flow as intended.
* Adding more features such as our developed but un-integrated facial comparison feature which determines and filters by people that are within the selected photos, as well as using a vision model to determine similar and key background objects such as a beach or mountain.
* Adding a timeline filter which takes one person and arranges the photo album in chronological order, to show the development of the selected person.
* Adding Video functionality to the photo album.
## Inspiration

The inspiration behind Nos Album was to create a mobile app that provides a seamless and user-friendly experience for organizing and enjoying photos. We wanted to design a solution that goes beyond just a traditional photo album, incorporating innovative features to enhance the overall user experience and really transcend all previous boundaries of immersion.

## What it does

Nos Album leverages Google Maps API to create a nostalgic photo album. The app analyzes the geotags associated with each photo and uses advanced metadata parsing algorithms to recognize and categorize the content. Users can explore their memories in a spatial context, allowing them to navigate through a map interface that showcases where each photo was taken. The ability to visit exactly the location of each memory adds a nostalgic touch to the photo album.

## How we built it

The app was built using a combination of Google Maps API for location-based services, react-native for the front end and back end. We integrated these technologies seamlessly into a mobile app framework, ensuring a smooth and intuitive user experience. The backend infrastructure was designed to handle geotag data and display the correct location

## Challenges we ran into

One of the main challenges was accurately associating geotags with photos and ensuring that the metadata parsing algorithms correctly identified the context of each image. We also faced integration challenges between the Google Maps API and our codebase. Striking the right balance between performance and accuracy posed a great challenge during development but we would like to think we did a good job in overcoming it.

## Accomplishments that we're proud of

We are proud of creating a mobile app that not only provides a visually appealing and intuitive interface but also incorporates advanced features like bringing the user to their photos to enhance the nostalgia factor. The successful integration of google maps api capabilities and the ability to display albums seamlessly were major accomplishments for us.

## What we learned

Throughout the development of Nos Album, we gained valuable insights into mobile app development, user experience design, and the intricacies of implementing features related to geospatial data.

## What's next for Nos Album

In the future, we plan to enhance Nos Album by incorporating additional features such as geotagging, advanced search capabilities, and integration with social media platforms. Continuous improvement in machine learning algorithms for better photo categorization and recognition is also on our roadmap. Not only that, but possibly leverage AI to make create an even more personalized experience. Additionally, we aim to gather user feedback to make iterative updates and ensure Nos Album remains a cutting-edge solution for photo organization and sharing.
## Inspiration

The impact of COVID-19 has had lasting effects on the way we interact and socialize with each other. Even when engulfed by bustling crowds and crowded classrooms, it can be hard to find our friends and the comfort of not being alone. Too many times have we grabbed lunch, coffee, or boba alone only to find out later that there was someone who was right next to us!

Inspired by our undevised use of Apple's FindMy feature, we wanted to create a cross-device platform that's actually designed for promoting interaction and social health!

## What it does

Bump! is a geolocation-based social networking platform that encourages and streamlines day-to-day interactions.

**The Map**

On the home map, you can see all your friends around you! By tapping on their icon, you can message them or even better, Bump! them.

If texting is like talking, you can think of a Bump! as a friendly wave. Just a friendly Bump! to let your friends know that you're there!

Your bestie cramming for a midterm at Mofitt? Bump! them for good luck!

Your roommate in the classroom above you? Bump! them to help them stay awake!

Your crush waiting in line for a boba? Make that two bobas! Bump! them.

**Built-in Chat**

Of course, Bump! comes with a built-in messaging chat feature!

**Add Your Friends**

Add your friends to allow them to see your location! Your unique settings and friends list are tied to the account that you register and log in with.

## How we built it

Using React Native and JavaScript, Bump! is built for both IOS and Android. For the Backend, we used MongoDB and Node.js. The project consisted of four major and distinct components.

**Geolocation Map**

For our geolocation map, we used the expo's geolocation library, which allowed us to cross-match the positional data of all the user's friends.

**User Authentication**

The user authentication proceeds was built using additional packages such as Passport.js, Jotai, and Bcrypt.js. Essentially, we wanted to store new users through registration and verify old users through login by searching them up in MongoDB, hashing and salting their password for registration using Bcrypt.js, and comparing their password hash to the existing hash in the database for login. We also used Passport.js to create Json Web Tokens, and Jotai to store user ID data globally in the front end.

**Routing and Web Sockets**

To keep track of user location data, friend lists, conversation logs, and notifications, we used MongoDB as our database and a node.js backend to save and access data from the database. While this worked for the majority of our use cases, using HTTP protocols for instant messaging proved to be too slow and clunky so we made the design choice to include WebSockets for client-client communication. Our architecture involved using the server as a WebSocket host that would receive all client communication but would filter messages so they would only be delivered to the intended recipient.

**Navigation and User Interface**:

For our UI, we wanted to focus on simplicity, cleanliness, and neutral aesthetics. After all, we felt that the Bump! the experience was really about the time spent with friends rather than on the app, so designed the UX such that Bump! is really easy to use.

## Challenges we ran into

To begin, package management and setup were fairly challenging. Since we've never done mobile development before, having to learn how to debug, structure, and develop our code was definitely tedious. In our project, we initially programmed our frontend and backend completely separately; integrating them both and working out the moving parts was really difficult and required everyone to teach each other how their part worked.

When building the instant messaging feature, we ran into several design hurdles; HTTP requests are only half-duplex, as they are designed with client initiation in mind. Thus, there is no elegant method for server-initiated client communication. Another challenge was that the server needed to act as the host for all WebSocket communication, resulting in the need to selectively filter and send received messages.

## Accomplishments that we're proud of

We're particularly proud of Bump! because we came in with limited or no mobile app development experience (in fact, this was the first hackathon for half the team). This project was definitely a huge learning experience for us; not only did we have to grind through tutorials, youtube videos, and a Stack Overflowing of tears, we also had to learn how to efficiently work together as a team. Moreover, we're also proud that we were not only able to build something that would make a positive impact in theory but a platform that we see ourselves actually using on a day-to-day basis. Lastly, despite setbacks and complications, we're super happy that we developed an end product that resembled our initial design.

## What we learned

In this project, we really had an opportunity to dive headfirst in mobile app development; specifically, learning all about React Native, JavaScript, and the unique challenges of implementing backend on mobile devices. We also learned how to delegate tasks more efficiently, and we also learned to give some big respect to front-end engineers!

## What's next for Bump!

**Deployment!**

We definitely plan on using the app with our extended friends, so the biggest next step for Bump! is polishing the rough edges and getting it on App Stores. To get Bump! production-ready, we're going to robustify the backend, as well as clean up the frontend for a smoother look.

**More Features!**

We also want to add some more functionality to Bump! Here are some of the ideas we had, let us know if there's any we missed!

* Adding friends with QR-code scanning
* Bump! leaderboards
* Status updates
* Siri! "Hey Siri, bump Emma!"