The AdonisJS Challenge of December 2018

So it has been a while. In case you haven’t been following my blog (which I’m sure you haven’t… after all, why would you?), I started a monthly challenge type of thing in November that I called My 24th Birthday Developer Resolutions where I would aim to learn something new every month by setting myself a short term project to work on.

What happened with the December 2018 challenge?!

Well, to be fully honest… I really like AdonisJS and the fact that everything is a breeze to do, actually has me ironically looking forward to coming home and devving… after a long hard day at work… also devving.

There was obviously a learning period before I started work on the actual project I mentioned in the article as part of my December challenge which ate up the first week or so, but after that nothing has really held me back.

Cool story bro… so where’s the December 2018 challenge?!

It exists and is called AO.Knowledgeshare! Feel free to take a look at the commit history if you don’t believe me.

But try not to judge the code quality yet as I plan on setting a marker down eventually where I go back and clean things up, refactor, and investigate integrating some sort of Repository-ish Pattern-ish type thing to make the controllers a little leaner.

So is there a January 2018 challenge?

Well, no. The reason being is because I started this “monthly challenge” as mentioned in the original blog post to get me to increase the amount of development and learning I do at home in my free time and the struggles that I faced which I am trying to solve through this “monthly challenge” were discussed too.

The thing is, I don’t actually feel like I need to pivot away from the December 2018 challenge just because we’re now in January 2019, approaching February 2019. I’ve shown an MVP of this project to colleagues at work - which is where I initially envisioned the project could be of use - and so far, the feedback is positive.

The initial aim from December has pivoted and become more complex as it is no longer simply a platform on which users can share posts, but also now a Q&A Stack Overflow-esque type platform. The vision from a functionality perspective is to bring in user profiles which include the ability for users to be awarded badges by the administrators or over time for types of questions that they have probably answered. This way, if a question is ever posted under the category “SQL” for example, the users who have been awarded a SQL Badge in the past will immediately receive an automated e-mail to get them on the case ASAP.

From a technical point of view, I want to move the application away from being a traditional HTTP request based application, to also contain some Vue components to add some front-end dynamism and back-end API endpoints. This will allow users to dynamically upvote questions with an asynchronous call rather than have the page refresh which is not necessarily poor user experience, just a bit 1972.

Conclusion

I’m enjoying working on this project for the moment and building on it.
Once I get bored of it and it’s no longer giving me that tingle in my belly to want to come home and work on it, that’s when I’ll move away from it.
Expect a post next week that goes over what has been created so far with hopefully some cute gifs to go alongside it to show it in action!

I am also planning to publish a couple of AdonisJS tutorials on my blog as well.
The framework itself isn’t ground breaking, nor would I want to develop enterprise projects with it in its current state.
But because it is very Laravel-esque and thus is designed to be “convention over configuration”, it is great for evenings when you come home from work tired, but still want to code without having to make too many decisions or in general, work your head too much! The speed of development which is a biproduct of this approach is astonishing and perfect if you’re one of those developers with plenty of ideas for MVPs in your head and just want to grind through them quickly, so keep an eye out for those posts coming soon.