from: @Israel Pereira

<aside> 📐 Planning is perhaps one of the most important phases of a project. This is where you design what the foundations of the project will be, and any decision made here can have a big impact on the rest of the project.

</aside>

✨  Planning can be the key to success or failure. ✨

The foundations of a building

A building built on weak foundations will eventually collapse, but when building on strong foundations, it’s likely to last a long time!

Of course there are cases where a foundation can be changed later on, but it's not an easy task to accomplish after a certain point.

During the planning phase of this package, we thought of ways to implement the features we wanted and a way to structure the project for future developments, and we decided to follow some of the Clean Architecture, Domain Driven Design and SOLID approaches.

In our case, this means that we split the package into several layers, each with its own responsibility, and followed some of these concepts mentioned above, but without the need to be strict to them.

Consistency is sometimes better than beauty!

The hype

There were many ways we could have gone with this implementation, and after checking out the Laravel and PHP Communities, we found that Actions are a very popular way to implement this.

Actions are nothing more than classes that are responsible for performing a single task.

With this, instead of having a single class that does everything, we have several classes that each have their own responsibility.