Argot is a premium, offline-first vocabulary learning application designed to help users expand their lexicon with style. Built with React Native and Expo, and styled with NativeWind, it offers a sleek, dark-mode-first experience.
- 📚 Vocab Builder: Easily add new words and definitions to your personal library.
- 🧠 Interactive Quizzes: Challenge yourself with various quiz modes to test your retention.
- 🤖 AI Integration: Receive instant feedback on your sentence usage with Google Gemini.
- 🗂️ Word List: Browse and review your collected words in a clean, organized interface.
- ✨ Premium UI: A polished dark-themed design using Tailwind CSS for a modern aesthetic.
- 💾 Persistence: Data is saved locally using Async Storage, ensuring your words are always with you.
- 📳 Haptic Feedback: Tactile responses for interactions using Expo Haptics.
- 🌍 Multi-Language Support: Built-in support for diverse languages with flag indicators.
Note: Full multilingual support is currently in development. The application is fully functional for English vocabulary.
The application utilizes a multi-tiered dictionary system to ensure broad coverage:
1. Primary Source: Free Dictionary API
- Usage: First-line lookup for definitions, part-of-speech tags, and phonetics.
- Coverage: Standard English vocabulary.
2. Secondary/Fallback Source: Merriam-Webster's Collegiate Dictionary API
- Usage: Automatically used when the primary source fails to find a word (e.g., specific terms, some expletives like "Hell").
- Coverage: Trustworthy, academic standard for English, including culturally significant terms.
- License: Used under the non-commercial license (free tier).
To further enhance the dictionary, the following are being evaluated:
- Urban Dictionary (Unofficial API)
- Role: To verify slang and colloquialisms when standard dictionaries fail.
- Wiktionary
- Role: For technical coverage and community-sourced definitions.
| Type | Color |
|---|---|
| Noun | 🔵 Blue |
| Verb | 🟢 Green |
| Adjective | 🟠 Orange |
| Adverb | 🔵 Cyan |
| Pronoun | 🩷 Pink |
| Preposition | 🧼 Teal |
| Conjunction | 🟣 Indigo |
| Interjection/Exclamation | 🟡 Yellow |
| Determiner/Article | ⚫ Gray |
| Names (Bio/Geo) | 🪻 Purple |
| Idioms/Phrases | 🍋 Lime |
| Affixes (Prefix/Suffix) | ☁️ Sky |
| Abbreviation/Symbol | 🗿 Slate |
| Other | 🔴 Rose |
- Core: React Native with Expo
- AI: Google Gemini
- Styling: NativeWind (Tailwind CSS)
- Navigation: React Navigation
- Storage: Async Storage
- Node.js (LTS recommended)
- Expo Go app installed on your physical device, or an Android Emulator/iOS Simulator.
-
Clone the repository (or navigate to the directory):
cd Argot -
Install dependencies:
npm install
Note: This will install all necessary packages including Expo, NativeWind, and React Navigation.
-
Start the server:
npx expo start
-
Setup Environment Variables: Create a
.envfile in the root directory and add your keys:GEMINI_API_KEY=your_gemini_key_here MERRIAM_WEBSTER_KEY=your_mw_key_here
- Get a Gemini key from Google AI Studio.
- Get a Merriam-Webster Collegiate Dictionary key from DictionaryAPI.com.
- Run on Device: Scan the QR code shown in the terminal with the Expo Go app (Android) or Camera app (iOS).
- Run on Emulator: Press
a(Android) ori(iOS) in the terminal after starting the server.
App.js: Main entry point and navigation setup.screens/: Contains the main application screens:Home.js: Dashboard and main menu.AddWord.js: Interface for inputting new vocabulary.List.js: Display of all saved words.Quiz.js: Game logic for testing vocabulary.
components/: Reusable UI components (e.g.,CustomModal.js).utils/: Helper functions and configuration.config.js: Application configuration (Dev/User mode).languages.js: Language definitions and flags.posStyles.js: Logic for Part-of-Speech color coding.dictionarySource.js: Dictionary API integration logic.
scripts/: Maintenance and testing scripts.collect_pos_types.js: Scans dictionaries to validate POS coverage.test_dictionary_implementation.js: Tests API connectivity.
assets/: Images and static resources.
The application features a configurable mode system managed via utils/config.js.
You can toggle between Development and User modes by changing the IS_DEV constant in utils/config.js:
export const IS_DEV = true; // Set to 'false' for production/user mode- User Mode (
IS_DEV = false): The standard experience for end-users. Clean interface focused on learning. - Dev Mode (
IS_DEV = true): Enables additional maintenance tools. Currently, this includes:- Refresh Metadata: A button in the
Listview that triggers a data migration script. This script formats existing words (Title Case) and attempts to fetch missing Part of Speech (POS) tags from the dictionary API for any words that lack them.
- Refresh Metadata: A button in the
This project is open source and available under the MIT License.