Blog
#Best Practices
Deep dives, build logs, and stories from the Codenzia team — about shipping products, running engineering, and growing teams.
Filament v4: what changed, and what it costs to upgrade
We moved eleven production panels to Filament v4. Here is the short list of breaking changes that actually cost us time, and the ones the upgrade guide handles for you.
Authorization is not a form field
Hiding a button is a user-interface decision. If that is the only thing standing between a low-trust user and a published page, you do not have authorization — you have a suggestion.
Storing translations without a column per language
A title_en and title_ar pair works until the third language. Here is the storage shape we standardised on across every bilingual product we run.
What a good handover actually contains
A project is not delivered when it works. It is delivered when a team that has never met you can change it safely on a Friday afternoon.
Shipping a Flutter app and a Laravel panel from one spec
Two codebases, two release cadences, one product. The thing that keeps them honest is not a shared library — it is a shared definition of done.