While reading books or browsing online, people often come across new words, terms, or concepts they don’t know about. It is the tendency of many people to skip those words/terms/concepts without trying to understand it. Some apps and web-plugins are used by others to find the meaning of the unfamiliar terms. However, it is very hard for people to remember it for a longer period of time, since it is unlikely that they would see those words/terms again in near future. The less you rehearse/revise what you have learned, the greater the speed with which forgetting takes place. Once you learn a fact, you need to refresh your memory shortly before the newly acquired knowledge evaporates.
What it does
Our app provides an easy-to-use and intuitive platform to find the definition of the unknown terms, create a personal database of definitions and concepts, and reinforce the learning by browsing through those definitions repeatedly. We use cards to display the definitions alongside its relevant image in opposite chronological order. The user could browse through the cards to strengthen his/her memory.
How I built it
We first thoroughly went through the list of APIs, discussed with some of the sponsors about our idea, and funneled down on the basic structure of the application. We started using Back& service to build our backend, but we soon realized it lacks few features needed for our application. Hence, we had to build our backend from scratch using node.js and express.js. We have developed a mobile app as well as webapp. We used Ionic, Angular.js, and Cordova for UI. We organize the words and their definitions in form of deck of cards and store them in the database using MongoDB.
Challenges I ran into
- We started with wikipedia API for dictionary, but we found that they don’t provide API keys and thus block multiple incoming request as a bot attack prevention safety feature. So we had to do some research to find other open-source APIs for dictionary.
- Finding and using a framework which can help us write mobile app as well as web-app.
- Writing a web-plugin for browsers to fetch the highlighted keyword and show a pop-up with the meaning of the keyword without redirecting the user to some other page.
Accomplishments that I'm proud of
- Developing the backend web server and the frontend
- Writing a web-plugin that can be used by everyone
- Simplify vocabulary learning challenges
- Hosting the web-app online to a cloud server and making it available by domain: www.thevocab.club
What I learned
- How to make use of APIs and properly integrate them into the project
- Design the project architecture and database schema
- How to make user-friendly and intuitive UI
What's next for TheVocabClub
- User profiles
- Sharing cards among friends
- Grouping cards into different categories