Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crudit

 Crudit

Crudit is a Node.js library, that can create a feature-rich custom backend in a few lines of code.

It can be integrated in every Node.js project, and works best with Fullstack Javascript framework such as Next.js.

Avatar for Daniele Ciulli

Daniele Ciulli

April 07, 2023

Other Decks in Technology

Transcript

  1. 2 Partiamo dalle Presentazioni! • Daniele Ciulli, Sviluppatore Frontend Shopify

    • 25 anni, di cui quasi due in Sintra! • Sono arrivato qui dal corso ITS Byte19, e voglio sempre più ampliare le mie conoscenze in ambito sviluppo!
  2. 5 Conoscere tutti questi strumenti richiede un sacco di esperienza,

    tempo e lavoro. Senza un team, diventa complesso gestire questa macchina. Sei sicuro che tutti i progetti richiedano questa complessità?
  3. 6 Partiamo da una cosa semplice Anche per fare una

    cosa molto semplice, sono necessarie due persone con competenze diverse!
  4. CRUDIT! Per chi il backend non lo vuole, ma gli

    serve Crudit permette, in poche righe di codice Javascript, di ottenere un Backend semplice e performante. 8
  5. Crud Leggere, scrivere, modificare e creare dati specifici per singolo

    utente 9 HOOK Eseguire funzioni in risposta a eventi sul database Mutazioni Modifiche massive di database o collezioni Validazioni Validazione server-side del dato su specifici database, collezioni o entrambi
  6. 10 Supporta la multitenancy per creare applicazioni SaaS (esempio: un

    database documentale per ogni utente). Supporta il protocollo REST Create Read Update Delete API REST per interagire con un database Crudit
  7. 11 Si possono registrare delle funzioni che vengono eseguite in

    base al verificarsi di determinati eventi (insert/update,etc.). Si può anche modificare la visibilità dei dati per utenti, aggiungendo validazioni, modificando le risposte in base a parametri sull’utente Hooks Implementazione logica di business senza scrivere endpoint { “id”: “pippo” “nome”: “pluto” } { “id”: “pippo”, “nome”: “pluto”, “updatedOn”: “29/03/2023”, “updatedBy”: “Daniele” } crudit.hook( 'metadata', //nome events.beforeSave, //quando partire null,null, //limitazioni su database e/o collezioni async (database,db,collection,data,user,config) => { //funzione che modifica il dato data.updatedOn=new Date(); data.updatedBy=user.name; } ); Dato dal FE Dato inserito nel DB Hook prima del salvataggio
  8. 12 Possono essere aggiunti anche specifici database e collezioni, oppure

    Regex per filtrare l’azione della mutazione La mutazione poi può essere scatenata, applicandola su specifici database, collezioni, corrispondenze con Regex o sull’intero progetto. Mutazioni Modifiche massive della struttura dati
  9. 13 La validazione usa il formato di Validator.js per specificare

    la struttura dei dati, e questo formato viene imposto sui database e collezioni specificati nella definizione. Validazione Validate i dati al backend nel loro formato. crudit.configEntity('validateRecepies', { db: '', collection: 'recipes', validation: { title: 'required', harvesting_time: 'required', ….. }});
  10. E LA DEVOPS? NON CI SERVE NEMMENO QUELLA! Crudit permette

    hostabile direttamente su qualunque ambiente Node.js (Vercel, Azure functions, Aws Lamda, Cloud functions, ecc…) senza bisogno di effort sistemistico (NoOPs). 14 Magia… e alcuni provider hanno free tier interessanti!
  11. 15 Si ok, ma funziona? Ecco una demo che sfrutta

    varie funzionalità di Crudit! I miei genitori hanno preso un orto. Non avendo esperienza hanno bisogno di un diario dove annotare tempistiche, note, appunti, ricette, ecc… riguardo alla coltivazione, pianta per pianta Crudit mi hanno permesso di ottenere un backend funzionante in pochissime ore, mantenendo multitenancy e le performance necessarie.
  12. 16 A chi conviene usare Crudit? • Progetti basati sui

    recenti framework Javascript Fullstack (es: Next, Nuxt, Remix, Svelvekit, ecc…) e deve implementare un collegamento col database. • Progetti Node.js con MongoDB o similari • Chi non necessita e non vuole mantenere infrastrutture complesse, e programma soprattutto in Javascript • Per progetti amatoriali/esplorativi, azzerando i costi sfruttando i free tier.
  13. 17 A chi non è rivolto? • Progetti molto incentrati

    sui file multimediali in quando (per ora) Crudit supporta solo documenti. • Necessità di interfacce grafiche per la gestione del backend. • Business Logic Complesse. • Progetti che richiedono logica 3Tier (separazione tra logica di Business e Dati) • Gestione dati fortemente relazionati perchè Crudit supporta solo database documentali
  14. 18 Cosa ci piacerebbe aggiungere? • Importazione delle configurazioni, tramite

    file YAML oppure JSON. • Supporto al salvataggio di assets multimediali senza dover creare una request specifica. • Stelle su GITHUB https://github.com/zeppaman/crudit • ….. Proposte e PR sono aperte!