Inspiration

The primary objective of our project is to strengthen the connections among people and promote a more active lifestyle during pandemic. The idea is inspired by many personal goal setting Apps around us. We wondered -- can we design an App that allows a group of people who have the same goal to set the goal together and to encourage each other to accomplish their tasks and overcome procrastination? Therefore, the Goal?Go! project is designed to help individuals find people who have similar interests with them.

What it does

For instance, if one user is interested in reading “Harry Potter 1”, he can invite his friends or strangers who are using the App and also want to read “Harry Potter 1” to set the goal of reading this book. When one of the users in this group finishes reading the book, he can mark the goal as “Done” and a signet will appear on the “Calendar”. Once every member in the group achieves the goal, they can get a postcard as a reward.

How we built it

The project is implemented in React Native. We started the designing process with determining the programming language and platform, and designing the user interface. After having a general sense of what the App should look like, we dived into the front end development and used randomly generated data to populate the website. We then focus on the backend implementation as well as how to communicate between the frontend and backend. Finally, we finished the project by testing the front end on browsers, Android phones, and iOS tablets to make sure it works for various user groups. We even ran the back end server on Google Cloud so it looked like a real-life application. Yeah!

Challenges we ran into

This is the first time for all of the team members to use react-native, the first challenge is to learn and apply the new programming language in a short period of time. React native is developed based on React, but meanwhile they are very different. The behaviours of many components are platform-specific -- patterns that work on one platform might fail on another. Throughout the development, we tested our code on iOS, Android, and Web to ensure the best experience for every user.

Another challenge is that we lack experiences of front and back ends communication. Developing the backend took us much more time than actually needed. After extensively consulting documents and coding, we successfully set up a server listening on the Google Cloud that could handle users’ requests. Due to the time limit, we do not have the chance of linking an actual PostgreSQL, which we could later add on.

Accomplishments that we're proud of

It was a bold decision when we decided to build a cross platform front-end with a framework that was quite new to us, let alone that we also tried to use Google Cloud Server as our back-end for the first time. It took us a lot of effort to build and connect the server to our front-end, and for times during the process we felt like not being able to make it. We are really proud that we persisted on doing it whatsoever, which fulfilled all its functionalities in the end.

What we learned

From a technical perspective, we learned how to use React Native as well as Google Cloud for application design. We also gained more knowledge of socket programming. In addition, as a team, we learned how to distribute workload properly and how to manage our time wisely.

What's next for Goal? Go!

Improve it! We will add more functionalities for you to CONNECT with others! Let you complete your next ambitious/beloved/ordinary/impossible goal together with your friends or strangers on the web! Also, make the UI more appealing. Maybe try material design.

Improve data security. Currently, all the data transmission between the client and the server is in plain text without encryption. no

Enhance UI rendering and data transmission efficiency. For example, the client code can cashed requested data so there is no need to perform repeated request when the UI rerenders.

Share this project:

Updates