Background
I’ve been meaning to pick up a new language for the past couple of months but have been pretty indecisive about which to choose. I wanted to take on the challenge of learning another language after tackling Mandarin Chinese on-and-off for the past few years.
Initially, I decided on Japanese mainly due to manga and anime, and went through the process of memorizing all the katakana and hiragana. Despite all of that, I was still unsure if I wanted to commit to Japanese. And so, I decided to restart the process with another language. I pivoted to Korean and memorized the entire alphabet, but ended up with that same sense of uncertainty.
I’m still not sure what caused this hesitancy. Was it the perceived difficulty of the languages? Or perhaps my motivation for learning these languages wasn’t convincing enough: I had picked up Mandarin to better connect with my heritage. Regardless, I had to choose a language lest I remain in a state of decision paralysis.
After some consideration, I’ve decided on Spanish and am resolved in that decision. It just so happens to have the both the benefit of practicality and (relative) simplicity. I don’t know why I didn’t consider it from the outset, though it might have something to do with bad memories of high school Spanish.
Having not touched Spanish for several years, I had basically forgotten all the conjugations, except for the present tense and some irregular ones (e.g., sé, as in one of my most used phrases: “yo no sé”). I even had to relearn the definitions of the preterite and imperfect tenses. Fortunately, I was able to find ConjuGato, which serves as an inspiration for this app.
Introduction
The app is exactly what it sounds like: it provides conjugation-based quizzes. The user is able to select the tenses they want to practice. I’ve also included the option to enable or disable vosotros, which is only used in Spain. Other features include a question timer and score tracker, with more coming soon.
This isn’t my first attempt at creating a language-based tool for myself: I created a Chinese learning application a while back. I wanted to model that app after Pleco, but found the inability to properly sort dictionary results extremely frustrating. Without a proper ranking algorithm, the dictionary lookup and app itself felt unusable. And so, that was the end of that.
Tech Stack
The conjugation logic is provided by this library that I created with the help of Gemini CLI. One of the most time-consuming parts of creating a conjugation library is simply handling the irregular conjugation edge-cases. In this case, AI greatly reduces the time and effort required.
The user interface and logic of the web application is built with React and TanStack. The backend server handling the API calls uses FastAPI. I also utilized Gemini CLI to create this application1.
The application is hosted on Vercel.
Features
Current:
- Tense filtering
- Timer and score tracking
- Conjugation charts
- Vosotros toggle
Planned:
- Categorization of verbs into regular and irregular
- Tense definitions and examples
- Support for more verbs (including reflexive)
- Verb filtering (based on frequency)
- Voseo support
Footnotes
-
I’m aware of the polarizing nature of AI and would like to write a post it when I get the chance. ↩