A New Beginning: Why We're Rethinking OutaStory

A New Beginning: Why We're Rethinking OutaStory

visionindie-autorenplattformfantasysci-firelaunch
Fiction

A New Beginning: Why We're Rethinking OutaStory

An empty canvas, ready for new ideas Photo: Unsplash

There are moments when you realize that a patchwork of small improvements just isn't enough anymore. You could bolt on one more workaround, add one more table column, layer a bit more CSS over the problem — but at some point the more honest decision is to pour the foundation anew. That's exactly what we did with OutaStory.

This first post in our relaunch series explains the why. Not the how — that's coming in the following weeks. Rather the motivation behind it, the picture in our heads that carried us through a complete rebuild.

What OutaStory is meant to be

OutaStory is a platform for German- and English-speaking indie authors who write fantasy, romantasy, and science fiction. The core idea is simple: writers should be able to publish without fronting any money. Readers should be able to pay for good stories without committing blindly right away.

That sounds simple. In practice, though, it means making a lot of decisions that influence each other:

  • What does the monetization model look like so it's fair to both sides?
  • How do you build a library that grows without becoming confusing?
  • How do you give authors tools without overwhelming them with technology?
  • How do you make stories readable and listenable across six platforms at once?

The old version of OutaStory answered these questions — but answers that, over time, contained more and more compromises. The new build gives us the chance to approach this cleanly.

The starting point: what's actually needed

I spent a lot of time looking at why indie authors struggle with existing platforms. The most common points I heard:

Rights and control. Many platforms demand far-reaching licenses. Authors submit their stories without knowing whether the platform will still exist tomorrow or whether their texts will be reused somewhere else. On OutaStory, the rule is: whoever publishes something keeps all rights. We get a license to display the content on the platform — and that's it.

The barrier to entry is too high. Other platforms charge fees before the first reader has even opened the first page. That doesn't work for authors who are just starting out. That's why publishing on OutaStory is free. Always.

No audio format. The audiobook format is booming, but most writing platforms don't offer audio, or only for an extra fee. We build audio directly into the publish flow — with Azure Speech HD Voices that sound like real narrators.

Poor discoverability. If a platform has 50,000 stories and the search only filters by title, that's frustrating for everyone. That's why we invested from the start in a structured category hierarchy and Azure AI Search.

The tagline promise

"Your World, Your Stories — Write, Read, Listen." Three verbs. Each stands for a concrete product promise:

Write means the publishing process should be so frictionless that an author can focus on the text. The three-step publish wizard takes the technical burden off her shoulders: enter metadata, generate or upload a cover, choose an audio format. Done.

Read means the reading interface is clean, works on every device, and puts the story front and center. No distracting navigation, no pop-up after two paragraphs.

Listen means every story can get an audio version — automatically, without the author having to set up a microphone or book a recording studio.

A writer at her desk, surrounded by notes and ideas Photo: Unsplash

Why a complete rebuild?

You often hear: "Wouldn't incremental refactoring have made more sense?" Sometimes, yes. Not here — for a concrete reason: the new system needs a different data structure.

The old version had a flat category list. The new system has a four-level hierarchy with 302 categories. That change alone runs through the database schema, the API, the search index, and the UI. On top of that comes slug-based navigation for stories and authors, which didn't exist in the old version. And the audio system, which is driven asynchronously via Azure Service Bus and tightly interwoven with the publish flow.

In short: these aren't features you bolt on. They're structural decisions that touch the foundation. So we rebuilt.

The tech stack — a brief justification

Since I'm a developer and this is a dev log, a short explanation of the technology choices:

.NET 10 with Blazor Hybrid means we have a single codebase for web, Windows, macOS, iOS, iPadOS, and Android. That's not a compromise — Blazor Hybrid with MAUI is mature enough that we get good performance on every platform. We're not writing React Native, not Flutter, not separate Swift. One codebase, six platforms.

.NET Aspire takes care of orchestrating the local development environment for us. API, database, Service Bus, blob storage, search — everything starts with a single command. That sounds like a detail, but it's an enormous advantage for development speed.

Azure Container Apps for deployment, Auth0 for authentication, Azure Key Vault for secrets. Every one of these decisions is documented and justified, and none of them locks authors into proprietary formats.

What's coming in the next few weeks

Each week, a post will explain a concrete building block of the relaunch:

  • How the four-level category hierarchy is structured and why 302 categories aren't chaos
  • How the 42 flagship stories that fill the platform at launch came to be
  • How AI-generated covers are integrated into the publish flow
  • How the audio system works with Azure Speech HD Voices
  • How slug-based URLs improve discoverability and linkability
  • What the monetization model looks like, one that's fair to everyone involved
  • What multi-platform optimization for 4K screens, iPads, and mobile devices looks like

What's next?

Next week: how we structured a library with 302 categories into four levels — and why that makes a real difference for readers.


Comments (0)

No comments yet.


Leave a comment

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.