-
-
Keep stories, chapters, reading progress, and source metadata organized in one private library.
-
Customize typography, spacing, colors, and highlighting for comfortable long-form reading.
-
Discover supported fiction sites and start a private capture and translation flow.
-
Choose a voice, playback speed, and text highlighting for synchronized text-to-speech.
-
Open reading, audio, capture, status, and navigation controls without leaving the chapter.
-
Read extracted chapters in a clean, distraction-free interface with localized story and chapter metadata.
Inspiration
Web fiction is abundant, but readers often move between a browser, a translator, notes, audio, and a progress tracker. Nookly brings those steps into one private Android reading flow designed for phones, tablets, and e-ink devices.
What it does
Nookly opens a real web-fiction page in a visible WebView, extracts the chapter currently shown, translates it with GPT-5.6 through the reader's own OpenAI API key, validates the structured result, and stores one current translation in a focused native Reader. Library continuity, real Index navigation, reading progress, glossary, sixteen interface languages, right-to-left reading, and text-to-speech stay together across screen changes and app restarts.
The source website is not modified. StoryProfile, Index, Library identity, and source metadata remain canonical even when the Reader presents the current translation in another language.
How we built it
Nookly is a native Kotlin and Jetpack Compose Android app. It discovers and ranks GPT-5.6 Sol, Terra, and Luna through the OpenAI Models API. After the API key is saved and validated, Nookly automatically configures the best available default GPT-5.6 model, carries that model into Chat Completions, validates the returned chapter fields, accounts for model-specific input, cached-input, and output cost, and persists the result through the existing canonical chapter architecture. The API key stays in Android protected storage, does not enter Wi-Fi Sync, and is redacted from diagnostics.
During OpenAI Build Week, we meaningfully extended an existing application with the GPT-5.6 model family, transparent cost contracts, a five-scene first-run experience, clearer account and access guidance, explicit user-controlled Chapter/Index routing, more recoverable capture and translation failures, and multilingual Reader, Status, Audio, and Setup surfaces. We also corrected cross-surface state and localization problems found during real-device demonstration. The private repository documents the dated boundary between the pre-existing product and the submission-period work.
Challenges
The hardest part was adding a new model family without creating a competing translation pipeline or corrupting saved reading state. Nookly preserves one current translation per canonical chapter. Every requested translation starts from the chapter newly extracted from the visible webpage; it does not reuse an older saved translation as the source or result. The Reader may project the current translation's story and chapter titles in the active language, while StoryProfile, Index, Library identity, and source metadata remain canonical and are never duplicated into per-language story variants.
A second challenge was preserving the same behavior across hidden and visible Android surfaces: onboarding, Setup, Account, Home, WebView, Reader, Status, reading controls, Audio, background TTS, and app restarts. This required explicit contracts and regression gates rather than isolated UI fixes.
Accomplishments
- Live extraction and end-to-end GPT-5.6 translation of a real web-fiction chapter in a production-oriented Android architecture.
- Automatic GPT-5.6 model discovery, ranking, validation, default selection, and transparent cost estimates.
- One-current-translation persistence without duplicating stories, Indexes, progress, or canonical metadata by language.
- A clearer first-run-to-Reader path across sixteen interface languages, with English as the unsupported-language fallback.
- Secure BYOK storage and compilation-level isolation between the Build Week Judge experience and the Google Play release.
- Reader Menu, localized metadata, reading controls, text-to-speech, and background audio demonstrated on a real Android device.
- 767 passing tests with zero failures or errors, plus Reader, Setup, and TTS audits.
What we learned
Nookly would not exist without Codex. GPT-5.4 and GPT-5.5 helped build the product foundation, while GPT-5.6 was especially valuable for diagnosing complex problems that crossed WebView capture, translation, persistence, Reader state, localization, commercial access, and regression prevention.
Building a production-oriented Android app with an AI coding agent also reinforced the importance of human product decisions, explicit contracts, narrow authorization, regression tests, and evidence-backed release gates. Our experience revealed opportunities for future Codex improvements in visual UI fidelity, consistent consultation of repository documentation, strict adherence to literal scope, stability on modest hardware, and automatic routing of simple tasks to lighter models.
Codex was most effective not as an unsupervised replacement for product judgment, but as a powerful engineering collaborator operating inside clear human decisions and verifiable constraints. It gave a solo developer capabilities that would otherwise require a team.
What's next
Nookly is designed for phones, tablets, and e-ink Android devices. Phone and tablet validation is already part of development, but as a solo developer I do not yet have access to suitable e-ink hardware for real-device testing. Any award or program support will help fund e-ink validation, including contrast, refresh behavior, long-form readability, performance, and accessibility testing before broader production rollout.
We will also continue expanding audited provider compatibility, improve assisted capture without bypassing human verification, and complete Google Play production validation without weakening BYOK privacy, canonical reading identity, or local reading continuity.
Log in or sign up for Devpost to join the conversation.