Open Words is a simple yet powerful app for creating personal dictionaries, reviewing vocabulary through games, and learning foreign languages.
This app is the next generation of my earlier .NET MAUI, now fully rewritten in Flutter with expanded functionality and a modern UI..
For the best results, use English as the base language along with the language you're learning.
All features are designed to help you stay organized and make learning more interactive and fun.
-
🎙️ Text-to-Speech support and configuration — listen to word pronunciation.
-
🎨 Multiple themes and color schemes — choose the look that suits you.
-
📁 Create folders and dictionaries — organize your vocabulary into structured groups.
-
🎮 Games based on your dictionaries — reinforce learning through interactive practice.
-
🌐 Quick translation in browser or with AI — open words in a translator with one tap.
-
🔍 Fetch metadata for English words — get meanings, definitions, phonetics, synonyms, and antonyms (English only for now).
-
📤📥 Export and import dictionaries — share or save them locally.
Currently, to use AI, you need to have a server (your computer that can run LM Studio or a similar software).
At first glance, it may look hard, but it’s actually easy and secure.
Check out my tutorial on how to set up LM Studio.
The app uses a clean and simple JSON format for importing and exporting dictionaries. Internally, Open Words stores data in a local SQL database for performance and scalability.
The JSON data can be provided in two forms:
A single dictionary object:
{
"name": "Nature",
"origin": "en",
"translation": "uk",
"words": [
{ "origin": "tree", "translation": "дерево" }
]
}Or an array of dictionary objects:
[
{
"name": "Nature",
"origin": "en",
"translation": "uk",
"words": [
{ "origin": "tree", "translation": "дерево" },
{ "origin": "garden", "translation": "сад" },
{ "origin": "mountain", "translation": "гора" }
]
},
{
"name": "Animals",
"origin": "en",
"translation": "uk",
"words": [
{ "origin": "cat", "translation": "кіт" }
]
}
]The app will automatically detect and handle either format during import.
Each dictionary (or word group) is represented as an object inside a JSON array:
name: The title of the word group (e.g.,"Nature").origin: The ISO language code (e.g.,"en", "uk")translation: Same asorigin, but for the target language.words: An array of word pairs:origin: Word in the source languagetranslation: Corresponding word in the target language
This flexible and minimal structure makes it easy to back up, share, and transfer your vocabulary across devices.
Open Words fetches English word metadata — including definitions, phonetics, synonyms, and antonyms — from the Dictionary API, a free and open-source dictionary API.
Example API request for the word "advice":
https://api.dictionaryapi.dev/api/v2/entries/en/advice
You can find their source code and documentation here:
GitHub - meetDeveloper/freeDictionaryAPI
| Platform | Status | Notes |
|---|---|---|
| Windows | ✅ Fully tested | Stable and fully functional |
| Android | ✅ Fully tested | Optimized for phones and tablets |
| Web | UI works, but local database is not implemented yet | |
| Linux | ❓ Untested | Expected to work, but not yet tested |
| iOS | ❓ Untested | Expected to work, but not yet tested |
| macOS | ❓ Untested | Expected to work, but not yet tested |
🧪 If you test on an unverified platform, feel free to open an issue!
- Flutter SDK
- A device or emulator (Android, iOS, Windows, macOS, or Linux)
Clone the repository:
git clone https://github.com/sipasi/open_words.git
cd open_wordsGet the dependencies:
flutter pub getRun the app:
flutter runMake sure you have the appropriate platform toolchains installed. Refer to the official Flutter docs if needed.
MIT — free to use, modify, and share ❤️











