
Frontend Quiz app with HTML, CSS, JavaScript
Design comparison
Solution retrospective
✅ Proud of:
- 🎉 Successfully modularizing the JavaScript code into separate files (
data.js
,navigation.js
,quiz.js
, andmain.js
), making it more maintainable and readable. - ♻️ Keeping code clean and structured, following best practices like DRY (Don’t Repeat Yourself) and writing small, reusable functions.
- 🎮 Implementing keyboard navigation and dark mode toggle, improving accessibility and user experience.
- 💾 Storing quiz progress and scores using localStorage, so users can see their results even after refreshing the page.
🔄 What would I do differently next time?:
- 🏗️ Consider using a state management approach (like an object to hold
quizData
,currentQuiz
,currentQuestionIndex
, anduserScore
) instead of separate variables. - ⚠️ Improve error handling to display user-friendly messages when quiz data fails to load.
- 🧪 Write unit tests for key functions like
loadCurrentQuestion()
andsubmitAnswer()
to catch issues early.
❓ Managing state across modules: Initially, currentQuiz
was undefined in some modules.
- ✅ Solution: Ensured variables like
quizData
andcurrentQuiz
were properly initialized and updated at the right time, avoiding unnecessary global state.
🔁 Event listener duplication: In loadCurrentQuestion()
, answer buttons retained old event listeners, causing unexpected behavior.
- ✅ Solution: Used
button.cloneNode(true)
to remove old event listeners before adding new ones.
🎮 Handling keyboard navigation: Managing focus and selection dynamically across different pages was tricky.
- ✅ Solution: Implemented separate functions for handling navigation on different pages, ensuring smooth transitions between UI elements.
⚡ State Management: Are there better ways to manage and update quizData
, currentQuiz
, and userScore
without using global variables?
🚨 Error Handling: How can I improve error handling for cases where the quiz data fails to load or the user navigates incorrectly?
🚀 Performance: Are there any areas where I could optimize my DOM manipulation for better performance?
🧑💻 Unit Testing: What are the best strategies to write tests for key functions like loadCurrentQuestion()
and submitAnswer()
?
Community feedback
Please log in to post a comment
Log in with GitHubJoin our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord