Built in a day ยท section 1
Built in a day
Built in a day
Rome wasn't built in a day. This app was.
๐ Introduction
In today's fast-paced digital world, we expect to manage everything from our phones โ our photos, our finances, our front doors. Everything, that is, except a twenty-four-year-old booklog running as a static Hugo site.
Until now.
TL;DR: On 9 July 2026 โ two days after the booklog's dramatic rescue from a hosting placeholder, a story this site has already told in Your website is almost here! โ a proposal was written for a small, mobile-first companion app. Two hours later that same day, the app had been designed, built through four phases, deployed to production, and refined through three rounds of real-world feedback. Read that sentence again. Two hours. It has a name: boeggn. It has a home: boeggn.yusupov.cloud. And it has a mission: to make managing a booklog from a phone not just possible, but genuinely delightful.
This wasn't just a productivity tool. It was a test of a philosophy โ the bold idea that a static site doesn't need to become dynamic to become manageable. In this comprehensive multi-part deep dive, we'll delve into every layer of that journey: the architecture, the build, the AI, the polish, and the lessons. By the end, you'll understand not just what was built, but why it matters. Whether you're a seasoned developer, a WordPress refugee, or simply someone who has ever sighed at their own content workflow, this story has something for you.
Let's dive in. ๐
๐ฅ๏ธ The Problem: A Site You Can Only Feed from a Desk
Here's the thing about static sites: they are wonderful to serve and wonderful to own, but every change is, by definition, a file edit. After the migration, adding a book or updating reading progress meant a laptop, a git repository, and a working session. In 2026, that's not a workflow. That's a chore. The verdict from daily use was as honest as it was concise: managing the content by hand "is not the best experience."
The brief that followed was refreshingly clear. It asked for a lean, mobile-first web app with a standard login and exactly three tasks โ no more, no less:
- Add to read. One free-form textarea. Type anything โ an author and a title, a pasted blurb, an ISBN โ and let AI propose one or more complete book entries, every field editable, checked against the site's existing authors, categories, tags and series before anything is accepted.
- Update reading. A list of the books currently being read. Tap one, enter how far along you are โ hours and minutes for an audiobook, pages or a percentage for print โ and submit.
- Edit content. Search across all books, open one, edit everything โ metadata, rating, status, review text โ and publish.
And one hard constraint, stated in no uncertain terms: do not make the site dynamic. The site stays a static Hugo build. The app must consume the site's data and publish through the site's existing pipeline. The site's architecture was the prize of the migration, and no convenience feature was going to be allowed to erode it. Non-negotiable? Non-negotiable.
๐ก The Answer in One Sentence
The solution is so simple it fits in a single sentence: the app is a git client with forms.
Boom. That's it. That's the architecture.
Of course, that sentence is doing a lot of heavy lifting, and unpacking it is the subject of the next section. From there, we follow the build itself โ four phases in one day, take a closer look at the AI intake flow, tour the polish that makes it feel like an app, and close with the lessons learned along the way โ plus a handy FAQ.
One number before we go deeper, because it frames everything that follows: the amount of book content stored in the app's database is zero. Not a cache. Not a copy. Zero. Let that sink in. The stack is Django 5 with HTMX and plain mobile-first CSS, and its SQLite database holds authentication and sessions โ nothing else. The roughly nine hundred Markdown files in the site's git repository remain the single source of truth, exactly as they were the day before the app existed.
That's not a limitation. That's the entire point โ and honestly? That's beautiful.