@abhishekwl/dict_cli
v1.0.2
Published
Robust CLI based thesaurus to play with. Focused on code structure and file organisation. Built using `commander` (CLI operations) and `chalk` (console coloring). Makes API calls to [dictionaryapi.com](https://dictionaryapi.com/products/api-intermediate-t
Readme
🔨 dict (Stack Finance Task)
Robust CLI based thesaurus to play with. Focused on code structure and file organisation.
Built using commander (CLI operations) and chalk (console coloring). Makes API calls to dictionaryapi.com to fetch definitions, synonyms, antonyms and usage examples of a given word.
🏗 Usage
Usage: dict [options] [command]
Options:
-v, --version Displays the current version of the CLI
-h, --help display help for command
Commands:
def <word> Display definitions of a word
syn <word> Display synonyms of a word
ant <word> Display antonyms of a word
ex <word> Display examples of a word
play Let's play a game
help [command] display help for command📚 Directory Structure
.
├── README.md
├── index.js
├── package.json
├── src
│ ├── shared
│ │ ├── commands.metadata.json
│ │ ├── constants.js
│ │ └── random.words.txt
│ ├── thesaurus
│ │ ├── controller
│ │ │ ├── antonym.controller.js
│ │ │ ├── definition.controller.js
│ │ │ ├── example.controller.js
│ │ │ ├── full-dict.controller.js
│ │ │ ├── play.controller.js
│ │ │ └── synonym.controller.js
│ │ ├── enums
│ │ │ └── command.enum.js
│ │ ├── helpers
│ │ │ └── play.helper.js
│ │ └── services
│ │ └── thesaurus.service.js
│ └── util
│ └── index.js
└── yarn.lock🚀 Done so far
- Implemented
enumsfor command names. - Separation of concerns,
servicelayer deals with API calls,controllerdeals with CLI interaction,helpersaid controllers with functions specific to the module. shareddirectory contains globally shared resources such as constants and command information.- Utility functions are stored in
utildirectory. - Error management at every stage with
try/catchbeing implemented with various error types at the service level as well as the controller level. - Minimalist
index.jsentrypoint with necessary imports only.
📣 Possible Enhancements
- Fetch API key from environment variables, storing it in code to make testing easier.
- Use jsconfig
pathsto make relative imports easier. - Implements typescript to ensure types.
- Improve CLI interface (
prettify). - Display a friendly
did you meanmessage if a command is not found. - Add autoupdate support to the CLI.
- Add
bash/zshautocomplete.
🌈 Screenshots
- Definition

- Synonym

- Antonym

- Example

- Full Dictionary

- Word of the day

- Game

