Questo sito usa cookie tecnici, necessari al suo funzionamento, e con il tuo consenso i cookie statistici di Google Analytics. Prima della tua scelta non viene scritto niente sul tuo dispositivo.
Alberta Scardapane, SEO Specialist e sviluppatrice full-stack
Ti do il benvenuto in AlbertaOS, il mio portfolio. Sviluppo software con cui le aziende lavorano tutti i giorni, e curo la visibilità dei siti web sui motori di ricerca.
Lavoro da Lanciano, in Abruzzo: da remoto su tutta Italia, in sede o ibrido tra Abruzzo, Marche e Molise.
Quattro progetti in produzione
Ognuno ha la sua app, e si apre dalla sua icona. In ognuna c'è qualcosa da provare: prenoti un ombrellone, fai avanzare una richiesta di iscrizione, scansioni un codice QR.
Le app di questo portfolio sono rivisitazioni, sviluppate qui in poche righe di codice, per far capire in dieci secondi di cosa si occupa ogni software. Nell'app Foto è invece disponibile una raccolta di screenshot reali dei miei progetti.
Il portfolio è scritto in HTML, CSS e JavaScript, senza framework e senza librerie.
Gestionale per stabilimenti balneari. Prima i due lidi che lo usano lavoravano con carta e penna, e un registro cartaceo si porta dietro sempre gli stessi problemi: la stessa postazione venduta due volte, la promessa al telefono che nessuno ricorda, l'incasso che a fine giornata non torna. Oggi quella postazione compare su una mappa che tutti vedono aggiornata nello stesso momento.
L'intero ecosistema è mio, sviluppato da ottobre 2024 e lanciato a maggio 2026: sei componenti che comunicano tra loro, compreso il CRM con cui seguo le installazioni e il sito del prodotto, lidomatic.it.
rivisitazione · clicca gli ombrelloni per prenotare o liberare
Le prenotazioni entrano da due strade e convergono sulla stessa mappa. La prima è la cassa, sul gestionale desktop per Windows e macOS, dove l'operatore assegna la postazione al cliente che si presenta o che telefona. La seconda è il sito del lido: con il plugin WordPress e WooCommerce che ho sviluppato, il cliente prenota da casa e la postazione risulta occupata in cassa senza alcun passaggio manuale.
In spiaggia lo staff ha un tablet con il viewer, pensato per la consultazione: chi gira tra gli ombrelloni vede la mappa aggiornata senza tornare in cassa, in rete locale o anche da fuori attraverso un tunnel cifrato.
Quando qualcosa si rompe
Se salta la linea il lido continua a lavorare, perché il database risiede sul computer della cassa e non su un server remoto. Se invece il problema è il software, lo vedo io: dal CRM che ho sviluppato controllo le licenze e lo stato di ogni installazione, compresa la diagnostica da remoto. Di solito me ne accorgo prima che mi chiamino. Gli aggiornamenti si installano da soli, e non tutti ricevono gli stessi: i canali di rilascio sono più di uno, in base alla formula scelta dal cliente.
Cosa c'è nel gestionale
Listini giornalieri, settimanali, mensili e stagionali, differenziati per tipo di postazione: ombrellone, palma e gazebo hanno prezzi e regole diverse. Prenotazioni singole e di gruppo, cabine, ticket e voucher, pagamenti e saldi. Più utenti con ruoli e PIN, perché in cassa non c'è sempre la stessa persona. Statistiche con mappa di calore delle postazioni più richieste, export in PDF, stampa della mappa, guida utente dentro l'app e documenti legali già inclusi.
Lidomatic è in continua evoluzione e per la stagione 2027 usciranno nuove importanti funzionalità.
CRM FAMA in produzione · v96
CRM per un polo di orientamento universitario. Prima i dati di una stessa persona vivevano in sistemi diversi che non si parlavano, quindi nessuno aveva il quadro completo di una pratica. Il CRM li tiene in un posto solo, dal modulo compilato sul sito fino all'immatricolazione confermata dall'ente, e tiene insieme più enti formativi con cataloghi e regole diverse.
rivisitazione · clicca una scheda per farla avanzare nella pipeline
Da sette strade: il modulo di contatto del sito, il calcolatore delle rate, i test di orientamento, l'inserimento a mano, un bot Telegram, una conversazione social trasformata in richiesta, e le automazioni. Tutte e sette passano dallo stesso controllo duplicati, perché il doppione si crea sempre all'ingresso e correggerlo dopo costa dieci volte tanto.
Il controllo distingue due livelli. Codice fiscale, email e telefono dicono che è la stessa persona. Il nome invece avvisa e non blocca: gli omonimi esistono, e la stessa persona che si informa due volte a mesi di distanza su corsi diversi non è un errore da correggere.
Riconoscere che due cose sono la stessa cosa
Il pezzo più difficile di questo progetto non è il CRM, è capire quando due record sono la stessa cosa. La stessa persona arriva dal sito con un indirizzo email e dal portale dell'ente con un altro. Lo stesso corso cambia codice ogni anno accademico. La stessa pratica ha identificativi diversi a seconda di dove la si guarda. Buona parte delle release di questi mesi è esattamente quel lavoro: un caso reale alla volta, decidere quando due cose vanno unite e quando invece è giusto che restino separate.
L'estensione per il browser
Gli enti che erogano i corsi hanno ciascuno il proprio portale, e nessuno di questi offre un modo automatico per sapere com'è andata una pratica: l'unico modo è aprire la scheda e guardarla. Ho sviluppato un'estensione per Chrome che raccoglie quel dato mentre si visualizza la scheda nel portale, così che i dati arrivino nel CRM senza che nessuno li debba inserire manualmente.
La sincronizzazione automatica è volutamente limitata: aggiorna solo quello che esiste già e non crea mai niente. Aprire una scheda per curiosità non deve produrre record nuovi.
Quando una pratica si ferma
Il sistema se ne accorge da solo e avvisa chi la segue, poi allarga l'avviso a chi ha la responsabilità. Le soglie si configurano dal pannello, tranne quella dell'ultimo gradino: chi lavora una pratica non deve poter allungare da solo il tempo prima che se ne accorga qualcun altro. Il cronometro non riparte dalla creazione, ma dall'ultimo segno di vita registrato nel sistema.
Come lavoro su questo progetto
Ogni intervento nasce da un caso reale segnalato dal cliente. Prima di scriverlo lo misuro sui dati veri, e lo rilascio solo se non peggiora quello che già funziona.
Il primo esempio riguarda il misurare. Ogni anno gli enti ripubblicano gli stessi corsi con un codice nuovo, quindi il sistema deve capire da solo che il corso appena caricato è la nuova edizione di uno che c'è già. Ho scritto la funzione che li accoppia, confrontando nome, ente e tipo di corso, e prima di collegarla a qualcosa l'ho fatta girare sul catalogo vero: su sette coppie proposte, quattro erano sbagliate. Il sistema accoppiava corsi che si somigliavano nel nome ma era una regola fin troppo fragile. Ho quindi aggiunto tre controlli e alla prova successiva le coppie proposte erano tutte giuste.
Il secondo riguarda il non peggiorare. Un'altra segnalazione mi aveva portato a una regola sbagliata, e per correggerla bastava una riga. Quella riga però avrebbe creato un problema più grande di quello che risolveva: il sistema avrebbe perso il collegamento con le pratiche già archiviate e le avrebbe registrate una seconda volta. Ho corretto la regola solo dopo aver aggiunto la protezione che mantiene quel collegamento.
Cosa c'è sotto
Cinque ruoli e ventidue permessi che si accendono uno per uno, con l'override sul singolo utente che vince sempre sul ruolo. Un motore di automazioni configurabile dal pannello, ventitré eventi, con la prova a vuoto che mostra destinatari e testo senza mandare niente. Le automazioni che devono scattare una volta sola sono protette da un blocco atomico, non da un controllo che può arrivare tardi. Posta e documenti passano da Microsoft Graph, la chat da Messenger e Instagram Direct. Il calcolo delle provvigioni segue le regole configurate dal cliente, con una guardia che impedisce il doppio pagamento.
In produzione, con oltre 90 release documentate da aprile 2026. Non è consegnato e chiuso: è in manutenzione e sviluppo continui.
Inventario per un'azienda di abbigliamento. Polidoro Group non voleva più sbagliare le giacenze, e voleva vedere a colpo d'occhio cosa era disponibile e cosa andava riordinato. Da qui la richiesta: un sistema veloce, sempre a disposizione in magazzino e semplice da usare, che tenesse traccia delle operazioni. Il tracciamento c'era fin dalla prima richiesta, ed è il dettaglio che dice qual era il problema vero: serviva sapere chi aveva mosso cosa, e quando.
Ho tenuto solo quello che serviva e ho lasciato fuori tutto il resto. Niente prezzi e niente foto degli articoli, perché è un magazzino di giacenze e non di vendita. Niente cloud, perché il magazzino è un capannone con una rete locale. Nessun hardware da comprare: gli operatori usano i telefoni che hanno già in tasca, e la stampante laser c'era già. Ogni cosa lasciata fuori è una cosa in meno da configurare e da spiegare a chi lavora in magazzino.
rivisitazione · scansiona l'etichetta per movimentare la giacenza
Quando arriva la merce l'articolo si crea da desktop: marchio, codice originale, modello, colore, taglia, giacenza iniziale, soglia minima e posizione a scaffale. Il codice interno invece non si scrive, lo genera il sistema mettendo insieme codice originale, colore e taglia, e viene fuori CD0881-GIBL-3XL. Un magazziniere che digita a mano una stringa così prima o poi sbaglia, quindi non deve digitarla nessuno.
Le etichette si accumulano in una coda di stampa che vive nel database, non nella sessione del browser: chiudendo l'app la coda resta, e non si svuota da sola dopo il download, così se un foglio esce storto si ristampa senza rifare il lavoro. Il PDF viene generato con 24 etichette per foglio A4, da 70 per 37 millimetri. Ogni etichetta ha il suo QR, quattro righe di testo e una banda colorata che replica il colore del capo, per riconoscerlo senza leggere.
Il QR non contiene il codice interno, ma un indirizzo con un identificativo stabile dell'articolo. Se domani quel codice cambia, le etichette già stampate e attaccate continuano a funzionare.
Poi l'operatore apre la fotocamera del telefono, inquadra il QR, tocca il banner che compare e si ritrova sulla scheda dell'articolo: più uno, meno uno, oppure una quantità con una nota. Cinque o sei secondi in tutto.
Lo scanner che ho tolto
Uno scanner QR dentro l'app l'avevo sviluppato, e poi l'ho rimosso. Per usare la fotocamera dentro il browser serve HTTPS, e su una rete locale questo significa certificati da installare a mano sul telefono di ogni operatore, oppure un dominio dedicato, oppure mettere le mani nel DNS del cliente. Ho valutato tutte e tre le strade e le ho scartate: troppo lavoro di partenza per una funzione che per giunta era più lenta, dieci o quindici secondi contro cinque. La fotocamera del telefono non ha niente da configurare. Il codice dello scanner e i suoi test li ho cancellati, non lasciati lì spenti.
Quando due operatori toccano lo stesso articolo
Ogni movimento è un delta, mai un valore assoluto: nessuno scrive che adesso ce ne sono nove, si scrive meno uno. Due operatori che scaricano un pezzo a testa producono due movimenti distinti, tutti e due nel registro, con chi, quando, da quale dispositivo, e la giacenza risultante fotografata in quel momento. Ogni movimento è anche una transazione sola: o si aggiornano insieme la giacenza e il registro, o non si muove niente. La giacenza non può scendere sotto zero, e uno scarico più grande della giacenza viene rifiutato con un messaggio in italiano invece che con un numero negativo.
Il database è in modalità WAL, quindi chi legge non blocca chi scrive: mentre un operatore registra un movimento, la dashboard del titolare e gli altri telefoni continuano a leggere. L'evento in tempo reale parte dopo che la scrittura è confermata, così nessun dispositivo vede comparire un movimento che poi non esiste.
Dove gira e chi lo usa
Due ruoli. Il titolare lavora dal PC dell'ufficio, che è anche il server: apre l'app con un doppio click e vede una finestra senza barra degli indirizzi, quindi non incontra mai un indirizzo tecnico. Da lì fa tutto, articoli, colori, stampa delle etichette, utenti, dashboard. Gli operatori entrano solo dal telefono con nome utente e PIN numerico, sessione da trenta giorni, e possono fare una cosa sola: aprire la scheda di un articolo e cambiarne la giacenza.
Tutto resta sulla rete aziendale: niente esposizione su internet, niente VPN, niente cloud. Il sistema risponde quando il PC dell'ufficio è acceso, cioè negli orari in cui in azienda si lavora, ed è una scelta dichiarata al cliente prima di partire, non un limite scoperto dopo. L'installazione su quel PC richiede tre o quattro minuti da una chiavetta, con uno script ripetibile, e ogni sera alle 19:00 parte un backup automatico che tiene trenta giorni di copie.
Primo commit il 29 aprile 2026, in produzione l'8 giugno. Da allora non è rimasto fermo: è arrivata la correzione in blocco di un codice originale sbagliato, con la rigenerazione a cascata dei codici interni, e le ottimizzazioni sugli aggiornamenti in tempo reale.
502test automatici
<1ssync tra dispositivi
24etichette per foglio A4
python 3.11fastapihtmxsqlitereportlabpwa
polodidatticofama.it SEO & sviluppo
Sito, contenuti e strategia SEO per un polo di orientamento universitario. Il primo intervento, il 27 gennaio 2026, è stato installare GA4 e inviare la sitemap a Search Console lo stesso giorno: prima si mette il metro, poi si lavora. Tutto quello che viene dopo è misurato da lì.
Il Polo Fama mi ha chiesto di ristrutturare completamente il loro sito web. Ho iniziato il censimento delle pagine per sapere cosa c'era già, le ho ordinate in dieci cluster tematici, e da febbraio ad agosto 2026 ho pubblicato diciannove articoli nuovi. Ho scelto di scrivere gli articoli in HTML, così che sia io stessa a decidere come inserire i dati strutturati invece che lasciarli generare al costruttore di pagine. Nel frattempo il sito ha smesso di essere soltanto delle pagine web da leggere, ma è diventato un ecosistema interattivo, dove è possibile trovare svariati test di orientamento, un simulatore delle rette universitarie, un collegamento diretto al CRM FAMA per chi compila un modulo o si iscrive alla newsletter e tantissimi altri strumenti utili che potete visionare all'indirizzo polodidatticofama.it.
dati reali da Search Console, ricerca web · stesso mese, un anno di distanza
Il confronto qui sopra mette luglio 2025 contro luglio 2026, e l'ho scelto perché è quello che mi conviene meno. Luglio 2025 era stato il mese migliore di quell'anno, quindi il paragone parte dal punto più alto e la crescita che ne esce è quattro volte più alta. Se avessi scelto aprile, che nel 2025 era andato male, la stessa identica crescita sarebbe sembrata otto volte superiore. Stesso lavoro, numero doppio, cambiando solo il mese di partenza: è il motivo per cui un moltiplicatore da solo non vuol dire niente se non si sa da dove parte.
Poi due cose che nei casi studio di solito non si scrivono. La prima: il sito oggi compare molto più in alto, la posizione media è passata da 13,4 a 6,8, cioè dalla seconda pagina dei risultati alla prima. Nello stesso periodo, però, la quota di chi clicca quando lo vede è scesa, da 1,63% a 1,42%.
Le cause plausibili sono almeno tre, e con i dati a disposizione non si separano. La pagina dei risultati è più affollata di un anno fa: sopra i link organici possono esserci annunci sponsorizzati e riquadri generati dall'AI, e in entrambi i casi chi cerca trova una risposta prima di arrivare al sito. C'è poi un effetto di composizione, perché crescendo il sito è comparso su molte più ricerche informative, dove si legge e non si clicca. E c'è un artefatto di misura: una posizione media che migliora può nascondere una coda di comparse in nona e decima posizione, dove il click è vicino allo zero per natura. Chi dice di sapere quale delle tre pesi di più tira a indovinare. Quello che si può fare è dichiararlo e continuare a misurare.
La seconda: una parte della crescita è calendario e non merito. Il mese più grosso dell'anno è marzo, e marzo cade dentro la finestra in cui i docenti presentano le domande per le graduatorie. Quella domanda sarebbe esistita comunque, con me o senza di me.
Quello che il calendario non spiega, però, è tutto il resto dell'anno. Le pagine del sito si dividono in due gruppi: quelle che vivono di scadenze, come bandi, graduatorie e abilitazioni, e quelle che non ne hanno, come quanto costa una laurea o quale corso scegliere. Se la crescita fosse stata solo stagione, sarebbe cresciuto soprattutto il primo gruppo. È successo il contrario: le pagine senza scadenza sono cresciute di 5,1 volte, quelle con la scadenza di 4,8.
Due articoli, due meccaniche diverse
Il 24 febbraio 2026, un giorno dopo l'apertura delle domande GPS, ho pubblicato una guida sulle certificazioni informatiche che danno punteggio. In cinque giorni: 29.823 impression, 976 click, posizione media 5,8. Il merito qui non è il volume, che la scadenza avrebbe portato comunque a qualcuno. È che quel giorno la pagina era già online.
Il 24 luglio 2026 ho pubblicato un articolo sulla riforma della professione di biologo, ed è successo qualcosa di diverso. Quell'articolo è entrato in Google Discover, dove nessuno sta cercando niente e il contenuto viene proposto mentre si scorre: 1.997 click in quattro giorni, con un click-through rate dell'8,9%, sei volte quello della ricerca. È successo una volta sola in sedici mesi di dati, quindi non lo chiamo un canale presidiato. La parte interessante viene dopo: in ricerca quell'articolo, invece di spegnersi, ha continuato a guadagnare posizioni per tre settimane. Il primo pezzo intercetta una scadenza, il secondo costruisce una posizione.
Come decido cosa scrivere
Non da una lista di titoli, da un calendario di pubblici. Ogni mese ne ha uno: chi cerca quanto costa prima di iscriversi, chi deve abilitarsi all'insegnamento, chi lavora e torna a studiare a quarant'anni. I dieci cluster servono a questo, e il censimento delle 340 pagine serve a sapere cosa c'è già prima di aggiungere qualcosa.
C'è anche una regola sulle fonti, ed è la parte del lavoro che si vede meno. Il 3 agosto 2026 ho passato una giornata a verificare i dati che stavano per finire negli articoli, e ne ho buttati quattro: dati occupazionali di un consorzio a cui nessuno dei tre atenei aderisce, una ricerca americana del 2009 citata come attuale, un regolamento che non esiste, un percorso attribuito all'ateneo sbagliato. Non se ne sarebbe accorto nessuno. È il motivo per cui i numeri degli articoli hanno tutti una data accanto.
Lo strumento con cui seguo il piano
Il piano non vive in un foglio di calcolo. Ho sviluppato Marketing Hub, un'applicazione in Flask con database SQLite: ogni articolo attraversa sette stadi, da idea a monitoraggio, e accanto a ciascuno ci sono i suoi dati di rendimento, letti da Search Console e GA4. Nelle interfacce native quelle due cose vivono in prodotti diversi e non si incrociano. Qui il rendimento di una query e lo stato di lavorazione dell'articolo che la insegue compaiono nella stessa schermata.
A un certo punto il lavoro SEO su più clienti non ci sta più in un foglio di calcolo. La strada normale, arrivati lì, è pagare l'abbonamento a una piattaforma che decide lei come devi lavorare. Ho preferito capire cosa mi serviva davvero e svilupparlo.
Marketing Hub è l'archivio operativo del mio lavoro: per ogni cliente, nello stesso posto, il piano editoriale, l'inventario delle pagine del sito, le keyword monitorate, i competitor e i dati veri letti da Search Console e GA4. Non è un prodotto e non è in vendita. Gira sul mio computer, non ha login e non ha utenti, perché l'utente sono io.
Cosa possono toccare gli agenti
Questo archivio non lo riempio soltanto io: gli agenti con cui lavoro ci scrivono dentro. Salvano un articolo, aggiornano le keyword, registrano un'analisi. La parte difficile non è stata farli scrivere, è stato decidere cosa non gli è permesso toccare. Prova a chiedere.
in attesaScegli una richiesta qui sopra.
Cosa si riempie da solo e cosa scrivo io
Si riempiono da soli i numeri: sessioni e pagine viste da GA4, impression, click e posizione da Search Console, e i titoli e le descrizioni reali delle pagine, letti direttamente dal sito. Scrivo io tutto il resto, cioè tutto quello che richiede un giudizio: perché un articolo va scritto, a chi parla, a che punto è, cosa ho imparato quando è andato storto.
Anche la cronologia di ogni articolo è scritta a mano, evento per evento: centotrentacinque voci, una alla volta. Nessuna app sa registrare da sola il motivo per cui una cosa è successa.
Come è fatto
Flask e SQLite dietro, davanti un'interfaccia a pagina singola in JavaScript senza framework e senza compilazione: si modifica un file e si ricarica. Il database è in modalità WAL, e non è un dettaglio tecnico buttato lì: serve perché un agente possa leggerlo mentre l'app è aperta, senza che nessuno dei due debba aspettare l'altro. È la prima riga dello schema, quindi la convivenza con gli agenti è una decisione presa all'inizio e non un ripensamento.
Da un cliente a tutti i clienti
All'inizio l'avevo pensata per seguire un cliente solo. Quando ho iniziato a seguirne altri l'ho generalizzata: il dominio e i segnali di marca non vivono più dentro la logica di analisi, si passano dall'esterno cliente per cliente. È il lavoro che si vede meno e serve di più, perché è quello che separa uno strumento che funziona una volta da uno che si riusa.
19.700righe di codice
61indirizzi interni
20schermate
pythonflasksqlite (wal)javascript senza frameworksearch console apiga4 api
Foto
In questa galleria ci sono le schermate dei software e dei siti web che ho sviluppato e a cui ho contribuito.
clicca una miniatura per visualizzare l'immagine con la scheda tecnica di riferimento
Changelog · carriera
La mia storia nel formato che conosco meglio: release notes.
v2026.7non ancora rilasciata
PLANNED · il prossimo rilascio: un ruolo in azienda o un incarico, tra SEO, sviluppo e formazione. Conta il progetto a cui portare tutto questo, non la forma del contratto.
v2026.6
CRM FAMA: rilasci continui, oltre 90 versioni documentate da aprile
Questo portfolio, senza framework né librerie
v2026.5
Lidomatic lanciato e venduto ai primi clienti: 2 stabilimenti in produzione
Nasce Lidomatic: studio e sviluppo dell'intero ecosistema, dall'app alla prenotazione online, dal CRM delle licenze all'assistenza
v2025.02022-2025 · le fondamenta
Laurea in Informatica per le Aziende Digitali (L-31) all'Università Telematica Pegaso, 107/110: tesi sulla comunicazione della responsabilità sociale d'impresa sul web, caso aziendale De Cecco
4 certificazioni MIUR con UniD Formazione: SEO Manager/Specialist, SEO Copywriter, Inbound Marketing, AI per il Digital Marketing
Formazione insegno · ragazzi e adulti
Insegno cinque materie, e sono le stesse cose su cui lavoro ogni giorno. Non le lego a un'età: un ciclo for si spiega a un bambino di sei anni come a un adulto che si sta riqualificando, e quello che cambia è il modo, non la materia. Se poi non riesco a spiegarlo al bambino, vuol dire che non l'ho capito fino in fondo nemmeno io.
ProgrammazioneDai primi blocchi al codice vero, per ragazzi e per adulti
Sviluppo webHTML, CSS, JavaScript, e come si manda online un sito
SEORicerca, contenuti, dati strutturati e misurazione
AIUsarla nel proprio lavoro senza affidarle le decisioni
InformaticaLe basi, per chi parte da zero, a qualsiasi età
SEO e AI, non solo codice
Sono le due materie su cui ho il lavoro più fresco alle spalle. La SEO la faccio ogni giorno su un sito vero, e un anno intero di quel lavoro è qui dentro, misurato e consultabile: il caso di polodidatticofama.it. Insegnarla vuol dire soprattutto insegnare la parte che di solito si salta: come si misura, come si verifica una fonte prima di pubblicarla, come si capisce se un numero dice davvero quello che sembra dire.
Sull'AI insegno quello che faccio: le si dà il lavoro, non la decisione. Ho sviluppato Marketing Hub proprio per tenere quel confine scritto in chiaro invece che a memoria. Chi usa l'AI senza conoscere la materia non si accorge di quando sbaglia, e riconoscerlo è esattamente la parte che va insegnata.
A chi, e in che formato
Ragazzi e adulti, uno a uno o in aula. Sono due mestieri diversi. Uno a uno si va al ritmo di chi si ha davanti, si torna indietro tutte le volte che serve e la lezione si riscrive mentre la si fa. In aula serve una scaletta che regga anche quando metà del gruppo è avanti e l'altra metà è rimasta indietro, ed è lì che servono gli strumenti: i quiz e i timer a tema che mi sono sviluppata per le lezioni.
Dove l'ho già fatto
Da settembre 2025 a settembre 2026 sono stata docente di programmazione per Coding Giants: classi di bambini e ragazzi dai 6 ai 18 anni, ogni settimana, per un anno. Fuori da lì seguo adulti uno a uno sullo sviluppo web. Sono i due estremi della stessa cosa, ed è il motivo per cui non tengo separato il pubblico giovane da quello adulto.
5materie che insegno
1 annodi docenza in aula
1:1 e aulai due formati
Chi sono, e come lavoro
AlbertaOSversione 26.6
Sviluppo siti web e software che seguo durante tutto il percorso: parlo con chi userà il programma, scrivo il codice, lo mando in produzione e poi continuo a seguirlo, perché un gestionale che le persone usano ogni giorno non è mai finito.
RuoloSEO Specialist e sviluppatrice full-stack
SedeLanciano (CH), in Abruzzo, e da remoto
FormazioneLaurea in Informatica per le Aziende Digitali, 107/110
CertificazioniQuattro MIUR nel 2025, tra SEO, inbound marketing e AI
In produzioneQuattro progetti: uno mio, tre per clienti
LinguaggiPHP, TypeScript e Python, uno per ogni gestionale che ho in produzione
DocenzaProgrammazione, sviluppo web, SEO, AI e informatica di base, per ragazzi e adulti
Processi in background
graficavideogiochiIl Trono di SpadeIl Signore degli Anelli
Non ho sempre scritto codice. Mi sono diplomata in economia aziendale all'istituto P. De Giorgio, un indirizzo che non ho mai sentito mio: la mia passione era l'informatica. Per anni ho lavorato in tutt'altro settore, e la mia passione intanto non è andata da nessuna parte: aspettava solo che le facessi spazio.
Da mamma di due bambini e con la spinta di mio marito, ho ripreso a studiare. Studiavo la mattina, mentre i bambini erano a scuola. Diciotto esami, e il piano di studi diceva già che lavoro avrei fatto: programmazione, algoritmi e strutture dati, basi di dati, reti e cybersecurity, architettura dei calcolatori, ingegneria del software, tecnologie web, cloud computing. Accanto, comunicazione digitale, marketing e diritto per le aziende digitali. Sviluppo e marketing dentro lo stesso corso di laurea, che è poi la coppia su cui lavoro adesso.
Laurea in Informatica per le Aziende Digitali, 107/110, con una tesi dal titolo "Comunicare la responsabilità sociale attraverso il web: il caso aziendale De Cecco come modello applicativo". Nello stesso anno quattro certificazioni MIUR con UniD Formazione: SEO Manager e Specialist, SEO Copywriter, Inbound Marketing, AI per il Digital Marketing. Sono le stesse competenze che applico ogni giorno nel mio lavoro, due delle quali, SEO e AI, fanno parte anche delle cinque materie che insegno.
Lidomatic in produzione in due stabilimenti balneari, il sito e il CRM di un polo di orientamento universitario, un software di magazzino per Polidoro Group. E insegno programmazione, sviluppo web, SEO e uso dell'AI, a ragazzi e adulti.
Ogni paragrafo di questa sezione nasce da quel che ho appreso in ogni progetto che trovi in questo portfolio.
Parto dal problema, non dalla lista delle funzioni
Una richiesta descrive quasi sempre una soluzione. Il problema vero è più sotto, e all'inizio il mio lavoro è ascoltare finché non salta fuori parlando con chi commissiona il programma, ma anche con chi lo userà. Per il gestionale di magazzino mi era stato chiesto un sistema veloce, semplice e sempre a disposizione, ma nell'elenco c'era anche la traccia delle operazioni: era quello il punto, perché voleva dire che nessuno sapeva chi avesse mosso cosa e quando.
Quello che lascio fuori
Da quel magazzino sono rimasti fuori i prezzi e le foto degli articoli, il cloud e qualunque hardware da comprare: è un magazzino di giacenze dentro un capannone con una rete locale, e ogni cosa lasciata fuori è una cosa in meno da configurare e da spiegare a chi ci lavora. Uno scanner QR dentro l'app l'avevo perfino sviluppato. Poi l'ho tolto, perché avrebbe richiesto un certificato da installare sul telefono di ogni operatore ed era più lento della fotocamera che tutti hanno già in tasca. Non tutto quello che si può aggiungere a un software va aggiunto. A volte progettare bene significa anche capire cosa non serve e avere il coraggio di eliminarlo.
Rilasci piccoli, e niente che peggiori quello che funziona
Il CRM ha superato le novanta release documentate da aprile 2026. Sono tante perché scelgo di lavorare per piccoli rilasci: mantenere circoscritto il cambiamento rende più semplice verificarne gli effetti e riduce il rischio di introdurre regressioni in un software già in produzione.
E questo è un principio che seguo sempre: una modifica non deve compromettere ciò che già funziona.
Una volta, per esempio, una correzione di una sola riga risolveva il problema segnalato, ma introduceva una regressione più grave: il sistema avrebbe perso il collegamento con le pratiche già archiviate. È proprio per intercettare casi come questo che affianco allo sviluppo una suite di test automatici: 1.595 test su Lidomatic, 564 sul CRM e 502 sul gestionale di magazzino.
Controllo i dati prima di pubblicarli
Il 3 agosto 2026 ho passato una giornata a verificare i dati che sarebbero finiti in alcuni articoli. Alla fine ne ho scartati quattro: dati occupazionali di un consorzio a cui nessuno degli enti citati aderisce, una ricerca americana del 2009 presentata come attuale, un regolamento inesistente e un percorso formativo attribuito all'ente sbagliato.
Probabilmente non se ne sarebbe accorto nessuno. Ed è proprio questo il punto: un contenuto può sembrare corretto e avere comunque informazioni sbagliate. Per questo la verifica viene prima della pubblicazione, non dopo.
Lo stesso criterio vale quando presento i risultati del mio lavoro. Nel caso studio SEO, per esempio, avrei potuto scegliere il periodo più favorevole per costruire un confronto migliore. Ho fatto l'opposto: luglio 2025 contro luglio 2026, sapendo che luglio 2025 era stato il mese migliore di quell'anno. Se il risultato regge anche contro il dato più difficile da battere, il confronto ha molto più valore.
La consegna non è la fine
Su Lidomatic lo stato di ogni installazione lo leggo dal CRM che ho sviluppato per seguirle, diagnostica da remoto compresa, e di solito mi accorgo di un problema prima che il cliente mi chiami. Gli aggiornamenti si installano da soli. Il CRM del polo è in manutenzione e sviluppo continui, e il magazzino, in produzione dall'8 giugno 2026, da allora non è rimasto fermo. Nessuno dei tre è un progetto consegnato e chiuso.
L'AI la uso ogni giorno, e lo dico
Uso l'AI ogni giorno e lo dico volentieri invece di nasconderlo. Per ogni progetto ho sviluppato agenti dedicati e intere catene di lavoro, dalla ricerca alla verifica. Ma l'AI è il braccio: l'architettura la scelgo io, le istruzioni le do io, e ogni risultato lo controllo prima che vada in produzione. Non decide lei, decido io. Chi conosce la materia ci guadagna un moltiplicatore, chi lascia fare senza controllo raccoglie disordine.
Quel confine non lo tengo a memoria, è scritto anche dentro Marketing Hub, dove i permessi degli agenti sono una tabella: cosa possono scrivere da soli, cosa devono chiedere a me, cosa non possono toccare in nessun caso. Nella pagina di quell'app il banco dei permessi si può provare.
Sviluppo siti web ottimizzati SEO e software che mando in produzione seguendoli con rilasci continui. Uso agenti AI sviluppati su misura per ogni progetto: architettura, scelte, strategie e verifiche restano mie.
Ruoli di interesse
Project ManagerSEO SpecialistDigital marketingSviluppo full-stackDev + SEODocenza e formazione
In sede, ibrido o da remoto, anche dall'estero.
Competenze
PHPTypeScriptPythonLaravelReactFastAPIElectronHTMXSQLWordPressSEO & analyticsUX & Conversionagenti AI
Lingue
Italiano (madrelingua) Inglese (B1)
Esperienza
Lidomatic
Ideazione, sviluppo e vendita2024 - oggi
Ecosistema gestionale completo per stabilimenti balneari: app, prenotazione online, CRM delle chiavi di licenza, assistenza clienti. In produzione in 2 stabilimenti, 1.595 test automatici. TypeScript, React, Electron, Cloudflare.
CRM FAMA
Sviluppo full-stack2025 - oggi
CRM per l'orientamento universitario su più enti formativi: lead, immatricolazioni, provvigioni, automazioni, inbox social, estensione Chrome. Oltre 90 release documentate (alla v96). PHP, Laravel, Alpine.js, MySQL.
polodidatticofama.it
Sviluppo sito e strategia SEO2025 - oggi
Sito, contenuti e piano editoriale di un polo di orientamento universitario, con dashboard analytics sviluppata su misura. Da quando è partito il lavoro editoriale il traffico organico è passato da 74.000 a 322.000 impression al mese e le query in prima pagina da 379 a 5.551 (luglio 2025 contro luglio 2026). WordPress, GA4, Search Console, Python.
Software Magazzino
Progettazione e sviluppo · Polidoro Group2026
Inventario per il settore abbigliamento con etichette QR e sincronizzazione in tempo reale tra dispositivi. Dalla v1.0.0 in 6 settimane, 502 test. Python, FastAPI, HTMX.
Coding Giants
Docente di programmazioneset 2025 - set 2026
Docenza settimanale a classi dai 6 ai 18 anni, con i quiz e i timer didattici sviluppati da me.
Se preferisci, compila il modulo: il messaggio mi arriva in casella senza passare dal tuo programma di posta.
Cosa succede dopo
Se la richiesta riguarda un software, la prima cosa che chiedo non è cosa deve fare il programma, ma quale problema c'è adesso: quasi sempre la risposta cambia quello che va sviluppato. È il punto da cui parte tutto il resto, e l'ho raccontato per intero in come lavoro.
Dove mi trovo e fin dove arrivo
Sono a Lanciano, in provincia di Chieti. Da remoto lavoro su tutta Italia, e anche dall'estero. In sede o ibrido copro l'Abruzzo, le Marche e il Molise.
Se prima di scrivermi vuoi avere il quadro completo su di me, c'è il curriculum, che puoi leggere direttamente qui o stampare.
Questa pagina non c'è
L'indirizzo che hai aperto non corrisponde a nessuna app. Può essere un link vecchio, o un refuso.
Da qui puoi tornare alla home, oppure aprire una delle applicazioni dal dock qui sotto.
Resa ai sensi dell'art. 13 del Regolamento (UE) 2016/679 (di seguito "GDPR").
Ultimo aggiornamento: 21 agosto 2026
1. Premessa
Il presente documento descrive le modalità di trattamento dei dati personali degli utenti che consultano il sito albertascardapane.it (di seguito "il Sito").
Il Sito non svolge attività di vendita, non prevede aree riservate e non richiede alcuna registrazione. Non vengono effettuati trattamenti a fini di marketing diretto, di profilazione o di processo decisionale automatizzato ai sensi dell'art. 22 del GDPR. I dati personali non sono oggetto di diffusione né di cessione a terzi.
2. Titolare del trattamento
Titolare del trattamento è Alberta Scardapane, C.da Follani 300, 66034 Lanciano (CH), Italia, indirizzo di posta elettronica alberta@seoabruzzo.it.
Non è stato nominato un Responsabile della protezione dei dati, non ricorrendo i presupposti di cui all'art. 37 del GDPR.
3. Tipologie di dati trattati
3.1 Dati conferiti tramite il modulo di contatto
Attraverso il modulo di contatto presente nel Sito sono raccolti il nome, l'indirizzo di posta elettronica, l'oggetto selezionato fra quelli proposti e il testo del messaggio.
Il conferimento di tali dati è facoltativo. Il mancato conferimento del nome, dell'indirizzo di posta elettronica e del messaggio impedisce tuttavia l'inoltro della richiesta e la conseguente possibilità di riscontro.
3.2 Dati registrati contestualmente all'invio del modulo
All'atto dell'invio del modulo il sistema registra, unitamente al messaggio, le seguenti informazioni:
l'indirizzo IP dell'utente e il paese da esso desumibile;
l'identificativo del browser e del sistema operativo utilizzati (user agent);
la data e l'ora di ricezione, espresse in tempo universale coordinato;
il testo della dichiarazione di consenso accettata dall'utente e la relativa versione.
Tali informazioni sono generate dal server e non trasmesse dal browser dell'utente. La scelta è finalizzata a garantirne l'integrità, non essendo altrimenti possibile escludere che i medesimi valori siano alterati in fase di invio. Le informazioni sono conservate all'interno del messaggio di posta elettronica ricevuto dal Titolare e non in archivi ulteriori.
3.3 Dati di navigazione
I sistemi informatici e le procedure software preposte al funzionamento del Sito acquisiscono, nel corso del loro normale esercizio, alcuni dati la cui trasmissione è implicita nell'uso dei protocolli di comunicazione di Internet, fra cui l'indirizzo IP. Tali dati sono utilizzati al solo fine di erogare il servizio e di garantire la sicurezza del Sito.
Previo consenso dell'utente, espresso mediante l'apposito banner, sono inoltre attivati strumenti di misurazione statistica delle visite. In assenza di consenso i relativi script non vengono eseguiti. Il dettaglio dei cookie e degli altri strumenti di tracciamento è contenuto nella cookie policy.
3.4 Preferenze di visualizzazione
La preferenza relativa al tema chiaro o scuro è conservata nella memoria locale del browser dell'utente, alla voce albertaos-tema. Il dato ha natura esclusivamente tecnica, non contiene informazioni personali, non è trasmesso ad alcun server e non è accessibile al Titolare. Può essere rimosso in qualsiasi momento mediante la cancellazione dei dati del sito dalle impostazioni del browser.
3.5 Dati registrati con la scelta sui cookie
All'atto della scelta espressa mediante il banner sono registrati un identificativo casuale generato dal browser, la data e l'ora della scelta espresse in tempo universale coordinato, la scelta effettuata, il testo esatto e la versione dell'informativa mostrata, la lingua della pagina, l'indirizzo IP e il paese da esso desumibile, e l'identificativo del browser.
La registrazione è necessaria a dimostrare che il consenso è stato prestato, come richiesto dall'art. 7, par. 1, del GDPR. Anche in questo caso le informazioni sono generate dal server e non trasmesse dal browser dell'utente. Sono conservate in un database vincolato alla giurisdizione dell'Unione Europea.
4. Finalità e basi giuridiche del trattamento
Finalità
Base giuridica
Riscontro alle richieste inoltrate tramite il modulo di contatto
Consenso dell'interessato, manifestato mediante l'apposita casella di spunta (art. 6, par. 1, lett. a, GDPR)
Conservazione della dichiarazione di consenso e dei relativi elementi di riscontro
Necessità di dimostrare che l'interessato ha prestato il proprio consenso (art. 7, par. 1, GDPR)
Conservazione della prova del consenso all'uso di strumenti statistici
Necessità di dimostrare che l'interessato ha prestato il proprio consenso (art. 7, par. 1, GDPR)
Funzionamento, manutenzione e sicurezza del Sito
Legittimo interesse del Titolare (art. 6, par. 1, lett. f, GDPR)
Misurazione statistica delle visite
Consenso dell'interessato, manifestato mediante il banner (art. 6, par. 1, lett. a, GDPR)
Il consenso può essere revocato in qualsiasi momento, senza che ciò pregiudichi la liceità del trattamento effettuato anteriormente alla revoca. La revoca del consenso agli strumenti statistici si effettua dalla voce "Preferenze cookie" del menu di sistema, disponibile in ogni pagina del Sito. La revoca del consenso relativo al modulo di contatto si effettua mediante comunicazione all'indirizzo indicato al punto 2.
5. Destinatari dei dati
I dati personali sono trattati dal Titolare e possono essere comunicati ai soggetti di seguito indicati, che agiscono in qualità di responsabili del trattamento ai sensi dell'art. 28 del GDPR.
Soggetto
Attività svolta
Sede
Cloudflare, Inc.
Erogazione e distribuzione del Sito, ricezione del modulo di contatto, conservazione del registro dei consensi
Stati Uniti
Sendinblue SAS (Brevo)
Consegna del messaggio di posta elettronica generato dal modulo
Francia
Aruba S.p.A.
Gestione della casella di posta elettronica di destinazione
Italia
Google Ireland Limited
Misurazione statistica delle visite, previo consenso
Irlanda
I dati possono inoltre essere comunicati alle autorità competenti in adempimento di obblighi di legge.
6. Trasferimento dei dati verso paesi terzi
Tre dei soggetti indicati al punto 5 hanno sede nell'Unione Europea. Cloudflare, Inc. ha sede negli Stati Uniti d'America; il registro dei consensi di cui al punto 3.5 è tuttavia conservato in un database vincolato alla giurisdizione dell'Unione Europea, e i relativi dati non escono da essa. Google Ireland Limited, pur avendo sede in Irlanda, si avvale della società controllante Google LLC, con sede negli Stati Uniti d'America.
In entrambi i casi il trasferimento avviene sulla base delle Clausole Contrattuali Standard adottate dalla Commissione Europea ai sensi dell'art. 46, par. 2, lett. c, del GDPR, nonché dell'adesione dei predetti soggetti al quadro UE-USA per la protezione dei dati (Data Privacy Framework), oggetto della decisione di adeguatezza della Commissione Europea del 10 luglio 2023.
7. Periodo di conservazione
I messaggi ricevuti tramite il modulo di contatto, unitamente alle informazioni indicate al punto 3.2, sono conservati per il tempo necessario alla gestione della richiesta e dei rapporti che ne conseguono, e comunque per un periodo non superiore a 24 mesi decorrenti dall'ultimo contatto intercorso.
Qualora dalla richiesta derivi un rapporto contrattuale, la documentazione ad esso relativa è conservata per i termini previsti dalla normativa civilistica e fiscale applicabile.
Le registrazioni di cui al punto 3.5 sono conservate per 24 mesi dalla data della scelta, termine entro il quale è possibile dover dimostrare che il consenso è stato prestato.
I dati di navigazione e quelli raccolti mediante strumenti statistici sono conservati secondo i termini stabiliti dai rispettivi fornitori. La durata dei singoli cookie è indicata nella cookie policy.
8. Diritti dell'interessato
L'interessato ha diritto di ottenere dal Titolare, nei casi previsti dagli artt. da 15 a 22 del GDPR:
l'accesso ai dati personali che lo riguardano e una copia degli stessi;
la rettifica dei dati inesatti e l'integrazione di quelli incompleti;
la cancellazione dei dati;
la limitazione del trattamento;
la portabilità dei dati, ossia la loro ricezione in formato strutturato, di uso comune e leggibile da dispositivo automatico, nonché la loro trasmissione ad altro titolare;
l'opposizione al trattamento fondato sul legittimo interesse del Titolare;
la revoca del consenso prestato.
Le richieste sono indirizzate all'indirizzo di posta elettronica indicato al punto 2. Il riscontro è fornito senza ingiustificato ritardo e comunque entro un mese dal ricevimento della richiesta, a titolo gratuito.
L'interessato che ritenga il trattamento non conforme alla normativa vigente ha altresì diritto di proporre reclamo al Garante per la protezione dei dati personali (Piazza Venezia 11, 00187 Roma, www.garanteprivacy.it), ovvero all'autorità di controllo dello Stato membro in cui risiede abitualmente.
9. Modifiche alla presente informativa
Il Titolare si riserva di modificare la presente informativa in conseguenza di variazioni delle modalità di trattamento o degli strumenti impiegati. Le modifiche sono pubblicate in questa pagina, con aggiornamento della data indicata in apertura. Qualora le modifiche riguardino trattamenti soggetti a consenso, il consenso è nuovamente richiesto mediante il banner.