/WordPedia

Primary LanguageJavaScriptMIT LicenseMIT

WordPedia


This is a learning app to improve the vocabulary.

Created by Amit Pal

Demo

Features

  • Social login: It has Facebook login for the user registration
  • Online word search: Word definition can be searched and bookmarked once after user register him/herself
  • Bookmarking words for future use: Bookmarked word can be removed. Though an accidental delete operation can be reverted within 3 seconds
  • Learn and memorize word by playing Quiz: Enabling quiz mode, the user will be prompted with a notification containing word from the bookmarked word list at every 3rd hour from 8AM through 6PM on every day
  • Rich user input: It can take rich user input. E.g. image (By uploading image, providing image URL or taking photo from mobile camera), voice (Speech to text)
  • PWA: It's a PWA (Progressive web-app which can allow user to create a icon in the mobile device for offline use)
  • Mobile Data friendly: Service-worker has been used for efficient use of mobile data.
  • Social sharing: Words can be copied, shared in the social medias
  • API documentation: Swagger is available for API documentation
  • Multi lingual support: It will support multiple languages (TODO)
  • Translation: It will support multiple language translation (TODO)

Tech-stack

It is a MERN (MongoDB-Express-React-NodeJS) stack development.

The primary tech-stack is as follows.

The secondary tech-stack is as follows:

Contact

Feel free to contact me. Developer: Amit Pal

Code base setup

  1. Clone this repo using git clone https://github.com/amit040386/WordPedia.git
  2. Move to the appropriate directory: cd WordPedia.
  3. Run npm install to install dependencies.
  4. Run ./node_modules/.bin/web-push generate-vapid-keys) and keep public (WEB_PUSH_PUBLIC_VAPID_KEY) and private key (WEB_PUSH_PRIVATE_VAPID_KEY) in the below .env file
  5. Create a .env file to the root folder and add these mapping to it. E.g.
    • DB_USERNAME=xyz
    • DB_PASSWORD=abc
    • DB_NAME=blabla
    • CLUSTER_NAME=pqr.mongodb.net
    • WEB_PUSH_PUBLIC_VAPID_KEY=abcdefg
    • WEB_PUSH_PRIVATE_VAPID_KEY=wert
  6. Run sudo npm install workbox-cli -g if it is not present
  7. Run npm start to see the example app at http://localhost:7009 in DEV mode.
  8. Run npm start:production to see the example app at http://localhost:7009 in PROD mode.

Disabling service worker for localhost development

  1. Go to developer's toolbar
  2. Application tab, select Service worker
  3. Uncheck "Update on reload" and check "Bypass for network"
  4. Clear cache and refresh browser

Known bugs

A KanBan board has been maintained throughout this development. I'm still working on few open bugs which can be found here: https://github.com/amit040386/WordPedia/projects/1

Future development plans

  1. Multi lingual support as it currently supports only English.
  2. Instant translation Feature
  3. Searching word definition for multiple languages as it currently supports only English
  4. Contextual word suggestion

License

MIT license, Copyright (c) 2018 Amit Pal.