Architecture Kata "Vocabulary quiz"

Develop an app with which you can learn vocabulary according to the 1-out-of-4 scheme.

The user learns on the basis of vocabulary boxes. Each box is filled with a set of vocabulary words from a deck of cards. Each vocabulary word has at least one translation.

However, when a word is queried, it is presented with four possible translations - only one of which is correct. The query has a timeout. The user can therefore select the correct translation or an incorrect one or run into the timeout. All three cases are counted in the statistics of the box.

After the answer (or timeout), the application gives feedback by comparing the given answer with the correct one.

After a query, the user can continue to be queried - or wait for a notification. [1] When opening the vocabulary box, the user determines the frequency at which he or she wishes to be notified. This setting can be changed at any time.

Several vocabulary boxes can be open at the same time. Boxes can of course also be closed. In this case, no further reminders take place, but they are still listed. A deleted box disappears completely.

As each word only needs to have one translation, the app randomly selects the other translation options from the remaining vocabulary until four options are available. The options are reshuffled for each query.

If a vocabulary word has been answered correctly three times, it is not presented again. Once a box has been worked through, the vocabulary (if not answered correctly) is presented again - but in a different order.

As long as a vocabulary submitted by notification has not been processed, further notifications are suspended. If there is no response for 2, 5 or 10 days, a reminder email will be sent - as long as the box is open.

If there are only 5 insufficiently answered vocabulary items left in a box, the box is automatically closed and an email is sent to inform you of this.

Various decks of cards are stored in the system for selection.

As soon as a vocabulary box with a stack of cards has been opened, changes to the stack of cards are not reflected in the box.

The user logs in with a nickname, email and password. They can start learning immediately - but they must also confirm their email address by clicking on a link in an email. If they do not do this, their vocabulary boxes are blocked after 5 days. They can request a new confirmation email at any time until confirmation.

When starting the app, the user must log in - unless they have requested that their login details be saved. If they have forgotten their password, they can reset it by entering their nickname or email address.

The password can also be changed at any time in the account details.

There should be:

  • an overview of the open boxes with brief statistics on the progress in each case; the overview also shows which boxes have been notified; new boxes are also opened here
  • a vocabulary query in a box
  • One settings page per box with information on the restocking rhythm, the underlying deck of cards (which cannot be changed after opening) and the option to close/open.
  • an option to register and change account data

Data

Card deck(name, version, deck code, card*) Card(vocabulary, correct translation [, incorrect translation] [, incorrect translation] [, incorrect translation])

Vocabulary and translations can be multi-line texts.

Variation #1

Users can upload their own piles of cards. They can use these to fill their vocabulary boxes. Or they can make them available to friends via a stack code.

Then there must be an overview of your own uploaded card stacks. You can upload, delete and invite others to a deck of cards by email.

Variation #2.1

There is an overview of the learning levels of other users for each stack of cards. The comparison value could be the correct answers per time, e.g. 10 correct in 3 days (3.33/day) would be better than 15 correct in 5 days (3/day). But 15 correct in 5 days would be better than 8 in 3 days (2.66/day). The failed attempts could also be counted: If there is a tie according to the coefficient, fewer incorrect attempts would then be rated better.

Variation #2.2

In the account data or the settings per box, you can manage a list of friends (by nickname or email address) whose learning statuses are displayed in the overview.


[1] If the application is implemented as a web application, notification can take place by email.

  

 

 

 

 

 

en_USEnglish