Building first project: basic concept, list of possible features

It’ s time to start building something i guess.

My background for now:
Responsive Web Design finished
JS section now in process: regular expressions just finished, will start debugging section tomorrow.

Project goal: apply current skills, acquire new skills.

Concept:

I am not native English speaker, and though my English is somewhat decent, I encounter new words on a regular basis.
Sometimes I memorize and begin to use such words right off the bat, but many words is forgotten because they are used on a rare occasion or for any other reason.

That said, I will build an application that will allow me keep track of my new vocabulary and look up some encountered words when I see fit.
Note: having such application could have positive emotional side-effect I think: sometimes process of learning new words is associated with fun memories, it’s nice to refresh such memories

I will start small with just a couple of basic features, and will consider additional features when basic features will be implemented, tested and some feedback will be received.

Features:

  1. User should have an opportunity to input new encountered word and translation for it.
  2. List of words should be stored in file/database(need to do more research on this one) in format {word in English : word in native language}.

Note for future features: consider to store/get from user more data associated with each word: date when word was encountered, maybe context, website where it was encountered etc. Some data can be provided automatically(date/time when user added new word)
Consider to find various ways to perform such data to user:
for example, with dates we can perform some charts and user will have some stats: yesterday I encountered 12 new words, and in last month 50… something like that

  1. User can request either random English word from application or user can specify which word they want to get from app.
    Word will be provided without translation first: user should have an opportunity to recall it on their own. However, translation will be provided if user will make additional request.

  2. User also can request random/specified word with translation right away.

I think with my current knowledge I am capable at least to start coding this.

Any feedback about stuff above would be cool. Project repo will be here(name of repo is kind of random though and for now it’s empty).

P.S. Some other ideas for projects I currently have:

Want to build TODO app just because everybody does)))

Something with regexp shenanigans: maybe some app that will provide average length of sentences and other statistics about given text - too vague for now.

Also have idea for content for my freeCodeCamp Tech documentation page. This project of mine now in the stage ‘just passed all tests, nothing added’. I wanna fill it with content about program efficiency and big O notation.

PPS. Now it feels strange. There is no code in this post but I think it’s the most important one so far.

1 Like

Some ideas to make the app better:

Make it so the app takes a word, a definition, and an example sentence from the user (or you could use an API to let the app grab the definition and the example from an online dictionary).

The app shows 5 (just an arbitrary number) random words along with their definitions and examples in a single card, sort of like a flash card.

There should be buttons on the card to let the user choose another set of 5 words.

There should be a section to let the user test his/her knowledge.

The test section should display some definifitions. Each definition should have multiple options (e.g., 4).

The test section should store the data about the words the user has correctly identified as well as the ones the user failed to remember.

The words that were not correctly matched to their definitions should have a higher priority and be put in the tests more often.

There should be a chart showing the users the words he/she had the most trouble recognizing.

This seems like a lot of work and at the moment, I have no idea how to implement what I suggested as I’ve only finished HTML/CSS courses. But if you wanna make something that’s on as professional a level as the best apps on app stores, these features should be included.

That is not the goal. The goal is to apply my skills and acquire new ones.

Yeah, I have no idea how to implement half of the stuff I wrote in this post) The point is to learn more through attempts to build it.

My approach is - try to build most basic version. When it is done, try to implement more complex features.
I believe there is fancy termin for such approach: evolutionary prototyping.

I think for beginner like me it is appropriate strategy.

All features you suggested are completely on point, but they are for later stages I guess, when most basic stuff is implemented.

UPDATE

I am a big fan of this one by the way. It would so useful for me as a user, and it will be cool process of implementing it I guess

1 Like

I’ ve added your recommendations to README file, consider yourself contributor I guess :upside_down_face:

In software engineering, there’s a term called “POC” which stands for Proof of Concept. Its usually the initial version that is used to make sure that the idea itself makes sense.

I think these 2 features are a good start for where you are right now. I’d suggest looking into localstorage as a quick and easy way to save data within your local browser itself. This will allow you to come back to the same URL/website and see previous entries.

This will also mean your website wont need fancy infrastructure like a back-end/database/authentication.

It will also be something new to mess around with, without being too complex.

This requirement might be much more difficult. As “get random word from application” means having an app that can do “random stuff” with a list of things to give, along with the translations themselves. This sort of feature means you need to gather this sort of data yourself, which might not be worth it.

You could combine this feature with your previous 2 main features and return a previous translation, so overtime the user builds their own “translations database”, or you can provide some sort of seed/keep statically in your project.

Overall I think your idea to build a project that you’d find useful, and define what sort of scope this project will have is an excellent idea and start :smiley:

1 Like

Your feedback is on top level always!
All my topics with your replies always end up in my bookmarks for the sake of quick access)

1 Like