Loïc Faugeron

6 Followers
40 Following
212 Posts
• 🧑‍💻️ I'm a Lead / Senior backend developer
• ⚧️ My pronouns are: he / his
• 🐘🎼 I write PHP and Symfony code
• 🐬🐘 I develop with MySQL and PostgreSQL databases
• 🐧💻 I use Linux/Mac and the CLI
• 🧱🦿 I like LEGO and Bionicle
Pronouns:he/him/his
Tech Bloghttps://gnugat.github.io/
Githubhttps://github.com/gnugat
BlueSkyhttps://bsky.app/profile/loicfaugeron.bsky.social

Qalin, BisouLand's Test Control Interface, has 3 UIs: a CLI, API and Web.

And to my utter dismay, I kept reaching for the Web UI. I live in the terminal. Unacceptable.

Next week Fabien will announce a Component to build TUI apps, at SymfonyLive Paris.

I literally couldn't wait. So I built a TUI with PHP-TUI, a PHP port of Rust's Ratatui.

My geek honour is saved 😼. Check out the article detailing it here:

https://gnugat.github.io/2026/03/18/xl-12-php-tui.html

And I even have a ChoiceField! With fuzzy find filter, y'all
I have a Form!
I have an InputField!
Current PHP-TUI status. Hotkey tabs. you press a hotkey (e.g. 2) to switch to a tab!

I can't wait for the announcement of the Symfony Terminal component...

Literally.

So decided to play with @dantleech 's PHP-TUI in the meantime

When my 2 apps (monolith and Qalin) started needing the same domain objects, I had a choice: publish packages to Packagist, and feel the pain of having to update multiple repos to propagate a change...

Or pull up a 10 year old trick: monorepo.

2 apps, 10 packages, zero extra tooling. Composer path repositories handle it all out of the box!

I've written about how to set this up.

https://gnugat.github.io/2026/03/04/xl-11-monorepo.html

I've just spotted that @fabpot 's keynote at the SymfonyLive Paris March 2026 will be about announcing a new Symfony Terminal component.

I'm so hyped! I've got "build PHP TUIs" in my 2026 new year resolution, can't wait to get started!!

https://live.symfony.com/2026-paris/schedule#keynote

How do you test a feature that only triggers 3 days after registration? You could wait. Or hack the DB. Or hardcode a bypass.

Or... expose a dedicated internal API that presets your app into any state on demand, like they've done at Bumble.

I couldn't find an established name for this pattern, does one exist?

I've written about how to build one with modern #Symfony

Usable by devs, QA, designers and product alike, through a CLI, API and web UI. Even in PHPUnit tests!

https://gnugat.github.io/2026/02/25/xl-10-qalin-test-control-interface-with-symfony.html

Symfony's got a super secret mascot since 2025: the SymPony.

Why is there no official announcement introducing the cutie? 🦓

Here's a clip about it: https://youtube.com/clip/UgkxLaUvYHSClyeTCPaeLkuwIJ68Oh9QFydu?si=D3tF2towLesGuI68

And here's a picture of my SymPony