Inspiration

We were inspired by some of our group members remarking that it was sometimes frustrating that many classes and homework assignments were in a decentralized location. Building off of that foundation, we decided it would be a good idea to create a generalized planner that keeps track of all of the necessary information you need to stay healthy, happy, and productive. However, we were not complete this and settled for a game instead, as well as some mock up concept art for the app.

What it does

This app uses data inputted by the user to keep a detailed itinerary of their daily responsibilities throughout the week, including class schedules, homework assignments, extracurricular activities, and even chores. The app will provide daily digests with advice, weather and traffic updates for the commute, and will notify users with ample warning for important events through text message notifications.

How we built it

We went through many frameworks in the process of constructing this app. At first, we decided to use React Native, using sqlite as a backend. However, after compatibility issues, we ended up working with a React NodeJS server using FirebaseDB.

Challenges we ran into

There was a plethora of unexpected challenges that caused an immense amount difficulty in our design process. This was the first time any of us had attempted to create a significant piece of software, so a lot of the initial time had to be spent planning out the structure of the code, the features, and a roadmap for development. We had wanted to avoided running a database server, since the app could perfectly function as an local app, since the data was unique to each user and there were social media capabilities. We had thought this would make things simpler. How wrong we were. Our approach used React Native with Expo to create a runtime environment. For all but one of our members, it took a great deal of time and effort to get this working initially, due to many errors from installations and modules. Not only were there errors after installation, due to the high volume of hackers at the event, the networks were slowed to a glacial pace, sometimes taking 25 minutes to install a single package. During this time, it felt as if there was little we could do. This delayed the start of our coding, putting us on the back foot right away. Firstly, the aforementioned compatibility issues arose after much of the general structure of the code was written. SQLite3 did not play nicely with React Native. At first, to avoid refactoring the entire codebase, we tried to replace the SQLite backend with AsyncStorage, another local, serverless option. However, this also proved to be very difficult since there were further compatibility issues that prevented us from making any progess on the app at all. After abandoning this AsyncStorage approach, we thought the best way forward was to abandon the mobile app idea, and just use React with NodeJS and a MySQL database. Somehow, we had chosen a third incompatible backend solution. It took us a long time to refactor all of this code, which left us with only 6 hours left with 0 sleep. At this point, we had little time and little experience in JavaScript.

Accomplishments that we're proud of

We are proud, that despite an immense amount of setbacks, we continued to try no matter what. None of us slept at all, and worked until the sun rose and the birds sang.

What we learned

We learned what it really takes to create an application. We also learned the importance of starting small, as there were a lot of features to implement, and the project started very ambitiously. The setbacks were not what we expected, and one of the things we learned was that it is very important to do a thorough amount of research on the frameworks that you select. What may seem easier at first, may actually end up being harder than implementing the solution that seems more complicated. Additionally, we found the importance of teamwork, but also that trying new things can often backfire. Yet, without failure, nobody would ever have learned a thing. We certainly gained a lot of experience with GitHub and version control, JavaScript, both back and front end development, and friendship. Despite not producing a functioning product of our initial desire, we still feel that we learned much.

What's next for Unforgettable

We still think that the initial idea has promise, and we hope one day to be able to revisit this with clearer heads, and a little more web development experience under our belts, in order to do our idea some justice.

Share this project:

Updates