DEV Community

Cover image for I Built a Multilingual Interactive Novel with Rust — ADHD Made Continuity the Hardest Part
Mario Gutierrez
Mario Gutierrez

Posted on

I Built a Multilingual Interactive Novel with Rust — ADHD Made Continuity the Hardest Part

Ideas are not the scarce resource for me.

Returning to an idea without losing its emotional logic, technical decisions, names, dates, and unfinished questions is much harder.

I live with ADHD. Starting an ambitious project can feel natural; holding its entire continuity in working memory for months does not. I can see a flooded city, a biomechanical implant, a character, and a complete scene with painful clarity—and then return days later unable to reconstruct why one small decision mattered.

That is how La Novena Marea stopped being only a manuscript and became a system.

It is a serialized, illustrated hydropunk novel set in 2648. The polar collapse did not cover the whole planet, but it destroyed the old idea of a stable coastline. Humanity survived through floating communities, conservative biomechanical adaptations, distributed intelligence, and uneasy coexistence with nonhuman civilizations that had hidden among us for centuries.

The website currently publishes the story in Spanish, English, and Brazilian Portuguese. It includes a prologue, the first chapter, a glossary, a technical world compendium, and an interactive atlas.

But the most important thing I built was not a page.

It was a way to return.

Iria Salvat listens to an impossible transmission inside a rain-soaked structure in San Telmo.

Iria Salvat receives a signal attributed to an intelligence that has been officially silent for forty-two years.

A novel can become a software architecture problem

The normal advice for publishing fiction online is reasonable: choose a CMS, install a theme, and start posting.

That was not enough for what I wanted.

The prose needed to remain readable without JavaScript. Every language needed its own static routes, metadata, canonical links, and social cards. Illustrations had to participate in the storytelling instead of behaving like decoration. Motion could add atmosphere, but it could never hold the text hostage. The atlas had to explain relationships between a signal, its origin, an altered route, and a community at risk.

I also wanted the technology to reflect the same principle as the world: survival through systems that remain understandable when one layer fails.

So I built the project around two frameworks I have been developing: PliegoRS and PliegoCSS.

The current responsibility boundary looks like this:

Spanish canonical manuscript
          ↓
PliegoRS
content · routes · semantic HTML · metadata · hreflang
          ↓
PliegoCSS
compiled structural CSS · no browser runtime
          ↓
JavaScript adapter
progressive motion · Atlas WebGL · newsletter enhancement
          ↓
Cloudflare Pages + Workers
Enter fullscreen mode Exit fullscreen mode

PliegoRS is the Rust-based publishing layer. It owns the content model, routes, HTML, structured metadata, localized surfaces, and build receipt.

PliegoCSS compiles the structural style contract into standard CSS. The build checks that every emitted pc_* class actually exists in the compiled stylesheet. A matching version string is not considered enough evidence; the HTML and CSS must agree.

JavaScript is an adapter, not the owner of the book. If it fails, the prose, navigation, glossary, and static Atlas records still exist.

That separation became one of the most useful accommodations I made for myself. When I return to the project, I do not have to rediscover which layer is allowed to make a decision.

Responsive images are also narrative direction

One of the first painful mistakes appeared on a 13-inch iPad Pro.

The images were technically responsive. They had srcset, large sources, and fluid dimensions. They were also wrong.

A crop that looked cinematic on a phone could remove the direction of a character's gaze on a tablet. A large illustration could overlap the glossary because its layout context was incorrect. Two characters could appear together without looking at one another, turning an emotional scene into something uncanny.

I learned that image responsiveness is not only resolution selection. It is art direction.

The project now uses separate 16:9, 4:5, and 9:16 compositions where the scene requires them. Narrative illustrations ship with 1920- and 3840-pixel derivatives. Technical plates use object-fit: contain because cutting away a mechanism would also cut away information.

The current QA matrix exercises 21 indexable surfaces across six viewport configurations—126 route and viewport combinations—covering desktop, mobile, short landscape, and both orientations of an emulated 13-inch iPad Pro.

Emulation is not described as hardware proof. That distinction is written into the release criteria.

Humans and members of the Casas Veladas share a public exchange hall after centuries of concealment.

The nonhuman civilizations are neither saviors nor monsters. They are fallible neighbors responsible for the consequences of their silence.

Three.js needed a reason to exist

The first version of the Atlas looked impressive and communicated almost nothing.

It had depth, a grid, points, and movement. I could interact with it, but I could not explain what the interaction meant.

That is a design failure, even when the shaders work.

The Atlas was rebuilt around four questions:

  1. Where did this signal originate?
  2. Which route did it alter?
  3. Which civilization is exposed?
  4. What is the consequence of acting on incomplete evidence?

Three.js now enhances those relationships. It does not invent them. The same five records remain available as semantic HTML when WebGL, JavaScript, reduced-motion preferences, or data-saving conditions prevent the immersive layer from running.

That rule—the effect must explain something already present in the document—saved the Atlas from becoming a technology demo inside a novel.

You can inspect the current instrument in the Living Atlas.

Translation multiplies decisions, not only words

La Novena Marea is written in Spanish first. Spanish is the canonical narrative source.

English and Brazilian Portuguese are complete static editions, not runtime dictionary substitutions. IDs, dates, relationships, and evidence levels stay fixed. Titles, dialogue, prose, alternative text, navigation, metadata, and email messages are localized.

That means a new sentence can affect:

  • three manuscripts;
  • three routes;
  • three metadata sets;
  • long-word and diacritic behavior;
  • headings and image captions;
  • the glossary and compendium;
  • newsletter messages;
  • accessibility text.

The current site has 21 indexable surfaces: seven per language.

More languages are planned, but adding them all at once would be another form of losing continuity. French is the likely next edition; Chinese and Japanese would require a dedicated CJK typography and editorial pass. Spanish will remain the source of truth.

Documentation became an accessibility tool for my own attention

Documentation is often described as something written for another developer.

In this project, I am also that other developer.

I maintain:

  • a world bible;
  • a glossary;
  • a season outline;
  • a compendium contract;
  • a visual system;
  • exact distinctions between facts, official claims, testimony, and unresolved questions;
  • a continuity audit that refuses to silently accept changed authority files;
  • a release definition that separates automated validation, visual inspection, and real-device evidence.

These are not attempts to remove spontaneity. They protect it.

When I know that the year is recorded, the meaning of an implant is bounded, and an unresolved mystery has not accidentally become a fact, I can spend my attention writing the next scene instead of rebuilding the previous one.

I also use an AI assistant as a continuity and editorial collaborator. It helps me retrieve decisions, compare localized editions, inspect the implementation, and organize material. It does not get to silently ratify canon. New facts remain proposals until I approve them.

That boundary matters to me.

A field plate documents a bone compass as material, flow, maintenance, and failure—not as unexplained magic.

Every technology in the compendium needs an origin, material, maintenance burden, access cost, failure mode, and social consequence.

The publishing rhythm is part of the experiment

The editorial target is three chapter releases per week.

I am calling it a target, not a proven cadence. A schedule only becomes real after it survives contact with writing, translation, illustration, responsive QA, and ordinary life.

The system is designed to make that rhythm possible:

  • Spanish first;
  • continuity and evidence check;
  • English and Portuguese localization;
  • image and layout verification;
  • static build;
  • SEO and accessibility gates;
  • production smoke test;
  • publication notification.

If the process becomes too heavy, the answer is not to publish unreviewed material. The answer is to improve the system or adjust the cadence honestly.

What I would tell another developer building a long creative project

Do not rely on motivation to preserve continuity.

Give every layer a clear owner. Make the canonical source explicit. Record mysteries as mysteries. Test images for meaning, not only dimensions. Treat graceful degradation as part of the design. Separate what a tool verified from what you actually inspected.

Most importantly, build a return path.

A project that welcomes you back after your attention moved elsewhere has a much better chance of becoming real.

La Novena Marea is public and free to read at lanovenamarea.com.

If you want an email only when a new chapter is published, the newsletter is available at the end of the archive. It is optional, uses double opt-in, contains no advertising or commercial email, and deletes unconfirmed requests after a limited reminder cycle.

I am publishing the work as terrizoaguimor.


AI assistance disclosure: I wrote this article from my lived experience, project notes, code, and editorial decisions. I used Codex as a continuity and editing assistant to organize the material, verify technical claims against the working project, compose the draft, and refine the English. I reviewed and remain responsible for every statement before publication.

Top comments (0)