In my introductory engineering course, we were given a project for the latter half of the semester. Of the several options given to us, one of them was to build an Android app. After much convincing my group to go with this option even though it wouldn't be the easiest of the options, we got to work. I was to do the programming, and all of the other responsibilities with creating the app would be largely left to the other members of my group since they weren't programmers like I am.

Lesson 1: 6 weeks isn't enough time to learn new frameworks and make a finished app.

I'm not sure why this came as a surprise, but I found the deadline coming up faster than expected and decided I needed to make the decisions on things I was weighing options for and sit down and write. For an entire day. That day probably wasn't healthy but it was enough to get the app to a usable state by the time the deadline for such a state arrived. Sure, it was lacking authentication and barely worked, but it worked!

In my rush to finish the app, I decided that instead of using MIT's App Inventor 2 system, one which I had no experience with, I would just write it in React with a Firebase backend. It ended up working fairly well and I surprised myself a bit when I realized how quickly I went from a create-react-app template to a working app.

Lesson 2: Pace yourself.

I found out the next day when my TA was checking it that this may not fulfill the requirements of the project. Yes, before you say it, I should have followed the requirements of the project, and I have learned, but my brain just sort of told me it was fine because PWAs are the future of apps anyway.

Final app screenshots

Now that the crunch time had passed I had a little downtime. I worked a bit on other projects and schoolwork and slowly made finishing touches on the app. As I write this, it's at a state that I can show it off as a prototype (which is all the class asked for). It updates in real-time, it's responsive, and I'm fairly happy with the design (thank god for Semantic-UI).

Part of the requirements of the project was to collect data on what you create. What the instructors meant was to survey people as they used it, but I decided to take it a step further. I'd never really used Google Analytics before, and I wanted to try it out, so I did. I had the client send pings to GA on every navigation and button click, and it's interesting to see all the data and get a feel of how people really use an app without looking over their shoulder.

Screen-Shot-2018-04-06-at-4.16.05-PM
Screen-Shot-2018-04-06-at-4.18.16-PM
This data is just from testing the app, hence some of the weird user behaviors

The code will probably be going up on GitHub soon, just as soon as I can clean it up. One thing I wish I had a chance to add is user notifications, but I just couldn't find a method for PWAs that a) did what I wanted it to do and b) didn't make my head hurt. If you'd like to add it for me, feel free to submit a PR once the code is up on my GitHub 🙂.