Project Note
#projects #webDuring the second year at UCL's undergraduate CS course, during one of the university's scenario weeks1, we were given the challenge of building a full-stack authenticated web application for taking notes. The main aim of this project was to test our devops capabilities, and we would be gain extra marks for the more features we implement (continuous integration, heartbeat liveness testing, authentication services, etc.).
While I knew that it would be fairly simple to use something like Django to set most of this up with no hassle, as an additional handicap, I challenged myself to try and implement the frontend and the backend seperately with priorities on using libraries rather than frameworks - for example, using React and Redux for the frontend and Express for the backend, rather than a dedicated framework like Angular.
The difficulty was further compounded by the fact that I had no React experience prior to this week, so I had learn React on the go in a week while also implementing this system.
While I wrote most of this system, I should mention that this was done while working as part of a team of two other students. As the team leader, I delegated the roles of styling the website and configuring the git integration to my colleagues, while I worked on the main stack. Given the time pressure of just 1 week, and my lack of experience with React, I wanted to minimize the number of collaboration-related issues, and so tried to make sure that everyone was working on disjoint parts of the system.
Despite these efforts, disaster still somehow found a way into this
project, we one of my collaborators performed a forced
git push to
master on the night before the submission date while working on a
branch that was several days old, thereby wiping out all of my
progress. Even worse, given that I had finished the project, I had
not planned to need to access a keyboard during the final day and was
actually at a conference on that day. As a result, I ended up finding
myself in a panic trying and resolve this issue by ssh-ing into the
server from my phone
in a busy London train. Lucklily, in the end I
was able to get in contact with one of my team mates who then reverted
the change from his laptop, fixing this issue just in time.
As a side note, while my team was able to get a full marks on this assignment, the general consensus with the other students in my degree was that this project (even without the additional handicaps I self-imposed) was too difficult (they specifically stated that it was "impossible to solve"), which was suprising as most of the work in this project (apart from the coding) was just in working out the configurations of the parameters of the cloud services we were provided.
The project can be found here: Project note