## Inspiration

Drawing inspiration from our personal academic journeys and identifying challenges faced by fellow students, we wanted to create a solution that resonated with students seeking motivation tailored to their unique circumstances. Reflecting on our own experiences, we acknowledged that attendance struggles were not always rooted in a lack of motivation; sometimes external factors played a role. This realization fueled the integration of flexibility into our goal-setting. While achieving goals in their entirety is undoubtedly ideal, we recognized the importance of striking a balance between productivity and well-being.

In contrast to traditional methods that rely on guilt and unrealistic objectives, our approach embraces gamification and realistic metrics. By doing so, we aimed to create a positive and achievable path toward academic success and class attendance, acknowledging the nuanced nature of students' lives and motivations.

Seeing the lack of attendance in class also discourages other people from going and a valuable part of education is learning from others and peers, making that in-person connection.

## What it does

While onboarding, Rise allows its users are then able to select their weekly attendance goal based on their personal circumstances. Users are also able to either manually input their class schedule or import their entire class schedule as an .ics calendar file. The app uses geolocation to record whether or not has attended class, as well as uses it to determine if the user’s friends have also attended class and are nearby.

Rise incorporates a gamification aspect through the character that lives in the app who is happy as you consistently meet your personalized goal, and sad when you don’t. As you attend class, you receive a ‘sun’ currency that you can use to buy customizations for your character. As a user consistently attends class, they maintain an attendance streak. This contribtues towards their weekly attendance goal, motivating students to keep up their attendance to not lose their streak.

A user would be able to add their friends and optionally share notifications with each other when the other leaves for or arrives to class! There would also be notifications for when a user should leave for their class, based on their current location, as well as for when a user’s attendance starts to improve or decline.

## How we built it

First, the app was wireframed, and then designed and prototyped with Figma.
Then, we set up the frontend with React Native so that our app could run on both iOS and Android devices. The backend is built with Node.js, a JavaScript runtime. For the database, we used MongoDB and Mongoose to maintain the structure of our data. To predict the likelihood of whether or not the user will attend class on a given weekday based on prior data, we used Brain.js, a JavaScript library used for neural networking in the backend. To host the backend, we used AWS Lamba.

## Challenges we ran into

None of our members had prior experience integrating an AI model into an application, so it was a struggle to both learn about how AI works and train the AI model while getting it to predict data accurately. Initially, we had planned on using Tensorflow due to its popularity, but we decided to pivot to Brain.js as it was more beginner friendly.

In addition, we ran into challenges connecting our backend to our frontend with CORS and hosting.
The time constraint was also a challenge to work with, given our lack of experience in working with both React Native and AI.

## Accomplishments that we're proud of

For 2/3 members, it was their first hackathon which is a huge accomplishment. Some of our proudest work is the time we took into our design to make it more personal and user-friendly.

We were able to successfully use Brain.js to make a basic AI model and train it based on the data we provided, which was an accomplishment given that this was the first time we worked with AI.

The fact that we were able to make a portion of a working full-stack application within the time limit was also something we are proud of.

## What we learned

We learned a lot about UX/UI design interfaces and how to Figma. Going through the process of designing the application allowed us to learn how to use the tools of Figma more efficiently.

This was the first time some of us had used technologies such as React Native, Javascript, Github, and MongoDB. We learned how to use React Native to implement features and style our application. Using Javascript, we were able to build a working backend. With MongoDB, we learned about how a database works as well as how it interacts with a backend. Using Git, we learned how to collaborate with one another on a shared codebase by using commands such as commit, push, and pull.

We also learned about AI concepts and how to create a basic AI model. We learned more about the process of training the model to acquire better predictions.

## What's next for Rise

Unfortunately due to the time constraints, we were unable to implement the onboarding flow as well as develop some of the more advanced features that were in our initial design. Completing these would be our immediate next step for Rise. We also wanted to implement a notification feature as explained in the ‘What it Does’ section.

We envisioned a more advanced AI model that could detect deviations in attendance as well as more accurately predict the likelihood of a user attending classes on a given day in the future. The next step would be for us to learn more about how AI works and relevant technologies, and use that knowledge to create a more powerful model.

In addition, the design of our app could be fleshed to look more sophisticated and eye-catching.

Based on user feedback, our app could be more accommodating or helpful towards those who are unable to make it to class for reasons out of their control. We would take these into consideration so that Rise can help more people make it to class.
## Inspiration

We’ve noticed that it’s often difficult to form intentional and lasting relationships when life moves so quickly. This issue has only been compounded by the pandemic, as students spend more time than ever isolated from others. As social media is increasingly making the world feel more “digital”, we wanted to provide a means for users to develop tangible and meaningful connections. Last week, I received an email from my residential college inviting students to sign up for a “buddy program” where they would be matched with other students with similar interests to go for walks, to the gym, or for a meal. The program garnered considerable interest, and we were inspired to expand upon the Google Forms setup to a more full-fledged social platform.

## What it does

We built a social network that abstracts away the tediousness of scheduling and reduces the “activation energy” required to reach out to those you want to connect with. Scheduling a meeting with someone on your friend’s feed is only a few taps away. Our scheduling matching algorithm automatically determines the top best times for the meeting based on the inputted availabilities of both parties. Furthermore, forming meaningful connections is a process, we plan to provide data-driven reminders and activity suggestions to keep the ball rolling after an initial meeting. 

## How we built it

We built the app for mobile, using react-native to leverage cross-platform support. We used redux for state management and firebase for user authentication.

## Challenges we ran into

Getting the environment (emulators, dependencies, firebase) configured was tricky because of the many different setup methods. Also, getting the state management with Redux setup was challenging given all the boilerplate needed.

## Accomplishments that we're proud of

We are proud of the cohesive and cleanliness of our design. Furthermore, the structure of state management with redux drastically improved maintainability and scalability for data to be passed around the app seamlessly.

## What we learned

We learned how to create an end-to-end app in flutter, wireframe in Figma, and use API’s like firebase authentication and dependencies like React-redux.

## What's next for tiMe

Further flesh out the post-meeting followups for maintaining connections and relationships
## 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!"