SlideShare a Scribd company logo
1 of 40
FilamentPHP:
il tuo admin panel
sotto steroidi
Sono uno sviluppatore web, docente e
Scrum Fundamentals Certified.
In Aulab faccio parte di un team dedicato a
vari corsi di upskilling e reskilling
nell'ambito della programmazione, dove
sono il Product Owner di un percorso
formativo basato proprio su Laravel.
Hello world!
Sono Davide Cariola
Questo progetto nasce dalla necessita'
aziendale di creare un sistema di gestione
granulare della permessistica su una
piattaforma con numerosi tipi di utente.
Con il pretesto, quindi, di presentarvi
Filament, andremo a vedere come
abbiamo pensato di implementare questo
sistema.
Il progetto
Con l'aumentare della complessità,
Nova comincia a starci stretto
FilamentPHP, o solo Filament, è un toolkit
open source che permette di creare
dashboard attraverso dei componenti full-
stack.
E' uno strumento batteries included, che
permette di creare tantissime UI a seconda
delle necessità del cliente.
Nasce il 16 Agosto 2022 dall'impegno di
Dan Harrin, Lead Developer per
Kirschbaum, e Ryan Chandler,
sviluppatore Laravel, Rust e Go.
Cos'è FilamentPHP
Nova e' il favoured enemy di Filament:
entrambi i tool permettono, infatti, di
creare gestionali complessi.
Al contrario di Nova, che preferisce
componenti in Vue.js, Filament integra
perfettamente lo stack TALL (Tailwind CSS,
Alpine.js, Laravel, Livewire).
Lo stack tecnologico
C'e' una community Discord dedicata,
molto attiva, che conta più di 10k utenti e
sezioni dedicate a pacchetti di terze parti,
per raccogliere feedback e consigli.
Sul sito ufficiale e' possibile trovare, inoltre,
delle sezioni Tricks e Blog sul sito ufficiale,
con più di 100 articoli, a cui tutti possono
contribuire.
Notato dalla community…
Filament è stato notato anche da Taylor
Otwell, Jeffrey Way e tutto il team dietro
Laracasts.
Sulla piattaforma di video tutorial dedicati
a Laravel e' infatti possibile trovare una
"Creator Series" tenuta proprio daDan
Harrin, che spiega come creare
componenti custom e interi plugin per
Filament.
…e anche da Laravel
Scelgo Filament perché è facile,
veloce e personalizzabile
Filament e' un toolkit low-code
che permette di creare pannelli
gestionali attraverso codice
estremamente dichiarativo,
sfruttando al massimo OOP e
Fluent Interface.
È facile
Simile a Nova
Filament è incredibilmente facile da
utilizzare, soprattutto per chi -come il
sottoscritto- adora Laravel Nova e l'ha
utilizzato spesso nei propri progetti.
Permette infatti allo sviluppatore Laravel
di trasferire immediatamente la sua
Developer eXperience sul nuovo tool con
il massimo risultato.
Tramite attributi statici e metodi molto
parlanti, possiamo ottenere un ottimo
risultato in pochissimo tempo.
Un punto focale, come magari possiamo
notare nel codice ma che vedremo
meglio dopo, è che ogni singolo metodo
accetta anche una Closure.
Tanto in poco tempo
Navigation Group
Section & Input
Navigation Label & Icon
Integrazione c/FilePond
Sfruttando Livewire, Filament ha dei
campi built-in molto particolari, alcuni tra
i quali permettono di modificare il valore
di un elemento in un click, senza passare
dalla sezione di edit.
Con Nova, questo richiederebbe un Field
custom sviluppato con Vue.js.
Tante possibilita'
Laravel Day Italia 2023 - Davide Cariola
Ed essendo una caratteristica built-in del
tool, la medesima logica è utilizzabile
anche su altri tipi di input, come un input
text.
Nel codice qui accanto, l'input
TextInputColumn, ci consente di poter
modificare (e salvare) lo stato di un
oggetto direttamente dalla
visualizzazione tabellare.
Reattivita' al top
Abbiamo già detto che Filament
utilizza il TALL stack, e questo
permette allo sviluppatore
Laravel di essere molto più
efficiente ed efficace.
Soprattutto se ha conoscenze di
sviluppo con VueJS minime.
È veloce
Un'altro elemento importante di
Filament è che utilizza di default
Laravel-Vite invece di lavorare
con Laravel Mix.
Questo da accesso a diverse
features come l'hot-reloading,
che permettono di avere
un'esperienza di sviluppo più
produttiva e rapida.
Usa Laravel-Vite
Una delle cose che più mi ha
colpito di Filament è la
possibilità di personalizzazione
data allo sviluppatore.
Se alcune feature, come
personalizzare le label di
navigazione, le icone ecc. sono
abbastanza standard, altre
invece sono molto più
particolari.
È personalizzabile
Per esempio, basta una semplice riga di
codice per rendere la sidebar collassabile.
O magari preferiamo una navbar invece di
una sidebar: una semplice riga di codice.
E davvero tanto altro per quanto riguarda la
UI, in un'applicazione che può essere anche
multi-tenant.
Tante UI diverse
Ma la feature che davvero fa brillare
Filament è la possibilità di creare delle
"Pages".
Queste pagine sono dei componenti full-
page di Livewire, che integrano
perfettamente il Tall stack.
In questi componenti, infatti, possiamo fare
tutto ciò che possiamo fare con Livewire,
ma potendo aggiungere anche elementi di
Filament come azioni, widgets e altro.
Livewire Pages
Un esempio?
Laravel Day Italia 2023 - Davide Cariola
La schermata appena vista è un ottimo
esempio di quanto sia personalizzabile
Filament.
Infatti quella è una pagina che utilizza un
componente Livewire per tabs e
contenuto, una table di Filament per la
visualizzazione e un form di Filament per
la creazione.
Filament & Livewire
In questo modo abbiamo potuto
unire Livewire a una UI già
predisposta di Filament per ottenere
ciò che ci serviva davvero.
Senza cambiare linguaggio o
framework.
Stesso discorso per i field custom,
senza dimenticare che abbiamo
accesso ad Alpine.js.
Senza cambiare
linguaggio
Quindi, come Filament
ci ha aiutato a gestire i permessi?
Una gestione granulare dei permessi è
importante per diverse ragioni, tra cui non
solo c’è la flessibilità ma anche
soprattutto la sicurezza e la
minimizzazione di rischi.
Per quanto un approccio di tipo RBAC
(Role-Based Access Control) sia sempre
necessario, non è detto che sia abbastanza.
Se poi utilizziamo nella nostra azienda
concetti come Principle of Least Privilege
(Principio del Privilegio Minimo) e un
modello Zero Trust (Fiducia Zero), la
questione si complica ulteriormente.
Permessi granulari
È vero che, di solito, la gestione della
permessistica si basa sul ruolo in azienda.
È anche vero però che potremmo voler
gestire in maniera diversa – o
complementare - questa soluzione.
Vogliamo la possibilità di gestire i
permessi per competenze, oppure fare in
modo che utente specifico abbia un
permesso che esula dal suo ruolo,
assegnatogli per necessità di organico o
di formazione.
Laravel Day Italia 2023 - Davide Cariola
Nel Permission Manager abbiamo creato
una prima parte tabellare con Filament che
consente la gestione CRUD delle nostre
istanze oltre a replicare e filtrare tutti i
permessi disponibili in piattaforma.
Nice-to-have:
Grazie al comportamento reattivo di
Filament, è stato piuttosto semplice settare
in tempo reale il campo "Identifier",
composto dallo slug del nome più il
contesto di permessistica scelto.
Permission Manager
Laravel Day Italia 2023 - Davide Cariola
La seconda parte è invece un
componente Livewire che ci
permette di assegnare ogni singolo
permesso ai ruoli disponibili.
Nice-to-have:
Tramite Livewire, basta un click per
assegnare un permesso.
Tramite la direttiva @cannot, inoltre,
possiamo disabilitare le checkbox a
seconda dei permessi di ogni ruolo.
Permission Manager
Laravel Day Italia 2023 - Davide Cariola
Nel Role Manager abbiamo una
prima parte tabellare con Filament
che consente la gestione CRUD delle
nostre istanze oltre a replicare e
filtrare tutti i ruoli disponibili in
piattaforma.
Nice-to-have:
Possibilità di riordinare tramite drag-
and-drop, gli elementi di una tabella.
Creare Custom Actions super
rapidamente.
Role Manager
Abbiamo poi un componente
Livewire, ripetuto sulle ultime schede,
che ci consente di indicare quale
ruolo ha i permessi per assegnare o
modificare gli altri ruoli.
Nice-to-have:
Il sistema built-in di notifiche
completamente customizzabili
rende molto facile dare un feedback
all'utente sulle azioni compiute.
Role Manager
Laravel Day Italia 2023 - Davide Cariola
La schermata degli utenti invece
è un po’ più standard, in quanto
è una visualizzazione tabellare
gestita direttamente dalla
Risorsa User di Filament.
Ma anch'essa nasconde una
personalizzazione niente male:
l'azione gestisci che ci permette
di entrare nel dettaglio dei
permessi assegnati a un utente.
Gli utenti
Laravel Day Italia 2023 - Davide Cariola
Di default, Filament si lega alle
Policies standard di Laravel.
Per tutto il resto, ci sono metodi come
hidden(), visible() o disabled() che ci
permettono di gestire tutto tramite
delle closure.
In definitiva ci sono bastati un trait,
le Policies di Laravel e due Gates.
Policies & Gates
Per avere un codice il piu' pulito e
manutenibile possibile, tutta la logica
di business e' gestita in classi Service.
Nice-to-have:
Tanto migliore puo' diventare il nostro
progetto quanto piu' alta e' la nostra
proficiency su Laravel.
Clean Code
Ringraziamenti
https://joind.in/talk/1105d

More Related Content

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Laravel Day Italia 2023 - Davide Cariola

  • 1. FilamentPHP: il tuo admin panel sotto steroidi
  • 2. Sono uno sviluppatore web, docente e Scrum Fundamentals Certified. In Aulab faccio parte di un team dedicato a vari corsi di upskilling e reskilling nell'ambito della programmazione, dove sono il Product Owner di un percorso formativo basato proprio su Laravel. Hello world! Sono Davide Cariola
  • 3. Questo progetto nasce dalla necessita' aziendale di creare un sistema di gestione granulare della permessistica su una piattaforma con numerosi tipi di utente. Con il pretesto, quindi, di presentarvi Filament, andremo a vedere come abbiamo pensato di implementare questo sistema. Il progetto
  • 4. Con l'aumentare della complessità, Nova comincia a starci stretto
  • 5. FilamentPHP, o solo Filament, è un toolkit open source che permette di creare dashboard attraverso dei componenti full- stack. E' uno strumento batteries included, che permette di creare tantissime UI a seconda delle necessità del cliente. Nasce il 16 Agosto 2022 dall'impegno di Dan Harrin, Lead Developer per Kirschbaum, e Ryan Chandler, sviluppatore Laravel, Rust e Go. Cos'è FilamentPHP
  • 6. Nova e' il favoured enemy di Filament: entrambi i tool permettono, infatti, di creare gestionali complessi. Al contrario di Nova, che preferisce componenti in Vue.js, Filament integra perfettamente lo stack TALL (Tailwind CSS, Alpine.js, Laravel, Livewire). Lo stack tecnologico
  • 7. C'e' una community Discord dedicata, molto attiva, che conta più di 10k utenti e sezioni dedicate a pacchetti di terze parti, per raccogliere feedback e consigli. Sul sito ufficiale e' possibile trovare, inoltre, delle sezioni Tricks e Blog sul sito ufficiale, con più di 100 articoli, a cui tutti possono contribuire. Notato dalla community…
  • 8. Filament è stato notato anche da Taylor Otwell, Jeffrey Way e tutto il team dietro Laracasts. Sulla piattaforma di video tutorial dedicati a Laravel e' infatti possibile trovare una "Creator Series" tenuta proprio daDan Harrin, che spiega come creare componenti custom e interi plugin per Filament. …e anche da Laravel
  • 9. Scelgo Filament perché è facile, veloce e personalizzabile
  • 10. Filament e' un toolkit low-code che permette di creare pannelli gestionali attraverso codice estremamente dichiarativo, sfruttando al massimo OOP e Fluent Interface. È facile
  • 11. Simile a Nova Filament è incredibilmente facile da utilizzare, soprattutto per chi -come il sottoscritto- adora Laravel Nova e l'ha utilizzato spesso nei propri progetti. Permette infatti allo sviluppatore Laravel di trasferire immediatamente la sua Developer eXperience sul nuovo tool con il massimo risultato.
  • 12. Tramite attributi statici e metodi molto parlanti, possiamo ottenere un ottimo risultato in pochissimo tempo. Un punto focale, come magari possiamo notare nel codice ma che vedremo meglio dopo, è che ogni singolo metodo accetta anche una Closure. Tanto in poco tempo
  • 13. Navigation Group Section & Input Navigation Label & Icon Integrazione c/FilePond
  • 14. Sfruttando Livewire, Filament ha dei campi built-in molto particolari, alcuni tra i quali permettono di modificare il valore di un elemento in un click, senza passare dalla sezione di edit. Con Nova, questo richiederebbe un Field custom sviluppato con Vue.js. Tante possibilita'
  • 16. Ed essendo una caratteristica built-in del tool, la medesima logica è utilizzabile anche su altri tipi di input, come un input text. Nel codice qui accanto, l'input TextInputColumn, ci consente di poter modificare (e salvare) lo stato di un oggetto direttamente dalla visualizzazione tabellare. Reattivita' al top
  • 17. Abbiamo già detto che Filament utilizza il TALL stack, e questo permette allo sviluppatore Laravel di essere molto più efficiente ed efficace. Soprattutto se ha conoscenze di sviluppo con VueJS minime. È veloce
  • 18. Un'altro elemento importante di Filament è che utilizza di default Laravel-Vite invece di lavorare con Laravel Mix. Questo da accesso a diverse features come l'hot-reloading, che permettono di avere un'esperienza di sviluppo più produttiva e rapida. Usa Laravel-Vite
  • 19. Una delle cose che più mi ha colpito di Filament è la possibilità di personalizzazione data allo sviluppatore. Se alcune feature, come personalizzare le label di navigazione, le icone ecc. sono abbastanza standard, altre invece sono molto più particolari. È personalizzabile
  • 20. Per esempio, basta una semplice riga di codice per rendere la sidebar collassabile. O magari preferiamo una navbar invece di una sidebar: una semplice riga di codice. E davvero tanto altro per quanto riguarda la UI, in un'applicazione che può essere anche multi-tenant. Tante UI diverse
  • 21. Ma la feature che davvero fa brillare Filament è la possibilità di creare delle "Pages". Queste pagine sono dei componenti full- page di Livewire, che integrano perfettamente il Tall stack. In questi componenti, infatti, possiamo fare tutto ciò che possiamo fare con Livewire, ma potendo aggiungere anche elementi di Filament come azioni, widgets e altro. Livewire Pages
  • 24. La schermata appena vista è un ottimo esempio di quanto sia personalizzabile Filament. Infatti quella è una pagina che utilizza un componente Livewire per tabs e contenuto, una table di Filament per la visualizzazione e un form di Filament per la creazione. Filament & Livewire
  • 25. In questo modo abbiamo potuto unire Livewire a una UI già predisposta di Filament per ottenere ciò che ci serviva davvero. Senza cambiare linguaggio o framework. Stesso discorso per i field custom, senza dimenticare che abbiamo accesso ad Alpine.js. Senza cambiare linguaggio
  • 26. Quindi, come Filament ci ha aiutato a gestire i permessi?
  • 27. Una gestione granulare dei permessi è importante per diverse ragioni, tra cui non solo c’è la flessibilità ma anche soprattutto la sicurezza e la minimizzazione di rischi. Per quanto un approccio di tipo RBAC (Role-Based Access Control) sia sempre necessario, non è detto che sia abbastanza. Se poi utilizziamo nella nostra azienda concetti come Principle of Least Privilege (Principio del Privilegio Minimo) e un modello Zero Trust (Fiducia Zero), la questione si complica ulteriormente. Permessi granulari È vero che, di solito, la gestione della permessistica si basa sul ruolo in azienda. È anche vero però che potremmo voler gestire in maniera diversa – o complementare - questa soluzione. Vogliamo la possibilità di gestire i permessi per competenze, oppure fare in modo che utente specifico abbia un permesso che esula dal suo ruolo, assegnatogli per necessità di organico o di formazione.
  • 29. Nel Permission Manager abbiamo creato una prima parte tabellare con Filament che consente la gestione CRUD delle nostre istanze oltre a replicare e filtrare tutti i permessi disponibili in piattaforma. Nice-to-have: Grazie al comportamento reattivo di Filament, è stato piuttosto semplice settare in tempo reale il campo "Identifier", composto dallo slug del nome più il contesto di permessistica scelto. Permission Manager
  • 31. La seconda parte è invece un componente Livewire che ci permette di assegnare ogni singolo permesso ai ruoli disponibili. Nice-to-have: Tramite Livewire, basta un click per assegnare un permesso. Tramite la direttiva @cannot, inoltre, possiamo disabilitare le checkbox a seconda dei permessi di ogni ruolo. Permission Manager
  • 33. Nel Role Manager abbiamo una prima parte tabellare con Filament che consente la gestione CRUD delle nostre istanze oltre a replicare e filtrare tutti i ruoli disponibili in piattaforma. Nice-to-have: Possibilità di riordinare tramite drag- and-drop, gli elementi di una tabella. Creare Custom Actions super rapidamente. Role Manager
  • 34. Abbiamo poi un componente Livewire, ripetuto sulle ultime schede, che ci consente di indicare quale ruolo ha i permessi per assegnare o modificare gli altri ruoli. Nice-to-have: Il sistema built-in di notifiche completamente customizzabili rende molto facile dare un feedback all'utente sulle azioni compiute. Role Manager
  • 36. La schermata degli utenti invece è un po’ più standard, in quanto è una visualizzazione tabellare gestita direttamente dalla Risorsa User di Filament. Ma anch'essa nasconde una personalizzazione niente male: l'azione gestisci che ci permette di entrare nel dettaglio dei permessi assegnati a un utente. Gli utenti
  • 38. Di default, Filament si lega alle Policies standard di Laravel. Per tutto il resto, ci sono metodi come hidden(), visible() o disabled() che ci permettono di gestire tutto tramite delle closure. In definitiva ci sono bastati un trait, le Policies di Laravel e due Gates. Policies & Gates
  • 39. Per avere un codice il piu' pulito e manutenibile possibile, tutta la logica di business e' gestita in classi Service. Nice-to-have: Tanto migliore puo' diventare il nostro progetto quanto piu' alta e' la nostra proficiency su Laravel. Clean Code

Editor's Notes

  1. Dai pacchetti ufficiali alla community, mi sono innamorato di Laravel e di tutto cio' che lo compone. Jeffrey Way
  2. Melania
  3. Quindi e’ una tecnologia piuttosto giovane
  4. Per dirla alla dnd
  5. Tra cui me stesso, Michael su Open Source
  6. Melania
  7. Un esempio di role manager
  8. Pivot polimorfica
  9. Andy
  10. Francesco talamona, aulab