Recently, I developed a web application to improve the efficiency of German language learning. This app is based on existing German-English dictionaries and provides optimization tailored to individual learning styles by analyzing learners' behavioral patterns in detail.
The motivation for development was the issue that while existing dictionary apps can look up words, they cannot determine which words learners are spending time studying or where they are struggling. Therefore, I decided to add functionality that tracks mouse movements and search patterns to visualize learning efficiency.
Technically, I designed the system to enable high-speed searching of 206,875 dictionary words using TypeScript and Web Workers. Particularly noteworthy is the learning history system. I record mouse trajectories, dwell time, and click counts when users search for words, and quantitatively measure learning difficulty and understanding levels.
The learning history function tracks the frequency of searched words, the first time they were looked up, and the last access time. Furthermore, I collect detailed metrics such as mouse movement distance, average speed, and number of direction changes, enabling analysis of learners' concentration levels and depth of understanding.
In actual learning, German text is pasted into the practice area, and dictionary searches are performed immediately just by clicking on unknown words. By switching between single-click and double-click modes, I provide operability according to learning styles.
For data persistence, I use the browser's localStorage and can save up to 1000 learning history entries. Additionally, learning data can be exported and imported in JSON format, making data migration between different devices easy.
Offline support is also one of the important features. By implementing Service Worker, dictionary functionality can be used even in environments without internet connection once accessed. This enables continuous learning during commute time or while traveling.
By using this app, the qualitative aspects of learning that were invisible with conventional dictionary apps become clear, and I believe more efficient German learning can be realized. I plan to continue improving functionality while incorporating feedback from learners in the future.