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.
  • -h or --help on 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.
  • ...

Built With

Share this project:

Updates