Table of Contents
Open Table of Contents
Overview
AI can be harnessed to empower new ways of learning that could not have been imagined even a few years ago. Given this new found technology, I wanted to revitalise the way in which a language can be learnt, which is why I developed Hanashi, an AI powered language learning application.
Core Features
Adaptive Learning
The system adjusts difficulty dynamically based on learner performance.
Conversation Mode
Conversation mode empowers users to learn through natural, authentic conversations. The AI partner is able to interpret meanings and succintly communicate thoughts and ideas back within an engaging dialogue.
Not only this, but the AI partner messages are interactable, resulting in the user being able to hear a voice recording of the message, translate or transliterate the message, or add a specific word to the word bank if they want to further study it.
Error Tracking
Of course, a language cannot be effectively learned without making mistakes. Because of this, the AI can recognize and highlight any grammatical errors back to the user to help them improve.
The specific error and correction is shown to the user, who can then decide if they would like to generate a βnoteβ regarding the error so they can study further and improve.
Note Generation
In order to satisfies the needs of the user, Hanashi generates rich, context-based notes that can be easily interpreted - allowing for effective extraction of meaning and information.
Notes include the type of error - which allows the user to easily distinguish and filter through their notes, a thorough description, relevant example sentences (with translation/transliteration) and if required, important context. The user also has the option of generating flashcards based on the note to further build knowledge.
Progress Tracking
A lot of information is required to be interpreted and absorbed when learning a language, which can be overwhelming. This is why it is helpful to use a system of spaced repetition learning. This is a system where fresh information is shown more often, as it will take more time for the information to be retained.
However, information that has proved to be well retained will gradually be shown less and less often as the user gets it correct more often than not. By implementing SRS, the user can effectively retain information as opposed to sporadically studying information with no system or technique in place.
Technical Architecture
Tech Stack
The codebase is a monorepo, which is split into three distinct parts. The backend containing the API, the landing page for the app and most importantly, the mobile app itself.
I decided upon this architecure as the project does not need to be overcomplicated with an architecture such as microservices, as only three distinct parts are required.
Turborepo
This project uses Turborepo, which is a highly effective build system optimized for JavaScript and TypeScript. Turborepo provides a highly performant build system that is fast, responsive and easy to intergrate, which saved me a lot of time and struggle when building the project.
Turborepo makes it easy to scale monorepos, which is traditionally difficult to do. It does this by giving each workspace its own test suite, linting and build process.
Roadmap
Planned features and future improvements.
Conclusion
Summary and next steps.