## Inspiration

Arriving into new places always means starting all over again, including with friends and socializing. It was one lonely night when I had the idea to do something, but didn't ask anyone thinking they would be busy. Turns out they were thinking the same way too! We needed a way to communicate effectively and gather plans based on what we are up to doing, while reconnecting with some old friends in the process.

## What it does

You log in with Facebook and the app gets your friend connections who are also registered in the app. At any point you can set up a plan you want to do, maybe going for dinner at that new place, or hiking around the mountains near town. Maybe you will spend the night home and someone might want to hop in, or even you could schedule your gaming or streaming sessions for others to join you in your plan.
Maybe you don't know exactly what you want to do. Well, the inverse is also applied, you can hop in into the app and see the plans your friends have for a specific time. Just go into their post and tell them "I'm in"

## How we built it

In order to get the open access possible in a short ammount of time we implemented this as a Web Page using the MERN stack. Mongo, Express React and Node. This helps us build and deliver fast while also retaining most of the control over the control of our app. For this project in particular we tried an interesting approach in the file ordering system, emmulating the PODS system used in some frameworks or languages like Ember. This helps us group our code by entitied and also divide the workflow efficiently.

## Challenges we ran into

Because we are using the info from Facebook we frequently run into the problem and design decision of whether to cache the information or keep it flowing to maintain it updated. We want the user data to be always fresh, but this comes at a cost of multiple repeated fetches that we don't want to push into our clients. We ended up running with a mix of both, keeping the constant queries but optimizing our flow to do the least of them as possible.

## Accomplishments that we're proud of

The system in which the user friends are gathered for social communication depends heavily on the flow of the Facebook API, this was the most difficult thing to gather, especially ensuring a smooth onboarding experience in which the user would both login seamlessly with their social network, while at the same time we make all the preparations necessary for the user model to start using the app. It's kind of like a magic trick, and we learned how to juggle our cards on this one.

## What we learned

Returning to our fresh data problem, we realized the importance of determining earlier on when to normalize or not our data, seeing the tradeoffs this bring and when to use which one. Many times we rearranged code because we saw a more efficient way to build it. Knowing this from the beginning will save a lot of time in the next hackathons.

## What's next for Jalo

Make it big!! The basic functionality is already there but we can always improve upon it. By selecting which friends are going to be the ones invited to the events, setting filters and different functionalities like a specific date for responding, etc. Improving the chat is also necessary. But after all of that, make our friends use it and continue scaling it and see what more it needs to grow!
## Inspiration

*“The hardest part is starting. Once you get that out of the way, you’ll find the rest of the journey much easier.” - Simon Sinek*
Oftentimes, we become unmotivated and stressed when faced with seemingly unachievable goals. This motivated us to build an interactive mobile app that helps break these goals down into daily doable tasks – all while fostering a motivating community to keep each other accountable. By sending the user daily reminders to complete a task in a category of their choice, we take away the stress of having to take those daunting first steps. In doing so, we are removing the barriers preventing users from fully exploring their interests and evolving beyond the scope of their current self. Re:New provides anybody and everybody with endless possibilities to ***reimagine a new you***.

## What it does

Re:New sends the user one notification a day, reminding them to complete a randomized task that is customized towards their specific well-being goals. This includes fitness, wellness, academics, and skill learning. Once they complete the task, they can post a picture to verify their completion, as well as the chance verify the tasks of other users.

## How we built it

We began by creating UI/UX designs using Figma. Then, we built the front-end of the mobile application using React Native and Redux for state management. For the back-end, we used Boto3 for AWS S3 for image file storage and AWS DynamoDB for our image metadata database. In addition, we also used the co:here natural language processing API to create AI-generated tasks, based on task categories chosen by the user. To link all of our back-end to the front-end of the mobile application, we used Flask to establish a REST API.

## Challenges we ran into

1. Establishing the REST API and learning Flask
2. Learning how to upload and retrieve image files of BLOB type to and from the AWS S3 service
3. Translating some of the UI/UX designs to React Native code
4. Trying to link the metadata of images from AWS DynamoDB to corresponding images in AWS S3
5. Linking the back-end code to the front-end code seamlessly

## What we learned and accomplished through this process

It was exciting to learn more about performing mentally-relieving tasks to improve mental health while providing users with new opportunities to explore beyond their horizons. In this short timeframe, we’re proud of the various APIs, tools, and frameworks we were able to implement, especially as it was our first time using them. To name a few, this included REST API development with Flask, API testing with Postman, the co:here (NLP) API, AWS S3 image storage, and Figma UI/UX designs.

## What's next for Re:New

We envisioned Re:New to be a globally connected app, therefore we are looking to create a more interactive platform to create more opportunity for community-building and social interaction. To help with user customization, we want to be able to provide more personalized task packages that could recommend the next step for users.
## Problem

In these times of isolation, many of us developers are stuck inside which makes it hard for us to work with our fellow peers. We also miss the times when we could just sit with our friends and collaborate to learn new programming concepts. But finding the motivation to do the same alone can be difficult.

## Solution

To solve this issue we have created an easy to connect, all in one platform where all you and your developer friends can come together to learn, code, and brainstorm together.

## About

Our platform provides a simple yet efficient User Experience with a straightforward and easy-to-use one-page interface.

We made it one page to have access to all the tools on one screen and transition between them easier.

We identify this page as a study room where users can collaborate and join with a simple URL.

Everything is Synced between users in real-time.

## Features

Our platform allows multiple users to enter one room and access tools like watching youtube tutorials, brainstorming on a drawable whiteboard, and code in our inbuilt browser IDE all in real-time. This platform makes collaboration between users seamless and also pushes them to become better developers.

## Technologies you used for both the front and back end

We use Node.js and Express the backend. On the front end, we use React. We use Socket.IO to establish bi-directional communication between them. We deployed the app using Docker and Google Kubernetes to automatically scale and balance loads.

## Challenges we ran into

A major challenge was collaborating effectively throughout the hackathon. A lot of the bugs we faced were solved through discussions. We realized communication was key for us to succeed in building our project under a time constraints. We ran into performance issues while syncing data between two clients where we were sending too much data or too many broadcast messages at the same time. We optimized the process significantly for smooth real-time interactions.

## What's next for Study Buddy

While we were working on this project, we came across several ideas that this could be a part of.
Our next step is to have each page categorized as an individual room where users can visit.
Adding more relevant tools, more tools, widgets, and expand on other work fields to increase our User demographic.
Include interface customizing options to allow User’s personalization of their rooms.

Try it live here: <http://35.203.169.42/>

Our hopeful product in the future: <https://www.figma.com/proto/zmYk6ah0dJK7yJmYZ5SZpm/nwHacks_2021?node-id=92%3A132&scaling=scale-down>

Thanks for checking us out!