Introducing Idiom
A very brief background of Idiom.
Written by:
2024-10-25
Tags:
Background
Idiom is a project I started not long after learning the basics of web development. The first iteration was nothing more than a simple flashcard exercise that looped over an array of word objects. At the time, I had just learned what arrays and objects were, so the entire project consisted of a single HTML, CSS, and JavaScript file—no frameworks, no libraries, no dependencies, no tests. The JavaScript’s only job was to read properties from the indexed words in the array. There was no user input beyond a few onClick events, and the flashcard didn’t even have a flipping animation at first—it simply displayed the translation when clicked.
Still, I was proud of it and excited to take it further. As I continued learning, I made a point of integrating new tools and concepts into Idiom while being careful not to get too far ahead of myself. I knew that if I moved too fast without fully understanding what I was doing, I’d end up with tightly coupled code and a frustrating mess.
Moving to React
Once I had learned the basics of React, I decided to develop Idiom further. This was when I defined the core set of exercises. At this stage, there was no routing—selecting an exercise would simply re-render the page with the appropriate UI and state. As I gained more experience with React, I improved component composition, added more features, and made the app more dynamic.
A Client-Only Version
Right now, I’m using a client-side only version of Idiom to gather feedback from a small group of users. Before locking in features, database structure, and other elements of the full-stack version, I wanted to test the app myself and get input from others. Building this client-only version has allowed me to do that quickly. See the demo here but keep in mind it is a very rough draft!
Taking It Further
I’m currently working on turning Idiom into a full-stack application. The MVP will include all the current exercises from the demo, along with a better UI/UX—since the demo is more of a rough draft. Future iterations will expand on this with additional exercises, games, and tests.
One feature I’m particularly excited about is allowing users to paste texts from foreign language sources and generate exercises from them. I’m also exploring AI-driven tools to create gapped sentences based on a user’s vocabulary cards.
My ultimate goal is to get Idiom into the hands of a solid number of users and make it a genuinely useful and engaging tool for language learning. If I can achieve that, I’ll have successfully merged my past experience as a foreign language teacher with my current work as a software developer.
So What is Idiom?
At its core, Idiom is a place to store and practice vocabulary cards. Users can create their own personalized decks, adding words and translations to help them reinforce their language learning. But it’s more than just a digital flashcard system—I’m designing it to be a flexible and dynamic tool that adapts to the user’s needs.
One of the key areas I’m expanding is support for handling larger texts. Instead of just individual words, users will be able to input full sentences or paragraphs from foreign language sources and generate exercises from them. This allows for a more immersive learning experience, helping users engage with real-world language in context rather than just isolated vocabulary.
A feature I personally love as a user is the ability to dynamically create decks based on tags assigned to each word. For example, a user might tag words with categories like "noun," "positive," or "family," allowing them to generate customized study sessions based on specific themes or word associations. This makes it easy to focus on certain aspects of the language at any given time, whether that’s grammar, emotional tone, or specific topics. Crucially, this means that words won’t always appear alongside the same set of words. By mixing them into different decks based on their tags, users encounter vocabulary in varied contexts, reinforcing connections and preventing rote memorization of fixed word groupings.
To help reinforce learning, Idiom also incorporates a simple spaced repetition system. Words that haven’t been reviewed in a while or ones the user struggles with will appear more frequently, ensuring that weak areas get the attention they need. This helps prevent vocabulary from slipping away over time and makes the learning process more efficient.
Ultimately, Idiom is designed to be a flexible and engaging tool that adapts to different learning styles, making language practice both structured and intuitive.