Duostories

Duostories

Goal

Duolingo offers format of short stories in some of their courses, but not all. I wanted to change that.

Duostories is a community effort to translate these stories to more languages.

We have currently translated over 2000 stories in over 70 for our 5k registered users.

Challenges

To create this community project, it first required me to reverse engineer how the data is loaded in the website of Duolingo, so I could scrape the stories date from the website. To be able to use their material in a legal way I needed to contact them and negotiate a license agreement.

Then a big challenge was to select the tech stack to use for this project. My first attempts to use a LAMP server with a PHP backend and a mysql database got a first prototype running quickly, but I realized that in order to keep the app maintainable. I need to upgrade to a more modern stack. Therefore, I transitioned first to a React frontend and a node.js express backend, but finally settled on a next.js stack which includes frontend and backend in a smooth way with React server components. From the initial mysql database I switched to postgres as it has more advanced features, for storing arrays of json objects.

Hosting the project was another major challenge. I started with a rented server where I had to take care of all the devops tasks to keep things running. But without a big team this provided quite challenging, therefore I switched to a hosted service "vercel".

Growing and maintaining the community provided another great challenge. Initially I used the Duolingo forum to communicate with contributors and users, but had to move to Discord as the Duolingo forum closed. With an active Twitter and Instagram account for the project I keep advertising for the project.

Duolingo Approved

I negotiated with Duolingo a special license to cover our project and allow use to use their material.

Duolingo Founder and CEO Luis von Ahn himself signed this license on which this project is based.

AI driven speech

To provide the best learning experience Duostories provides audio for the stories.

For a consistent and reliable audio experience Duostories integrates text-to-speech (TTS) services from various providers.

Why various and not just a single one? As Duostories is aimed to cover as many languages as possible we need to take advantage of multiple providers.

Currently, we use Google, Amazon, Microsoft and Eleven Labs

Easy Editing

Stories are not just simple texts as they include interactive exercises, translation tooltips and audio.

To keep the editing experience as smooth as possible I developed a specially tailored markup language to represent the stories.

A codemirror based editor with a synchronized live preview makes editing a breeze.

Welcoming Community

To ensure good quality of translations into as many languages as possible. Duostories relies on a big group of contributors managed in our Discord Community.

Our automatic Discord bot helps with the onboarding of new members and gives them access to the editor once they are approved.

Our quality control system ensures that only stories approved my the community are published.