Skills & Tecnologie
Una panoramica delle tecnologie e degli strumenti che uso ogni giorno come sviluppatore web full-stack freelance. Le ho raggruppate per categoria per dare un'idea chiara di come gestisco un progetto a 360 gradi: dallo sviluppo frontend e backend al design, dal versioning al deploy in produzione.
Non è una lista esaustiva di tutto cio che ho toccato negli anni, ma uno snapshot reale del mio stack attuale e di cio che propongo nei progetti dei clienti.
Sviluppo
Frontend
Sul frontend lavoro principalmente con Next.js e React, scrivendo sempre in TypeScript per avere un codice solido, type-safe e mantenibile nel tempo.
Per lo styling il mio stack di default è Tailwind CSS affiancato a ShadCN/UI, che mi permette di partire da componenti accessibili e ben strutturati e personalizzarli senza vincoli di design system imposti.
Quando un'interfaccia ha bisogno di un'esperienza utente più viva uso GSAP per animazioni complesse, scroll-driven e timeline avanzate, oppure soluzioni più leggere per micro-interazioni dove servono.
Per la gestione dei form mi appoggio a React Hook Form abbinato a Zod per la validazione type-safe, sia lato client che lato server.
Backend
Lato server uso Node.js quando voglio leggerezza, controllo e una struttura su misura, mentre passo a NestJS quando il progetto richiede un'architettura più organizzata e scalabile basata su dependency injection, decoratori e moduli.
Espongo API REST o, quando ha senso, endpoint GraphQL, e mi occupo di tutta la parte di autenticazione, autorizzazione, gestione degli errori e business logic dell'applicazione.
Database & ORM
Conosco e utilizzo diverse soluzioni di database, sia SQL che NoSQL, scegliendo di volta in volta quella più adatta al progetto:
- SQL: PostgreSQL, MySQL, SQLite, Neon
- NoSQL: MongoDB
Per interagire con il database in ambiente TypeScript uso Prisma quando voglio una developer experience curata e un buon livello di astrazione, oppure Drizzle ORM quando ho bisogno di restare più vicino all'SQL e ottenere performance migliori. Su progetti basati su MongoDB lavoro con Mongoose.
Per ispezionare e gestire i dati durante lo sviluppo mi appoggio a DBeaver per i database SQL e a Drizzle Studio sui progetti che usano Drizzle.
BaaS e CMS
BaaS (Backend as a Service)
Per MVP, startup o progetti in cui serve velocizzare lo sviluppo e contenere i costi iniziali, uso Firebase o Supabase, che mi forniscono autenticazione, database, storage e real-time out-of-the-box, riducendo notevolmente il time-to-market.
CMS
Sanity è il CMS headless che padroneggio meglio e che propongo quando un cliente ha bisogno di gestire contenuti in maniera flessibile, strutturata e scalabile.
Sto inoltre approfondendo Directus e PayloadCMS per ampliare le opzioni che posso offrire in base alle esigenze specifiche del progetto, sia in termini di funzionalità sia di self-hosting.
Tecnologie misc
Per gestire l'autenticazione nelle applicazioni Next.js uso principalmente NextAuth.js (Auth.js), configurato con i provider più adatti al contesto (credentials, OAuth, magic link).
Per la parte di pagamenti integro Stripe, gestendo checkout, subscription, webhook e logica server-side.
Per l'invio di email transazionali e di marketing mi appoggio a Resend, che si integra in modo pulito con i framework moderni e permette di gestire i template direttamente in React.
Per testare e documentare le API durante lo sviluppo uso Postman.
Deploy & Hosting
A seconda delle esigenze di costo, performance e gestione, pubblico le applicazioni su:
- Vercel, la mia scelta di default per i progetti Next.js
- Netlify, per siti statici e jamstack
- Render, per servizi backend e database gestiti
- VPS classici (es. Hetzner, DigitalOcean) quando serve maggior controllo o configurazioni custom
- AWS S3 per lo storage di asset statici, media e file utente
Mi occupo di tutto il flusso, dalla configurazione del dominio al setup HTTPS, dalle variabili d'ambiente alla pipeline di deploy automatico.
Versioning
Git è il mio strumento quotidiano per il versionamento del codice: branching strategy, rebase, gestione conflitti e PR review fanno parte del mio workflow standard.
Lavoro principalmente su GitHub, ma sono perfettamente a mio agio anche con GitLab e Bitbucket quando lo richiedono le aziende con cui collaboro, sia per la gestione del codice che per le pipeline CI/CD.
Design
Uso Figma sia per la fase di progettazione UI/UX dei progetti che sviluppo da zero, sia per leggere, interpretare e implementare design forniti da clienti o designer del team, traducendoli in interfacce funzionanti senza perdere il senso del progetto originale.
AI nel workflow
L'AI è ormai parte integrante del mio flusso di lavoro quotidiano, non come sostituto delle skills tecniche ma come acceleratore.
Uso Cursor AI direttamente in editor per refactoring, generazione di boilerplate e pair-programming sui task più ripetitivi. ChatGPT lo uso per brainstorming, analisi di requisiti e supporto su problemi più articolati.
Per la fase di prototipazione veloce di interfacce mi appoggio a v0.dev, mentre per la generazione di asset visivi e moodboard uso Midjourney.
Project Management
Per la gestione di task, collaborazioni e comunicazione con team e clienti uso:
- Trello per la pianificazione e il tracking delle attività
- Slack e Discord per la comunicazione asincrona con team e community
- Google Workspace (Docs, Sheets, Meet) per documenti condivisi, fogli di lavoro e meeting
Sono abituato a inserirmi in workflow già esistenti dei clienti senza creare attriti, ma se serve posso proporre e impostare io il flusso più adatto al progetto.