Quali framework usare?

In questo breve articolo vorrei esprimere la mia idea ed esperienza su che tipo di framework scegliere per progetti diversi tra di loro.

Partiamo col presupposto che nessun framework o linguaggio di programmazione è l'unico adatto per una specifica applicazione, ma lo si sceglie soprattutto per le conoscenze che uno ha, ad esempio, per sviluppare un BACKEND potremmo scegliere JAVA, come molti miei colleghi, oppure NodeJS con Javascript.

Ogni framework e linguaggio di programmazione ha i suoi pro e contro ma in questo articolo vorrei darvi un idea come e su che progetti uso i diversi frameworks.

WEB o APP

Innanzitutto inizio con il suddividere lo sviluppo in due macro categorie, ovvero web app, siti web (blog ecc...) e applicazioni mobile (iOS, Android).

WEB / Ecommerce

Se si è agli inizi (e solo agli inizi ) potremmo optare per un CMS, come wordpress che molti conoscono. Purtroppo cerco di scartarlo sempre io solo perchè avendo competenze di programmazione, mi diverto molto di più a creare qualcosa da zero e dove so di poter mettere le mani.

Per cui negli ultimi anni sto utilizzando molto NextJS, molto pratico veloce, che si può deployare su Vercel o Netfly. Certo creare sempre tutto da 0 non è il massimo ma ti da l'opportunità di avere mano al codice a 360°, e comunque con i vari system design di oggi, o AI che converte il design (esempio da figma) a codice, partire non è così lento.

Anche riprodurre una sorta di Wordpress ad oggi ci sono molte soluzione come Storyblok, Prismic o banalmente Notion, in cui è possibile creare modelli (Pagine, articoli ecc...) e riportarli su NextJS tramite le API o SDK.

L'ecommerce l'ho inserito nella parte web in quanto la maggior parte di volte lo si naviga da web senza installare applicazioni se non per i grandi marchi. In questo caso ci sono varie soluzioni ad oggi, Shopify, quello più conosciuto, sia utilizzandolo con i Temi 2.0 o la versione Headless: Hydrogen.

Per l'headless ci sono molte soluzioni che si possono integrare anche direttamente a NextJs, come Commerce Layer, CommerceJS, che ti danno una gestione gratuita amministrativa (trattenendosi ovviamente le varie commissioni sugli acquisti e limiti vari) ma per piccoli store potrebbe essere un buon inizio.

SCELTA
NextJS 13 + Tailwind + CommerceJS (per ecommerce) Shopify / Hydrogen: Per soluzione concentrare su ecommerce

App

Per lo sviluppo di applicazioni mobile bisogna partire da alcuni presupposti, quanto tempo hai a disposizione, quanti sviluppatori a disposizione e quanta pazienza. Per la mia prima startup ho creato applicazioni su con SWIFT (iOS) e KOTLIN (android), ma ad oggi, come freelance, scarterei assolutamente questa soluzione, in quanto si devono gestire 2 codebase.

Ben venga però se c'è un bel team in cui si può gestire il nativo separatamente in quanto si può sfruttare la totale potenza.

In alcuni casi ho utilizzato invece IONIC/CAPACITOR, attualmente con la possibilità di creare una BUILD anche per il web oltre che per iOS e Android, per cui con una singola codebase (Angular, React o Vue) si può pubblicare la propria app su ben 3 dispositivi. Questo immaginerete che vi facilizzerà molto la vita.

SCELTA
Ionic Angular o React

BACKEND

Per la gestione dei dati invece vi indico qui sotto alcune soluzioni che ho utilizzato:
Firebase -> Ormai conosciuto per l'utilizzo di noSQL
Strapi -> Framework basato su NodeJS (Javascript) con una gestione amministrativa e la possibilità di installare plugin

SCELTA
Strapi: Per progetti medio/grandi Firebase: Piccoli progetti.