Come ho creato il mio primo software .exe per Windows con Claude Code e Codex?
Sono due mesi che vibe-codo, prima con Claude Code poi con Codex CLI. Nelle ultime settimane avevo un bel po’ di token a disposizione e pochi progetti, così mi sono lanciata, solo per piacere, nella creazione di uno strumento per ascoltare documenti audio e annotarli allo stesso tempo (un mix di Audible e Kindle). Alla fine si è rivelato davvero utile: i miei genitori, la cui vista è calata parecchio, ne hanno bisogno per farsi leggere libri ad alta voce grazie all’IA. Ho deciso di realizzare la versione software per Windows (un semplice .exe) così che possano installarlo sul loro computer.
È la prima volta che creo un software. Anche se ho un po’ di esperienza, non sono assolutamente uno sviluppatore, so cos’è un algoritmo e ho codificato un bel po’ di script per automatizzare il mio lavoro (nel marketing). Ma non ho mai compilato nulla e non so nemmeno cos’è Electron.
Quando lavoravo (nel marketing) per un’azienda di software, ammiravo particolarmente i team di Product Management (che inventa funzionalità) e il team QA (quality assurance (il cui mestiere è solo trovare bug e falle). Con il mio software sono finalmente riuscita a ‘giocare’ al product management & QA. Sììì!!

Inserisco questo prompt in chatGPT.
Vorrei creare un software tipo Audible che funzioni in web locale su Windows. Si possono caricare URL ma anche file epub, html, txt, pdf. Una volta caricato il file, i capitoli vengono individuati automaticamente. Nella colonna di sinistra ci sono pulsanti 'carica un file', 'carica url', 'accedi alla biblioteca'; quando si clicca su accedi alla biblioteca, a destra si vede l'elenco dei file già caricati; si possono ordinare per data di aggiunta o A-Z o Z-A, si può anche modificare il titolo del file, si può eliminare facilmente ogni file. Quando si vuole avviare la lettura di un file, si clicca sul titolo del file, il testo del file viene visualizzato + i pulsanti play, avanti di un paragrafo/capitolo, l'elenco dei capitoli, + scelta delle lingue (EN, FR, VN) voce (uomo/donna), tipi di voce, velocità, tono. Il software deve mostrare il paragrafo in lettura corrente e mantenere la posizione se si ferma o si chiude il software. Propormi l'interfaccia adatta, hai aggiunte o suggerimenti di miglioramento?
ChatGPT mi propone alcuni miglioramenti, apporto qualche modifica, un po’ di sfida. Arriviamo a un piano dettagliato, poi mi mostra dei mock up, che mi piacciono molto:

Li trovo davvero niente male e gli chiedo un prompt per Claude Code per effettivamente codificare il software. Si parte con un piano modalità per validare il piano tecnico, poi si parte!
Il progetto è trattato in più fasi, Claude Code codifica ogni fase, si ferma, io verifico, do feedback, lui corregge e poi si continua un’altra fase.

Lo scheletro del software è fatto molto velocemente e ogni volta posso ‘toccare’ il software prima di suggerire modifiche.
Mi piace molto molto il processo, richiede molta riflessione per rendere l’interfaccia facile da usare e logica, e aggiungere funzionalità a cui nessuno pensa ma che tutti trovano utili! Non è perché ci sono pochi pulsanti che c’è poco lavoro, perché proprio il lavoro è stato fatto a monte per avere il minor numero di pulsanti e clic possibili.
Mi ricorda un pranzo in cui il mio ex manager mi disse, 13 anni fa, che mi vedeva bene in un lavoro in cui farei da ponte tra esperti e sviluppatori, cioè tradurre i bisogni ‘business’ in specifiche per gli sviluppatori… una specie di Product Manager interno. A quel tempo, il tempismo non era buono per un’altra riconversione, ma questo dimostra che era così visionario e intuitivo da vedere la strada giusta per me. Se avete qualcuno di altrettanto visionario e intuitivo nel vostro giro, invitatelo a pranzo, sarà più efficace di un bilancio delle competenze.
Il rischio con questo tipo di software è la sicurezza. I pdf & epub che si trovano online rischiano di contenere script che si eseguono e possono rovinare un computer, quindi bisogna chiedere a Claude Code di mettere in sicurezza al massimo.
Per questo ho creato un agente specializzato in cybersecurity, un agente specializzato in UX UI e un agente QA – che controllano ogni fase del progetto, tracciano e correggono gli errori.
Per le voci, uso sia le voci diEdge TTS (gratuito, necessita connessione Internet) sia Microsoft (gratuito, offline ma meno naturale).
Ho scoperto che ‘compilare un software’ era alla fine del processo. Electron permette di impacchettare un’interfaccia web con Chromium e Node.js per trasformarla in un’applicazione Windows classica. Alla fine del processo si ottiene un file di installazione in .exe, ma poi resta da testare il software su un altro computer (quello dei miei genitori), segnalare i bug automaticamente e gestire gli aggiornamenti (a breve).



I miei punti preferiti
- Divisione automatica del documento in capitoli: era un punto delicato e difficile perché bisogna coprire un’ampia gamma di formati e file mal impaginati. Ho usato diversi software di lettura AI e tutti fanno molta fatica con i capitoli.
- Sottolineatura & annotazione: adoro sottolineare e annotare – e adoro entrare in modalità “full sottolineatura”, il mouse si trasforma in un evidenziatore. È un punto che ho migliorato rispetto a Kindle dove servivano 2 clic per sottolineare qualsiasi cosa. Si possono esportare facilmente le sottolineature & annotazioni.
- Le voci vietnamite : sono molto contenta della qualità delle voci vietnamite, ho provato altre app e non mi piacevano tanto quanto il mio software 🙂 spero che anche i miei genitori siano contenti
- E a parte i costi di sviluppo che ho pagato all’IA, questo software sarà GRATIS da usare
- Il design essenziale, non sono un professionista di UX UI ma penso che io e l’IA ce la siamo cavata bene!
- Il software gestisce la libreria di libri sul computer ma apre anche un accesso allo smartphone tramite la rete locale (è perché non ho voglia di creare un’app per iPhone né un sito web). Su smartphone, è una versione light che si comporta quasi come Audible. Ma con la possibilità di seguire il testo contemporaneamente all’audio (se lo si desidera).


| Livello | Tecnologie e ruolo |
|---|---|
| Applicazione desktop | Electron 43 — trasforma l’interfaccia web in applicazione Windows |
| Linguaggio | TypeScript per il processo principale, il preload, l’interfaccia e il codice condiviso |
| Interfaccia | React 19, React Router e CSS personalizzato, senza Tailwind |
| Stato dell’interfaccia | Zustand |
| Validazione dei dati | Zod per le comunicazioni IPC, l’API locale e gli schemi condivisi |
| Compilazione e build | Vite 7 e electron-vite |
| Test automatizzati | Vitest e jsdom — circa 210 test |
| Qualità del codice | ESLint e Prettier |
| Installatore Windows | electron-builder con target NSIS e script NSIS personalizzato per il comportamento dell’installatore (scelta della lingua predefinita). |
| Database locale | SQLite tramite node-sqlite3-wasm, senza compilatore C++ |
| Importazione dei documenti | pdfjs-dist per i PDF, node-html-parser per l’HTML e fflate per EPUB e archivi ZIP |
| Sintesi vocale | Edge TTS con msedge-tts e Web Speech API per le voci di Windows |
| Audio mobile sulla rete locale | Streaming HLS, con FFmpeg eseguito da un server locale sulla porta 8789 |
| Internazionalizzazione | Interfaccia disponibile in francese, inglese e vietnamita, con le traduzioni raggruppate in messages.ts |
| Icone | lucide-react |
Non conoscevo nessuna di queste tecnologie (tranne SQL e CSS) fino a 3 giorni fa 😀 Il vibe coding non consiste solo a scrivere un lungo prompt e aspettare che l’IA faccia tutto. Bisogna suddividere il progetto in piccoli passi, testare ogni funzionalità, individuare comportamenti strani e riformulare con precisione ciò che si vuole (si può anche cambiare idea nel frattempo).
Mancano ancora funzionalità avanzate, ma sono molto soddisfatta della v1. Lasciamo le funzionalità più avanzate alle v1.1, 1.2… Ho anche predisposto le basi necessarie per la futura gestione delle segnalazioni di bug e degli aggiornamenti, nel caso decidessi di distribuire il software a un pubblico più ampio.



