Vai al contenuto

Andrea Bagnardi

Costruisco backend che reggono oltre centomila persone al giorno

Più di dieci anni di sviluppo professionale, oggi orientato a backend, dati e infrastruttura.

01 / Competenze

Aree di competenza

Backend e API su larga scala

Progetto e mantengo backend che reggono traffico reale.

Ho disegnato da zero l'architettura Django e le API di un'applicazione consumer con oltre 100.000 utenti attivi al giorno e picchi di decine di migliaia di sessioni simultanee, e l'ho portata avanti per anni con aggiornamenti profondi dello stack senza interruzioni di servizio.

  • Python
  • Django
  • REST
  • PostgreSQL

Infrastruttura e delivery

Gestisco l’infrastruttura e il percorso che porta il codice in produzione.

Responsabilità diretta su server e ambienti da tutta la carriera, containerizzazione con Docker e Docker Compose, pipeline CI/CD costruite per fare da controllo qualità sulle pull request del team. Backup e ripristino del database di produzione. In preparazione la certificazione AWS Solutions Architect Associate.

  • Docker
  • GitHub Actions
  • Linux
  • Google Cloud

Full stack e prodotto

So portare una funzionalità dal database allo schermo.

Ho sviluppato un portale web gestionale in Ionic e costruito da zero un CRM appoggiato a un backend già in produzione, lavorando su interfacce usate quotidianamente da operatori professionali. Ho pubblicato applicazioni su App Store e Play Store.

  • Angular
  • Ionic
  • TypeScript
  • Tailwind

Dati e business intelligence

Prendo dati sparsi in gestionali diversi e li rendo interrogabili.

Pipeline ETL in Python e Pandas, data warehouse a schema a stella con storicizzazione SCD2, dashboard interattiva per l’analisi. Codice pubblico e demo online.

  • Pandas
  • ETL
  • Data warehouse
  • Streamlit

Revisione del codice e mentoring di sviluppatori junior, stime e pianificazione tecnica, interlocuzione con fornitori esterni.

02 / Progetti

Progetti

Prodotto in soft launch

GuitarPath

Problema
Imparare chitarra da autodidatta significa esercitarsi senza sapere se lo si sta facendo bene, e i corsi online propongono lo stesso percorso a tutti.
Soluzione
Esercizi personalizzati su caratteristiche e progressi di chi suona, analisi dell’esecuzione con valutazione e consigli, tablature interattive.
Decisioni tecniche
  • Due modelli distinti con ruoli separati: uno genera i percorsi e le tablature, l’altro analizza l’audio.
  • Elaborazione audio nel browser, senza passare dal server.
  • Suite di test estesa.

Realizzato interamente con Claude Code. Il codice è generato dall’agente, l’architettura, i vincoli e il controllo qualità sono miei: TypeScript in modalità strict, 440 test automatici, revisione di ogni pull request.

Home di GuitarPath: il titolo Suona quello che ami, la descrizione del coach e il pulsante per iniziare.
lingue
6
test
440
in produzione
Live

Tecnologie

  • Next.js
  • TypeScript
  • Prisma
  • PostgreSQL
  • Clerk
  • Tailwind
  • alphaTab
  • Tone.js
  • Vitest
  • Vercel

Codice pubblico, backend e frontend

client-requests

Problema
Le richieste dei clienti arrivano come testo libero: qualcuno le legge una per una, decide di cosa parlano e a chi passarle.
Soluzione
Un modello propone categoria, priorità e un riassunto, e chi gestisce la richiesta conferma o corregge. La demo gira su un piano gratuito che si spegne quando nessuno la usa: la prima richiesta dopo un periodo di silenzio aspetta il risveglio del server.
Decisioni tecniche
  • Il classificatore è un’interfaccia con due implementazioni registrate per nome: una euristica che gira offline, una che chiama un modello. Si sceglie da variabile d’ambiente, e la suite di test non ha bisogno di una chiave.
  • Il limite di frequenza sull’endpoint a pagamento sta nel database, non in memoria, quindi regge anche con più istanze. Limita il ritmo, non la spesa totale: quella la ferma il tetto sull’account del fornitore.
Richieste dei clienti: il modulo per una nuova richiesta e l’elenco, con categoria, priorità e riassunto proposti dal modello.
test automatici
263

Tecnologie

  • FastAPI
  • SQLAlchemy
  • Alembic
  • PostgreSQL
  • React
  • TanStack Query
  • Zod
  • pytest
  • Vitest
  • Docker

Progetto di business intelligence con codice pubblico

Sistema di business intelligence

Problema
Nel settore della formazione i dati operativi restano sparsi tra gestionali diversi e non diventano mai informazione utile per decidere.
Soluzione
Raccoglie i dati dai gestionali, li normalizza e li storicizza, poi li espone in una dashboard.
Decisioni tecniche
  • Schema a stella invece che normalizzato: le interrogazioni analitiche attraversano meno join e la dashboard resta reattiva.
  • Storicizzazione SCD2 sulle dimensioni: un’analisi sul passato non viene riscritta dai dati di oggi.
Dashboard di analisi: filtri per periodo, zona e categoria, indicatori chiave e andamento delle richieste nel tempo.
settimane dallo zero alla demo online
9

Tecnologie

  • Python
  • Pandas
  • NumPy
  • SQLite
  • Streamlit
  • Faker

03 / Stack

Stack

Backend

  • Python
  • Django
  • Django REST Framework
  • REST
  • Celery
  • gunicorn
  • PostgreSQL
  • Redis
  • Firebase
  • Notifiche push
  • pytest

Frontend

  • Angular
  • Ionic
  • Capacitor
  • Cordova
  • TypeScript
  • RxJS
  • Tailwind

Dati

  • SQL
  • Firebase Analytics
  • Google Analytics
  • Looker Studio
  • Celery Beat
  • Pandas
  • ETL
  • Data warehouse
  • Streamlit

Infrastruttura

  • Docker
  • Docker Compose
  • GitHub Actions
  • Linux
  • nginx
  • Google Cloud
  • Sentry
  • Play Console
  • App Store Connect

04 / Metodo

Metodo di lavoro

  1. Specifica

    La specifica la scrivo prima di far generare una riga di codice. Quando qualcosa va storto, quasi sempre è la specifica a essere ambigua.

  2. Vincoli

    Le regole del progetto stanno in un file che l’agente legge sempre, dalle convenzioni di naming ai pattern architetturali.

  3. Generazione

    L’agente scrive il codice, io leggo ogni diff.

  4. Verifica

    I test automatici sono la rete di sicurezza sul codice che non ho battuto a mano, e la CI blocca tutto ciò che non passa.

Se la verifica fallisce, il problema è nella specifica.

05 / Profili

Dove trovarmi