Ovidhan is a modern, feature-rich, and offline-first English to Bangla dictionary with no ads and tracking application built with the Ionic Framework and Vue.js. It is designed to be fast, efficient, and user-friendly.
- Dual Language Search: Instantly search for words in either English or Bangla. No more switching of button for searching.
- Word of the Day: A new word is automatically selected each day. You can opt-in to get notification of it everyday.
- Comprehensive Word Details: View detailed information for each word, including pronunciation, parts of speech, synonyms, and antonyms in both languages.
- Quiz: Test your vocabulary.
- Persistent User Data:
- Favorites: Save words for future reference.
- Recent Searches: Quickly access your search history.
- Customizable User Experience:
- Dark & Light Mode: Automatic and manual theme switching.
- Adjustable Text Size: Change the font size for improved readability.
- UI Language Switching: Toggle the app's interface between English and Bangla.
And many more are coming (probably)
- Framework: Ionic with Vue.js
- Language: TypeScript
- Native Runtime: Capacitor
- Package Manager: pnpm
- CI/CD: GitHub Actions for automated Android builds and releases.
- Node.js (v20 or later recommended)
- pnpm
- A Java Development Kit (JDK) for Android builds (v21)
-
Clone the repository:
git clone https://github.com/doomkey/ovidhan cd ovidhan -
Install dependencies:
pnpm install -
Run for development: This will start a local development server with hot-reloading.
ionic serve
For any other details, please refer to official Ionic and Vue docs.
This project uses several build-time scripts to process the dictionary data for optimal performance.
Important: You only need to run these scripts if you make changes to the source BengaliDictionary-*.json files in src/resources/. You may not run these though. BUt the instructions are here for clarification.
-
process-dictionary.js:- What it does: Reads all source dictionary files, lowercases all English keys, merges any duplicate entries, cleans Bangla synonym/antonym lists by removing any English characters, and re-splits the cleaned data back into the
src/resources/directory. - When to run: Run this script first if you have modified the raw dictionary data.
- Command:
node src/scripts/process-dictionary.js
- What it does: Reads all source dictionary files, lowercases all English keys, merges any duplicate entries, cleans Bangla synonym/antonym lists by removing any English characters, and re-splits the cleaned data back into the
-
generate-bangla-index.js:- What it does: Creates a highly optimized, minified
src/generated/bangla-index.jsonfile. This file maps every Bangla word to the location of its primary English entry, for fast Bangla searches. - When to run: Run this after
process-dictionary.js. - Command:
node src/scripts/generate-bangla-index.js
- What it does: Creates a highly optimized, minified
-
generate-word-of-the-day-candidates.js:- What it does: Creates a minified
src/generated/wordOfTheDayCandidates.jsonfile containing a list of all words that meet the criteria for "Word of the Day" (e.g., having at least 3 synonyms). - When to run: Run this after
process-dictionary.js. - Command:
node src/scripts/generate-word-of-the-day-candidates.js
- What it does: Creates a minified
-
Sync web assets with the native project:
pnpm exec capacitor sync android -
Open the native project in Android Studio:
pnpm exec capacitor open android -
From Android Studio, you can build, run, and debug the app on an emulator or a physical device. If you dont want to use Android Studio, just use Gradle to build it.
BengaliDictionary-*.json files in src/resources/ contain all the words. If you want to use the words file, please credit https://github.com/MinhasKamal/BengaliDictionary
If want to add/update any word, go to the corresponding file,
for example to add the word dumb go to src/resources/BengaliDictionary-d.json. Then run node src/scripts/process-dictionary.js
