- User - represents a registered user
- TypingTest - the data of a completed typing test for maintaining a history
- TypingSession - a session of typing (for a test or a challenge)
- Text - the content used for typing tests
- Achievement – defines an achievement that can be unlocked by the user
- TestsTakenAchievement – achievement granted when a certain number of tests is completed
- SpeedAchievement – achievement granted when a certain typing speed is reached
- Notification – message received by a user when they are surpassed in the WPM leaderboard
- TestTimer – a timer that measures the duration of a typing test
- Challenge – defines a challenge that can be taken by a user
- SpeedChallenge – speed-based challenge
- TimeChallenge – time-based challenge
- LeaderboardEntry – an entry in the leaderboard
- When the application starts, users can log in using their username
- If a user with the entered name exists in the database, their data is loaded
- If a user with the entered name does not exist in the database, a new entry is created
- Users can take a test to check their typing speed
- The system automatically calculates and displays the typing speed at the end of the test
- Users can choose a category for the text they want to type
- Users can opt to take a random challenge (e.g., type a text in under X seconds or at a speed of at least Y WPM) and earn a certain score
- At the end of a challenge, the system checks whether the user's performance meets the challenge criteria
- Users can view the leaderboard based on typing speed
- The typing speed leaderboard is updated after each test
- For every user surpassed in the WPM leaderboard by the current user, a notification is sent
- At the end of a test, the system checks whether the user has unlocked any predefined achievements
- Users can view the leaderboard based on challenge scores
- The challenge score leaderboard is updated after each challenge
- Users can view the list of completed challenges
- Users can view the list of unlocked achievements
- Users can view the list of system-generated notifications when they are surpassed in the typing speed leaderboard
- Users can delete their own notifications
- Users can log out from the system
