Inspiration
I build this command-line app to better manage my English vocabulary study.
What is the problem you're solving?
In the past, this was the process when I was trying to memorize vocabularies:
See a word I don't understand -> google it -> Add the word and its definition to an excel file -> Review and try to quiz myself by hiding the definition column on excel -> Repeat
As you can see, this process is tedious and hard to keep track of my progress. For example, if I want to take a quiz only on the incorrect words from last quiz, it's quite a manual process using Excel.
The app is a centralized place for me to do word searching, studying and quizzing.
Why command-line app? Why not mobile or web?
Because I am a nerd and I love cli! I feel like I can better concentrate with cli and just using my keyboard. Plus I've always wanted to build a cli tool with Go - this is the first one I've ever built.
What it does
- CRUD operations for words and definitions. Support cli input and csv file upload.
- Search a word's definition through dictionary api.
- Take quizzes and review the quiz results.
- Review the incorrect words from the last quiz and do a quiz again on only those words.
-hor--helpon commands to see exact usages.
How we built it
The app is built with Go, sqlite, and these awesome cli frameworks / packages:
Challenges we ran into
- First time building a cli tool. Took some time to get familiar with the frameworks and packages
- SQLs that I have never written before.
- Not sure how to generate random questions.
- Finding third-party api that supports my need.
- Database schema design. What is the most efficient design for my need?
Accomplishments that we're proud of
- Learned how to build a cli tool with Go.
- The algorithm that generates random questions.
- The concurrent code that makes the question generating process faster.
What we learned
- How to build a cli tool with Go
- How to write complex SQL
- How to design the schema for relational databases
What's next for My Words App
- Add more colors and styles.
- Support different languages.
- Search for synonyms when adding words. Option to add synonyms to database.
- Search and add the word's example sentences.
- ...
Log in or sign up for Devpost to join the conversation.