Flashcards language learning app?

Hi. I am very new to Thunkable as well as any type of app building. In fact, I rarely use the computer for more than some typing, emails, internet and games. I barely have any experience with coding, having used TurboPascal about 20 years ago, and then for short streaks of some trainings I worked with python and R. I have to say I have always struggled especially with the logic of the argument and with finding mistakes in my algorithms.

So I was wondering, because I haven’t seen many posts like this, if it is ok to write a blog of sorts? May I share my daily progress and perhaps get some feedback? (If it isn’t appropriate, I guess the moderators will just remove this post.) Furthermore, this is a for-the-community effort, so it may perhaps be attractive to someone?

I have been working on this since last Thursday or Friday, and I think I am close to developing a MVP, but it still requires a few touches.

My goal is to make a flashcards app. The idea is simple. On the first screen a word (it may be a phrase, but let’s call it a word) in Slovak appears. The user thinks about the Georgian equivalent, and when they click, the second screen appears with the correct translation. The user then has a choice of two buttons - “I knew”, “I didn’t know”. Both buttons lead back to Screen 1, but if “I didn’t know”, the word will later reappear after some time.

The app uses a database Odpovede that I created, which contains pairs of words - one in SVK the other in GEO.
I use three app variables to store my progress: countswitch, rowID a mistakeDelay. I also use two lists to record the mistakes: neviemCountList and neviemIDList.

If anyone has any suggestions into how to work better with the blocks or with the logic of the app, I will appreciate any advice. I will also be happy for encouragement, because I have been working on this for five nights, and I am looking forward to improve the app.

1 Like

In the meantime, after I have created this working app, I continue to improve it.
First I enlarged the database. For testing purposes, I only used 10 pairs of words. For the full app I have currently ready 60 pairs. I also changed the mistake delay to 7. It was a good thing to code it as a variable and not a constant - it is used in at least 3 occasions.

I haven’t got any further today, but the plan is such:
Short term goals:

  • Randomize the first word
  • Add another button, which will distinguish between minor and major mistake (difference in how fast the word reappears)
  • Expand the database
  • Create a Russian translation

Mid term goals:

  • Allow from updating the database source from within the app
  • Include “I have learned the word” exclusion from the database
  • Have a user feedback feature - to correct mistakes
  • Improve visual design

Long term goals

  • Allow for login and competition with friends
  • Add sound with pronunciation

Ok, anyone who is interested:

In the meantime form my last post, I managed to complete all of my short-term goals and more!

So let’s just go through the short term goals, and what I have done:
Randomize the first word:
I had a bit of a struggle with this, but then I moved all of my variable initialization to the welcome screen, and just set it random at the beginning (switchcount = 0). This setting will also allow to add a “randomize” button. It is not technically a randomize button, because it won’t randomize the order only the initial word. But if a user is too tired with the pairs of words, they will be able to “start anew”…

Anyway, as for other short term goals. You may have noticed that the screen is now called RUS1. It is called RUS, because I managed to make a translation as well as improve the word database. So now it is wider and it is also in Russian.
But also, it is called RUS1. Why 1?
Well I had a help by @denisbesk943 to improve the design. It is now a little bit more subtle, but I think this is exactly what the app needed. So it looks well now and it has another feature - the required translation from Russian is also shown on the other page, in case you want to return to some of the words.

(note that the design on windows visualiser is a bit different, especially on the GEO screen).

And you may also see from other pics, that there is the new button, which allows for different delay in repeating the word.

The blocks for other two screens are like this now:

So the midterm and long term goals stay as they are, with one addition to the midterm-goals - allowing for choosing a set of words based on difficulty.

And for short terms - I have a few additions:

  • tweek with the letter size
  • add “reset” button
  • user feedback function (which moved from mid-term goals).

That’s it for now, happy thunking :slight_smile:

Hello @fekalizathor4srjrj :wave:
Great work! Thank you for sharing it!

1 Like

I love work-in-progress topics like this. Thank you for sharing your process and your thoughts with us!

I think sometimes people discover a tool like Thunkable and think that app design will be really fast. It isn’t, usually. It takes time. It takes effort. For me, Thunkable allows me to: (1) Do things I simply couldn’t do without it due to my lack of coding skill in certain areas and (2) Do things so much quicker. So it’s not about taking a very short amount of time. It’s about taking relatively much less time. And that to me is exciting.

Seeing your process shows the amount of thought and work that goes into something like this. Apps are labors of love. We should appreciate that!


Hey fellow Thunkers. I am happy some of you have decided to visit this project of mine. I am especially thankful to @ioannis and @tatiang for their comments and encouragement.

I actually have an issue over here. I can’t seem to make the two buttons with two delays make work properly. It is something I cannot really comprehend.

It is possible to break my “mistake” button.
I suppose that the reason for this is that both “mistakes” and “I don’t knows” (IDNK later in text) have the same vallue for the word that should be following, and when one order doesn’t get executed, it gets stuck forever, because of the design of the app.
I mean, in a scenario, I have been testing now, see the welcome screen below.

To get to the logic: I start the app, I get the first word, I made a mistake, and then then the second word IDNK altogether. Clearly, there will be one more word, and after that there is a conflict between the word that should be following. Should it be the word IDNK, or the word I made a mistake in? I try to control for this by an if function in the beginning of the RUS screen - I compare if the two wouldn’t yield a trigger event simultaneously, and if it is true, I ask the app to increase all of the values in one of the variables by one, so that I delay the triggering of one word - in my case, I delay the word from the mistake list.

I also set up a developer window on top of the app. With current settings, if I make a mistake in the first word, the developers window shows that mistakeCount is 4. If I do not know the second word, the counts suddently jump to 5 and 5 in both mistakeCount and neviemCount, even though I only asked the mistakeCount to be increased. This is very weird… if I actually click “i do not know” button for the very first word, my developers window shows neviemCount to be 4 and not 3 as it should be - I mean the order is clear - the switchcount is 1, neviemDelay is 2, so their sum should be 3 not 4. Perhaps it has something to do with the tlacNEVIEM button, especially the neviemCountlist add last" function? But it is originally an empty list, so the inequation in the command doesn’t yield a true value.

Well then I tried to get rid of the more complex function (look at the original setting of the GEO screen at the end of the post), and only add the word in which mistake or IDNK was done.

After this change, the “neviemCount” in the developers window starts working better, it shows the proper value of the equation. Nevertheless, I will arrive to a moment when the “I don’t know” button stops working, because (as the developer’s window shows), I reach a moment when both lists with a mistake and with IDNK want to provide their word. And because of the coding / priority, the IDNK command is executed, and the mistake list gets stuck with the first value being lower than switchcount, therefore never again executing.

With current settings of delays (3 switches for a mistake, 2 switches for IDNK, I can break the mistake button as early as after 5 pairs of words: mistake, IDNK, IDNK, mistake and IDNK. What is happening is this: 1st word - mistake - get’s to 4th position. 2nd word - IDNK - get’s to 4th position, and moves the 1st word to poisition 5. 3rd word - IDNK - get’s moved to the 5th position. But even though there is a command upon screen opening to check for this, and increase all of the elements in the list “mistakeCount”, it doesn’t run through. Then on 2nd word reappears again at the 4th position, and no matter what I do, I will end up with a conflict on the 5th word, and IDNK command takes preference.

Does anybody have any kind of suggestions? Especially, why is my order at the top of screen not working?

Thank you very much for any recommendations!

The rest of the GEO screen for your inspection:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.