This is a submission for the GitHub Finish-Up-A-Thon Challenge
What I Built
I built the Novel Translator, a privacy-focused, local-first desktop application designed to translate EPUBs, PDFs, and text using AI.
As an avid reader of web novels and manga with intricate world-building and complex lore, I often found that standard translation tools completely lose the context of specific character names, abilities, or terms. I wanted a dedicated workspace where I could manage custom glossaries, translate paragraphs side-by-side using powerful LLMs, and keep all my data stored locally. The project is built using a modern stack: Electron, React, TypeScript, and an embedded SQLite database within a pnpm workspace.
Demo
Here is the repository and a quick look at the application in action:
- GitHub Repository: EdizKeskin/Novel-Translator
- Video Walkthrough: Watch the Demo on YouTube
The Comeback Story
I initially started this project with high ambitions. I spent hours setting up a solid monorepo architecture, defining the IPC contracts, and designing the UI skeleton. However, the core engine was left entirely unfinished. My translation adapters were just empty stubs, the EPUB/PDF parsers weren't fully wired, and the application couldn't actually process or translate a single word. It sat in my repository as a great idea with a beautifully empty shell.
For the Finish-Up-A-Thon, I decided to finally bring it to life. During the comeback, I:
- Implemented the actual API integrations for Gemini, OpenAI, DeepL, and even added a brand new DeepSeek adapter.
- Finalized the SQLite database schema to ensure robust local storage for projects and API credentials.
- Wired up the
WorkspacePageandSettingsPagecomponents to create a seamless user flow. - Successfully completed the translation state machine, turning a stalled concept into a fully functioning end-to-end pipeline.
My Experience with GitHub Copilot
GitHub Copilot was an absolute game-changer for finishing this project efficiently. Writing Electron IPC (Inter-Process Communication) contracts can often be tedious, but Copilot anticipated my event listeners and handlers seamlessly, saving me from constantly referencing the documentation.
It also massively accelerated the process of writing the provider adapters. When I decided to add the DeepSeek API integration alongside Gemini and OpenAI, Copilot understood the TypeScript interfaces I had already laid out and generated the boilerplate almost instantly. Finally, it helped me tackle the complex asynchronous logic within my state machine, turning what would have been hours of debugging into a very smooth finish-up experience.
Top comments (0)