Developing a Brutalist-Style Typing Test with Progress Tracking

Project Overview: The Brutalist Typing Test is a web application designed to help users improve their typing speed and accuracy. It features a minimalist, brutalist design aesthetic combined with robust functionality and progress tracking.

Objectives:

  1. Create a functional typing test with a brutalist design

  2. Implement multiple test durations

  3. Provide real-time feedback on typing speed and accuracy

  4. Track and visualize user progress over time

  5. Ensure a responsive and accessible user interface

Technology Stack:

  • React.js for the front-end framework

  • Chart.js for data visualization

  • Local Storage for persisting user data

  • CSS for brutalist styling

Development Process:

  1. Initial Implementation: The project began with a basic typing test featuring a 60-second timer, real-time WPM calculation, and accuracy tracking. The UI was styled using brutalist design principles, emphasizing functionality over aesthetics.

  2. Multiple Test Durations: To cater to different user preferences, we implemented a duration selector allowing users to choose between 30 seconds, 1 minute, 2 minutes, or 5 minutes for their typing test.

  3. Progress Tracking: We introduced a feature to store users' previous attempts using browser Local Storage. This allowed us to implement a progress tracking system without the need for a backend server.

  4. Data Visualization: Using Chart.js, we created a line graph to visualize users' WPM and accuracy over time. This provides users with a clear view of their improvement, encouraging continued practice.

  5. Brutalist Styling: Throughout the development process, we maintained a commitment to brutalist design principles. This included using a monospaced font, high contrast colors, and minimal, functional UI elements.

Challenges and Solutions:

  1. Maintaining Brutalist Aesthetics with Advanced Features: Challenge: Adding features like charts and dropdowns while maintaining a brutalist look. Solution: We carefully styled these elements to fit the brutalist theme, using bold borders, monospace fonts, and minimal color schemes.

  2. Accurate WPM Calculation: Challenge: Calculating WPM accurately in real-time for different test durations. Solution: We implemented a calculation that considers the elapsed time and the number of words typed, updating in real-time as the user types.

  3. Local Storage Limitations: Challenge: Storing potentially large amounts of progress data in Local Storage. Solution: We implemented a system to store only essential data (date, WPM, accuracy, duration) for each attempt, minimizing storage usage.

Results: The Brutalist Typing Test successfully combines functionality with a unique design aesthetic. Users can:

  • Choose from multiple test durations

  • Receive real-time feedback on their typing speed and accuracy

  • View their progress over time through an easy-to-understand chart

  • Practice in an environment free from distracting design elements

User feedback has been positive, with many appreciating the no-frills approach to design and the focus on functionality. The progress tracking feature has been particularly well-received, as it provides tangible evidence of improvement over time.

Future Improvements:

  1. Implement user accounts and cloud storage for progress data

  2. Add more typing test categories (e.g., code snippets, quotes)

  3. Introduce a competitive element, such as daily challenges or leaderboards

  4. Enhance accessibility features for users with different abilities

Conclusion: The Brutalist Typing Test project demonstrates that it's possible to create a feature-rich application while adhering to minimalist design principles. By focusing on core functionality and user needs, we created a tool that not only helps users improve their typing skills but does so in a unique and memorable way. The project serves as an excellent example of how brutalist design can be applied to modern web applications, challenging conventional notions of what a typing test should look like while delivering a highly functional and effective product.

github: https://github.com/Monishobaid/typo