Inspiration

Strive was created with the purpose of motivating and keeping users accountable for their goals. During this pandemic, it has been very difficult to stay motivated in pursuing our goals. As a result, our aim is to inspire users to better themselves by creating a social networking app that provides features to track progress in your current objectives and view how others are performing in their goals.

What it does

At its core, Strive is a social media network meant to connect other people together through the concept of challenges. This is accomplished by allowing users to create their own challenges as well as join other user’s challenges. Users can follow each other to be “subscribed” to their created challenges. For a particular challenge, once a user has joined it, they can see the progress of all other joined users with the challenge as well as potential status updates. In this way, users are able to motivate/compete with each other all while being remote!

How we built it

Strive is a React Native app that has a TypeScript/Express/TypeOrm/MySQL backend. We started off establishing the data schemas that would be in the backend and that would represent the data we use in the app. Once this was done, we spent the majority of our time developing the UI, UX, and core code for the frontend React Native app. We started off implementing user authentication, and then we incrementally developed each section of the app as necessary. Finally, when the frontend app was ready, we “coupled” the frontend app with the Strive backend, enabling the data to be shared/viewed across devices and to bring the app functionality to life.

Challenges we ran into

We ran into quite a few challenges when developing Strive. For starters, we had to learn TypeScript in order to create the backend; the majority of this challenge was learning how types worked, and having the types for the various packages work well with each other. Once this was sorted out, we had a myriad of challenges when writing the React Native app, partly due to the fact that we weren’t too experienced with React Native. We had a hard time trying to share the authenticated user data across different critical components of the app, but eventually solved it with React Contexts. We also had quite a few issues arise when coupling the frontend and backend together.

Accomplishments that we're proud of

We are proud of numerous accomplishments. To begin, our proudest accomplishment was being able to create a fully functional application using an unfamiliar tech stack. Prior to this project, we haven’t worked with technologies such as Type ORM, TypeScript and React-Native. Being able to configure both the server and client using these technologies is something that we were particularly happy with. Also, we are proud that our app looks nice despite not importing an external font styles.

What we learned

We learned quite a lot throughout the initial development period of Strive. On the backend, we learned TypeScript, TypeORM, and how to create a TypeScript Express server. On the frontend, we gained experience with writing robust React Native applications and how to share data across different parts of the application. We also gained experience on how to couple React Native applications to an Express backend.

What's next for Strive

While there are quite a few features implemented for Strive already, there is much more to be done! We would like to implement new features, such as seeing who liked a post, your followers, who you follow, and your completed challenges (as well as having others see your completed challenges). We also would like to optimize and polish Strive, as the current performance and polish can leave something to be desired. Once these things have been done, we would love to deploy the app and have users compete with each other!

Share this project:

Updates