A minimal, sleek Nuxt 4 web application designed to test and train your word memory.
- Start: Click the PLAY button to begin a round.
- Memorize: You will be shown a set of words (default: 4) for a brief countdown period (default: 5 seconds).
- Select: Once the timer hits zero, a grid containing target words and distractors appears. Select the words you memorized!
- Result:
- Correctly selected words turn green instantly.
- Wrong words turn red instantly.
- Any missed target words will smoothly fade in over 2 seconds in green (0.8 opacity) when the game ends.
- Replay: Click TRY AGAIN to instantly generate a new set of words and start a new round.
The application lifecycle flows through five distinct states:
start(Main Menu): Initial screen showing masked card placeholders (?), settings button, and the start PLAY button.memorize: Target words phase displaying words to memorize (including low-opacity articles in German) alongside a top countdown timer.delay: Brief intermission countdown (default: 3 seconds) transitioning visual memory into mental recall.play: Active recall phase displaying the interactive grid and progressor bar.end(Finished Stage): Displays final score banner, revealed correct/wrong answers, performance trend chart, settings button, and replay PLAY button.
Click the gear icon (⚙️) in the top-right corner to customize:
- Memorize Duration: Adjust the timer length for memorizing words (seconds).
- Delay Duration: Set a delay step before grid selection (default: 3 seconds) to clear visual memory.
- Play Duration: Set the timer length for the active selection phase (default: 15 seconds) with visual progressor.
- Words to Memorize: Adjust the number of target words.
- Total Grid Words: Adjust the total number of words in the play grid.
Make sure you have Node.js installed.
# Install dependencies
pnpm install
# Start development server
pnpm run devOpen http://localhost:3000 in your browser.
End-to-end tests are implemented using Playwright.
# Run Playwright tests and record videos
pnpm testRecorded test execution videos are available in videos.md.
- Nuxt 4
- Vue 3 (Composition API)
- Playwright (End-to-end Testing)
- Vanilla CSS
- before the gameState === 'play', add a small page with step countdown (1, 2, 3 seconds delay centered) to transition from visual memory to mental recall, with configurable Settings value (default 3 seconds).
- add a 🎉 (use it not as emoji, but you can find these in many other apps), when the user gets 'you won'.
- add another Setting parameter, default 15 seconds, where in the lowest side of the playing state, a progressor comes by.
- add link in GitHub
- add a Chart component, with line which shows the last 10 plays (y is percent of correct). should we use a library? or not? which are popular?
- Setting language. default: English. alternative: German.
- [-] feat: not a fixed column (4-5 words), but the columns should not matter. because we might have more or less words, and our font might be too small... make the size consistent, but at least 2 words (it's possible on a vertical phone).
- Setting customization: color of the background
- ui: language not only words, but the UI itself. use a composable or a library?