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 — 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.
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_words
Get the dependencies:
flutter pub get
Run the app:
flutter run
Make sure you have the appropriate platform toolchains installed. Refer to the official Flutter docs if needed.
Found a bug or want to request a feature?
-
Go to the Issues page
-
Click New issue
-
Choose Bug report or Feature request
-
Fill in the template with as much detail as possible:
- Steps to reproduce
- Expected vs actual behavior
- Device and OS info
- Screenshots (if relevant)
Your feedback helps make Open Words better — thank you! 💛
MIT — free to use, modify, and share ❤️