I gave up on Designing Data-Intensive Applications three times.
The third time, I built software to finish it. Six months later, that software is TextStack — open source, AGPL-3.0, free at textstack.app.
The friction
The problem wasn't the math. It was vocabulary.
Page 256 of DDIA uses "phantom" as a database isolation anomaly. The dictionary tells me it's a ghost. Google tells me it's a Rolls-Royce model. Kindle's Word Wise — same.
Every chapter has 5-10 words like that. Each lookup breaks the thread. I gave up on chapter 7 three times.
What I built
A reader that knows what book it's reading. Tap any word, get a 2-3 sentence explanation in the book's domain. "Phantom" in DDIA returns the database meaning, not the ghost.
The rest: upload your own EPUB/PDF/FB2 files; a vocabulary SRS with 5 stages (Recognition to Recall to Context to Mastered); Edge TTS audio with no API key needed; translation via OpenAI, dictionary, and full-text search.
Stack: .NET 10 + PostgreSQL backend, React + React Native frontend. Self-host with docker compose up, or try at textstack.app without signup.
Three weeks of clean data
25 unique users. 19 new, 9 returning. 32 minutes average engagement time per user. 8.2 sessions per active user. 44 Google clicks in 3 months on the broader trajectory.
Most of those 25 are people I told directly. The 9 organic strangers are scattered: US, Ireland, Pakistan, Colombia. Tiny audience, but the engagement says the ones who find it actually read.
The hard part: my audience — non-native English speakers reading technical books in English — is real but globally distributed. They're not concentrated in one subreddit or one country.
Two questions
If you've ever quit a technical book — what was the friction? Was it vocabulary like me, or something else I'm missing?
How did you find your first 100 real users when your audience isn't in one place? Open to anything that worked.
github.com/mrviduus/textstack — happy to dig into any technical decisions in the comments.
This is a strong insight. The interesting part to me is that the language barrier here is not just a writing problem, it is a meaning-preservation problem. A lot of people can explain the idea in their head, but lose confidence, specificity, or personality when they have to communicate in a non-native language. Curious whether users talk more about better wording, or about feeling like their original intent survives the translation better.
Good distinction — though for TextStack it's actually the reverse. You're describing the output side: getting your own intent into a non-native language. TextStack is the input side — reading someone else's text without losing what they meant.
Same core problem though. I can look up "phantom" and still miss the exact database anomaly the author meant. A dictionary gives me the word, not "what it means here, in this paragraph."
So honestly users don't ask for better translations — they ask for the meaning to actually land in context.
What's speechara? Sounds like you're building the output side of this.