🗓️
Raven Tales
Raven Tales
Raven Tales
There are countless language apps that look different but teach the same way: quick quizzes, streaks, and minigames that feel productive but rarely carry into real conversations. People often avoid long reading because it’s hard in a language they don’t know well. TV shows and podcasts can be intimidating for the same reason. Most of the time the blocker isn’t speed, it’s vocabulary. Learners think, “they speak too fast,” when the real problem is not knowing enough words to anchor meaning. RavenTales tackles that head-on by building vocabulary through context. It gives you stories that you can actually follow, and it grows your word base inside narratives so listening and speaking become less overwhelming later.
RavenTales teaches with AI-generated stories tuned to your level. If you’re A1, you get short, tightly controlled passages; at B1, scenes get longer with familiar patterns; by B2 and beyond, the narrative widens and syntax stretches naturally. You can pick topics you care about, and there’s also a guided path: if you don’t choose, RavenTales recommends story topics from core categories—travel, food, family, clothing, everyday errands—so you cover the essentials in context, not as disconnected flashcards. Parallel translation is available line-by-line when you need it, so you stay in the flow instead of bouncing between tabs. The point is simple: make context the default, let practice ride on top of it.
I built the system as microservices so it can live beyond one interface. I’m a Unity developer, and I want the same backend to power a clean web reader today and a gamified Unity client tomorrow. Each service owns its data, which lets me track usage precisely and control token spend for story generation with OpenAI, caching results when it makes sense. The stack is pragmatic: C#/.NET for the services, SQL for persistence, and a React frontend. Inspiration comes from platforms like SpanishDict that make meaning and form visible side by side; RavenTales pushes that into full stories at the right level across multiple languages.
Under the hood, the system includes StoryService, TranslatorService, UserAuthService, ProfileService, and VocabularyService, with a DictionaryService planned. TranslatorService is designed to switch providers, including Azure Translator and Google Translate, and to plug into a broad synonym-and-usage corpus to surface examples of the same word across different contexts. A writing feature is also in the plans: after reading a story, learners can write a short response to demonstrate they understood the context, reinforcing new vocabulary in their own words.
The project is in active development. I’m documenting the design and APIs in GitHub.
