Language Bot
Interactive Korean learning workflow.
This private application suggests new Korean words for my vocabulary deck in Anki. This happens through an LLM agent that is aware of words I have already learned. New suggestions are presented with their English translation, explanation, and an example sentence to study with. With a click of a button, I can automatically add the new word to my Anki deck.

A language bot?
Yes, this is something that comes in quite handy. After learning the basics of Korean, I had built a decent core vocabulary in my Anki deck. However, actively searching for new words can get tedious, which is why I wanted to build this project.
It adds to my learning workflow and helped me better understand Docker networking, API integration, and HTTP requests. More on the technical side below.

Application architecture
The application is split into several connected services. I host the website on a VPS and deploy with Docker. The website itself is built with Next.js and uses an SQLite database to store seen vocabulary. The Hermes agent lives in another Docker container on the VPS and can communicate with the web app through HTTP requests in a private Docker network. Once I decide to add a word to Anki, the web app makes API calls to AnkiConnect, which adds the word to a local Anki collection and synchronizes that collection with AnkiWeb. Since I still want to be able to add cards manually, I run a small n8n workflow once a day that checks for new words in my Anki deck and adds them to the SQLite database to avoid Hermes suggesting them.