Table of Content


Introduction

This document records the decision-making process followed throughout the development of this project.

Many of the notes presented here are also summarized in the “Notes for the Evaluator” sections within each pull request on GitHub. However, this space serves to revisit some of those points with a bit more depth and reflection. Also, I will be able to reflect about some issues with more clarity now that I’ve completed the challenge.

This document also serves as a kind of development diary - a brief post-mortem of the project- highlighting what went well, what could have been improved, and key lessons learned along the way.

I truly appreciate your time and attention in going through this document!

- Adnir Andrade


Pre-Production

Even though this step wasn’t explicitly required by the challenge, I believed it was fundamental to the project’s development. I’m a strong believer that a well-grounded and solid foundation is the key to success in any kind of project - whether technical or personal.

So I decided to dedicate some time exclusively to setting up the development environment. Given the tight deadline (from Friday to Sunday, that’s when I could work on it), I knew I had no room for rework or time-wasting bugs. I needed the environment to work from the very beginning.

To that end, I installed and configured RuboCop as a linter, RSpec for testing, and ensured both were integrated into the CI/CD pipeline using GitHub Actions. I also opted to work in feature branches and submit pull requests for each step - not only to keep things organized but to maintain full transparency with whoever might be reviewing the code.

I used the entire Friday night to get everything properly set up, aiming to avoid interruptions later on - like missing dependencies or a misbehaving linter. RuboCop, of course, was its usual love-hate experience - helpful, but sometimes a bit too opinionated.