Welcome to your Dev Shop Challenge.
Today, you are not completing a coding exercise —
you are solving a client problem using logic.
Client: Duolingo
Problem: Duolingo wants to improve beginner engagement by making progress feel more meaningful.
Points exist — but the experience doesn’t react to them.
Build a prototype that:
- Tracks learner progress (XP, streaks, points, etc.)
- Responds differently based on performance
- Uses randomness to keep things engaging
- Provides feedback that changes over time
Your prototype must include:
- One main progress variable
- One
if / else if / elsechain - At least two comparison operators
- One array used for randomness
Ask yourselves:
- What does success look like for Duolingo?
- When should a user feel rewarded?
- How many learner states exist?
- What logic controls those moments?
Remember:
Client goals → product behavior → JavaScript logic
- Add emojis or visual changes
- Add a reset button
- Introduce streak bonuses
- Change feedback wording to match Duolingo’s tone
The same logic you build here powers:
- Game mechanics
- Progress tracking
- Win / lose states
You’ll reuse this thinking in your charity: water game project — just with a different mission.
You’re not just writing JavaScript.
You’re teaching an app how to think.