![Phone_demo Phone_demo](/wp-content/uploads/elementor/thumbs/Phone_demo-qkks2hr2gwc510xnrjribg0b5nkbklv5r5i7mzagv0.png)
Rosetta
Language learning Web App powered by AI.
Role: Ideator, designer, developer
Rosetta
Language learning Web App powered by AI.
Role: Ideator, designer, developer
![Phone_demo Phone_demo](/wp-content/uploads/elementor/thumbs/Phone_demo-qkks2hr2gwc510xnrjribg0b5nkbklv5r5i7mzagv0.png)
Tech Stack
Front-end
UI & UX design, Figma, Ionic React – TypeScript, i18next Localization, Google Analytics, Web APIs, npm.
Back-end
Python, OpenAI, LLM, Speech Recognition, Prompt Engineering.
Platform
AWS serverless architecture, Infrastructure as a Code (AWS CDK), GitHub.
![figma](/wp-content/uploads/elementor/thumbs/figma-qkm6oj2e5epemwwm4h8tfumpqhe5wk104lkshd8oow.png)
![800px-Ionic_Logo.svg](/wp-content/uploads/elementor/thumbs/800px-Ionic_Logo.svg-qkm6og8vkwljo30pky0xqdcbybs29gpt47mc1jcv7k.png)
![React-icon](/wp-content/uploads/elementor/thumbs/React-icon-qkm6nrt2n7o3a807jngmxjicib4ipc0scunpkcd3pc.png)
![typescript](/wp-content/uploads/elementor/thumbs/typescript-qkm6nfl66d7d3ahyj06hj4lcsasqx9o9z66ebqv7y8.png)
![inext_logo_icon_170003](/wp-content/uploads/elementor/thumbs/inext_logo_icon_170003-e1709377532496-qkm790xp6crhst4tfu6yb6fk1ydaqyeam1oy7kun0g.png)
![google-analytics-icon-512x512-do18bb33](/wp-content/uploads/elementor/thumbs/google-analytics-icon-512x512-do18bb33-qkm6navz870xh8osag5cons1tdfwus5maiwyxd26tc.png)
![python-5-logo-png-transparent](/wp-content/uploads/elementor/thumbs/python-5-logo-png-transparent-qkm6mt11mcchcneq6qffvaaaj1vxsj6pw2iqt3so3k.png)
![openai](/wp-content/uploads/elementor/thumbs/openai-qkm6miotj5ybsxtqv3yjluw7ztawfv1o6ncej28000.png)
![neural_network](/wp-content/uploads/elementor/thumbs/neural_network-qkm6mgt55hvr5pwh635agvdat1k60gu7ie1fkiascg.png)
![aws_icon_146074](/wp-content/uploads/elementor/thumbs/aws_icon_146074-qkm6mdzmkzrw6w0kmjxere2x0vy2ddj0i02z4oeyv4.png)
![aws_cdk](/wp-content/uploads/elementor/thumbs/aws_cdk-qkm6mc3y7bpbjo3axj45mejzu47bxzbjtqs064hr7k.png)
![github](/wp-content/uploads/elementor/thumbs/github-e1709377475173-qkm77if25yov3fc0a6mlak6tllu0cidv2jusdj3h1c.jpg)
The problem
Learning a new language is hard and requires some work. There is no shortcut or optimization that you can use to avoid doing a lot of practice.
And how do you practice? Exercises, exercises, exercises.
Where do you find exercises? Language learning course books and online of course!
But if you tried to do homework alone, you know the struggle, exercises are not always clear, you are not sure if your answers are correct, you don’t have someone to practice with, and you have a lot of questions that only a 24/7 tutor can answer. But can you afford it?
I can’t, that’s why I’m building Rosetta!
Solution Approach
My approach was to create an App-like experience, without the overhead of building, publishing, and maintaining a native app for the various platforms.
That’s why I decided to build a Progressive Web App that can be installed on smartphones and tablets or used directly from the browser.
The front end is Made of React (Ionic Framework), and the back end is serverless and written in Python. For now, it relies on OpenAI, but I plan to extend it with self-hosted LLMs.
I’ve chosen Ionic because It will permit me to build the native app versions without changing the codebase if I decide in the future to publish it to the respective marketplaces.
For the back end, serverless was the natural choice due to the atomic nature of the requests and the low traffic at this early stage.
Python is the language of Artificial intelligence, that’s why I’ve chosen it, libraries, guides, ease of deployment, and so on.
I’ve chosen to host everything on AWS because this is the cloud service provider that I know best and where I know how to deploy everything I need.
Challenges
Cost surge
How to prevent cloud service costs from unexpectedly increasing due to spikes in usage or DDoS?
CORS is disabled, the APIs are protected by AWS Shield and the OpenAI costs are limited to a certain amount.
Design and usability
I’m not a UI/UX expert, which is why I’m reading a lot and following courses on this topic. At the same time, I’m actively showing my app to potential users and observing their behavior. This approach not only allows me to refine the app continually but also helps me develop my expertise in the UI/UX domain of digital projects.
Speech recognition
The speech recognition functionality is currently the most challenging aspect of the app’s development. Despite testing two different approaches with some level of success, the performance has yet to meet my expectations. To address this, I plan to deploy a self-hosted speech recognition model and enhance its responsiveness by implementing real-time connectivity through webhooks soon.
Results
Rosetta is a Progressive Web Application now available for free at https://rosetta.maurocherchi.com.
![Chat welcome](/wp-content/uploads/2024/03/Screenshot_20240301_173839_Chrome.jpg)
![User first message](/wp-content/uploads/2024/03/Screenshot_20240301_173924_Chrome.jpg)
![Wait tutor correction response](/wp-content/uploads/2024/03/Screenshot_20240301_173930_Chrome.jpg)
![Tutor correction response](/wp-content/uploads/2024/03/Screenshot_20240301_173949_Chrome.jpg)
![Change request type](/wp-content/uploads/2024/03/Screenshot_20240301_174020_Chrome.jpg)
![User second message](/wp-content/uploads/2024/03/Screenshot_20240301_174044_Chrome.jpg)
![Wait tutor examples response](/wp-content/uploads/2024/03/Screenshot_20240301_174048_Chrome.jpg)
![Tutor examples response](/wp-content/uploads/2024/03/Screenshot_20240301_174102_Chrome.jpg)
![Available languages](/wp-content/uploads/2024/03/Screenshot_20240301_174207_Chrome.jpg)
![Home screen](/wp-content/uploads/2024/03/Screenshot_20240301_173820_Chrome.jpg)