How I created my very first Windows .exe software with Claude Code and Codex?
It’s been two months that I’ve been vibe-coding, first with Claude Code and then with Codex CLI. Lately, I had a bunch of tokens to spare and few projects, so I took the plunge, just for fun, into creating a tool that lets you listen to documents as audio and annotate them at the same time (a mix of Audible and Kindle). In the end, it turned out to be really useful: my parents, whose eyesight has faded quite a bit, really need it to have AI read books aloud to them. I decided to make the Windows software version (a simple .exe) so they could install it on their computer.
This is the first time I’ve created software. Even though I have some experience, I’m definitely not a developer; I know what an algorithm is and I’ve coded quite a few scripts to automate my work (in marketing). But I’ve never compiled anything and don’t even know what Electron is.
When I worked (in marketing) for a software company, I particularly admired the Product Management teams (who dream up features) and the QA (quality assurance team (whose job is just to find bugs and flaws). With my own software, I finally got to “play” at product management & QA. Yessss!!

I enter this prompt into chatGPT.
I'd like to create an Audible-type software that runs on local web on Windows. You can upload URLs as well as epub, html, txt, pdf files. Once the file is uploaded, chapters will be automatically detected. On the left column, there are buttons "upload a file", "upload url", "access the library"; when you click on access the library, you see on the right the list of already uploaded files; you can sort them by date added or A to Z, or Z to A, you can also edit the file title, you can easily delete each file. When you want to start reading a file, you click on the file title, the file text displays + the play buttons, advance by a paragraph/chapter, the list of chapters, + language choices (EN, FR, VN), voice (male/female), voice types, speed, pitch. The software must display the current paragraph being read and keep the position if you stop or close the software. Propose me the adapted UI; do you have any additions or improvement suggestions?
chatGPT suggests some improvements, I make a few tweaks, a bit of a challenge. We arrive at a detailed plan, then it spits out mockups, which I really like:

I find them really good and ask it for a prompt for Claude Code to actually code the software. We go for plan mode to validate the technical plan, then off we go!
The project is handled in several phases; Claude Code codes each phase, stops, I check, give feedback, it fixes, and then we move on to another phase.

The software skeleton is done very quickly, and each time, I can “touch” the software before suggesting modifications.
I really, really like the process; it requires a lot of thought to make the UI easy to use and logical, and to add features no one thinks of but everyone finds useful! Just because there are few buttons doesn’t mean there’s little work, because the work was done upfront to have the fewest buttons and clicks possible.
It reminds me of a lunch where my former manager told me, 13 years ago, that he could see me in a role where I’d bridge experts and developers, i.e., translating “business” needs into specs for developers… a sort of internal Product Manager. At that time, the timing wasn’t right for me to make another career change, but it shows he was so visionary and intuitive that he saw the right path for me. If you have someone in your circle who is equally visionary and intuitive, treat them to lunch; it’ll be more effective than a skills assessment.
The risk with this kind of software is security. The pdfs & epubs you find online may contain scripts that execute and can wreck a computer, so you need to ask Claude Code to secure it as much as possible.
To that end, I created a specialized cybersecurity agent, a UX/UI agent, and a QA agent—they audit each project phase, track, and fix errors.
For voices, I use bothEdge TTS (free, requires internet) and Microsoft (free, offline but less natural).
I discovered that “compiling software” was at the end of the process. Electron allows packaging a web interface with Chromium and Node.js into a standard Windows app. At the end, you get an installation file in .exe, but then you still need to test the software on another computer (my parents’), report bugs automatically, and manage updates (soon).



My favorite points
- Automatic splitting of the document into chapters: it was a delicate and tricky point because you have to cover a wide range of formats and poorly laid out files. I used several AI reading software and they all struggle a lot with chapters.
- Highlighting & annotation: I love highlighting and annotating – and I love going into “full highlighting” mode, the mouse turns into a highlighter. This is something I improved compared to Kindle where it took 2 clicks to highlight the slightest thing. You can easily export highlights & annotations.
- Vietnamese voices : I’m really happy with the quality of the Vietnamese voices, I tested other apps and didn’t like them as much as my software 🙂 I hope my parents will be happy too
- And aside from the development costs I paid to the AI, this software will be FREE to use
- The clean design, I’m not a UX UI pro but I think the AI and I did a good job!
- The software manages the book library on the computer but also opens smartphone access via the local network (that’s because I don’t want to create an iPhone app or a website). On smartphone, it’s a light version that behaves almost like Audible. But with the ability to follow the text while listening to the audio (if you want).


| Layer | Technologies and role |
|---|---|
| Desktop application | Electron 43 — turns the web interface into a Windows application |
| Language | TypeScript for the main process, preload, interface, and shared code |
| Interface | React 19, React Router, and custom CSS, without Tailwind |
| Interface state | Zustand |
| Data validation | Zod for IPC communications, the local API, and shared schemas |
| Compilation and build | Vite 7 and electron-vite |
| Automated tests | Vitest and jsdom — about 210 tests |
| Code quality | ESLint and Prettier |
| Windows installer | electron-builder with NSIS target and custom NSIS script for installer behavior (default language choice). |
| Local database | SQLite via node-sqlite3-wasm, without a C++ compiler |
| Importing documents | pdfjs-dist for PDFs, node-html-parser for HTML and fflate for EPUBs and ZIP archives |
| Text-to-speech | Edge TTS with msedge-tts and the Web Speech API for Windows voices |
| Mobile audio on the local network | HLS streaming, with FFmpeg run by a local server on port 8789 |
| Internationalization | Interface available in French, English, and Vietnamese, with translations grouped in messages.ts |
| Icons | lucide-react |
I didn’t know any of these technologies (except SQL and CSS) until 3 days ago 😀 Vibe coding isn’t just about writing a big prompt and letting the AI do everything. You have to break the project into small steps, test each feature, spot weird behaviors, and precisely restate what you want (you can also change your mind along the way).
Advanced features are still missing, but I’m very satisfied with v1. Let’s leave more advanced features for v1.1, 1.2… I’ve also planned the basics needed for future bug report and update management, in case I decide to distribute the software to a wider audience.



