Kozma Hunor
Kozma Hunor

History Learner

A web application for interactive learning and memorization of historical facts.

Tutorials

Tutorial 1

This shows how to learn dates.

Tutorial 2

This shows learning words and their meaning, and also testing the 'difficulty' mechanics by choosing different type of difficulty for each.

Tutorial 3

This is for displaying how the exams are working, here you get the descriptions or the dates, and you have to write the word or what happen at that time.

Tutorial 4

This is showing the quiz function, where there is a question and you can chose from 4 different answers, and if u chose the correct there will be a congrat gif, and if u miss it u get a sad gif.

The Challenge

The main challenge was to create a platform that makes learning enjoyable with modern and interactive methods, such as quizzes and a Spaced Repetition System (SRS), as an alternative to rote learning.

My Solution

I developed a Next.js-based web application that is responsive and mobile-friendly. The application includes several modules: interactive flashcards for terms and names, a timeline view for dates, and quiz and exam modes for knowledge testing. The built-in SRS algorithm helps users learn more difficult topics more effectively.

Tech Stack

  • Next.js: Provides server-side rendering and fast navigation, which is essential for a good user experience.
  • React: Its component-based architecture allows for the creation of reusable and easily maintainable UI elements.
  • TypeScript: Adds type safety to the code, reducing the number of errors during the development phase.
  • Bootstrap: Accelerated UI development with its responsive and pre-built components.

Technical Deep-Dive

The most interesting technical solution was the implementation of the Spaced Repetition System (SRS). The system dynamically calculates when to show a card again based on the user's answers (hard, good, easy). The algorithm exponentially increases the time between cards if the user answers correctly, thus optimizing the memorization process. I store the SRS state in the browser's `localStorage`, so it remains persistent between sessions.