Week 9 has been the final week of the course in which we adhere to a specific learning objective, with the focus this week being on combining AngularJS with Ruby on Rails. Angular and Rails are two of the largest and most complex topics we've covered throughout the course, and combining the two into one project appears to be no trivial matter.
Makersbnb take two
Our coach Sam set us a very familiar challenge for this week, to create an MVP Airbnb clone called Makersbnb, the very same challenge we were given during week 6! This initially came as a disappointment to some of us, we've thoroughly covered the Makersbnb domain already and would have appreciated something new to model. However as Sam explained it to us, the intention in repeating the challenge is to narrow our focus specifically to learning how to work with the new technology stack, rather than learning to work within a brand new domain.
When considering how to implement Angular and Rails into one project it seems there's no one correct way to proceed. Traditionally Rails is considered a back end framework, and Angular a front end framework, however there's a considerable overlap between the two. It was entirely down to us which logic to handle on the front end and which to pass off to the back end, and this required serious consideration.
After discussion, the direction our group decided to take the project in was to begin by initialising a Rails app, then afterwards initialising an Angular app within the Rails app. This posed questions around how best to enable communication between the two frameworks. The solution we opted for was actually informed by our GitHub profile viewer challenge from week 8, which was itself built with Angular. From within the Angular GitHub profile viewer we polled the GitHub API for data, and then displayed that data accordingly. We realised that for our current project we could consider the problem similarly, and use Rails purely as an API providing access to our SQL database, and poll this API from within the Angular app. There are however an awful lot of things that can go wrong when putting this structure together, and we pretty much hit every single one of them. A large problem comes from the fact that by default Angular and Rails both consider themselves a fairly closed system, and will happily pass data around within their own infrastructures, but when attempting to have one request data from and send data to another, a whole host of authorisation errors pop up. By the middle of the week the project began to feel like one big exercise in troubleshooting. Logic bugs can sometimes be enjoyable to troubleshoot, and rewarding to fix, but the kind of framework setup problems we faced this week were nothing but an added frustration, and anything but rewarding, because they require less logical thinking to solve and much more studying of an dadhering to the docs. Oh so many docs. I found this week to be the most mentally tiring of the whole course, but we're nearing the end so this is probably to be expected.
As the week progressed we learned precisely why reusing the Makersbnb challenge was such a good idea, when it transpired that after days of wrestling with the frameworks we still hadn't actually managed to implement a single user story feature yet. Frustratingly during this week our group somehow stumbled headfirst into every conceivable hurdle outside of the Rails and Angular challenge too, from inexplicable GitHub issues, seemingly haunted computers that deleted and reverted code at will (I'm sure that was user error), and a range of issues related to establishing each of the required testing frameworks on every team member's computer. Thankfully we were also afforded the weekend to work on the challenge. We worked on the project all weekend long, and ultimately we triumphed, resulting in a successful implementation, which despite only resolving a handful of the project's user stories, we'd consider a success.
Final project time!
This weekend also saw us voting on our preferred ideas to work on for the final project! Terrifying as it may be, the end of this week has brought with it the last of the course's structured learning. Of the three remaining weeks, the next two will be solely concerned with our two week long final project, with the final week being devoted to career assistance. Toward the end of this week the entire cohort gathered with the intention of thinking up ideas together for our final projects. This was a hilarious meeting that brought some much needed comic relief to a very intense week, and it saw dozens of ideas being thrown around by members of the cohort in the form of thirty second elevator pitches. Some ideas were genuinely great and some were so, so bad. I suggested two ideas myself that I thought had a good chance of being popular. Sam kept note of each idea, and after the meeting we were each asked to vote for our favourite three ideas to work on, in no particular order. From these votes Sam then created a further list of the ten most popular ideas, and I was pleased to learn that both of mine had made it to that list. We each had to select from these top ten ideas the three which we'd most like to work on, this time rated from first to third place. From this final survey Sam compiled a list of the five most popular chosen ideas, each assigned to a team, with the intention to place as many members as possible into their respective first place choices.
Next Monday morning will see us presenting our Angular-Rails Makersbnb projects to the rest of the cohort, but knowing that the final project teams will be released on Monday afternoon, which we're all excited to see, there doesn't seem to be much interest in Makersbnb v2 any more!