Skip to content

georgehtliu/Type-Glazer

Repository files navigation

Type Glazer: Enhance Your Typing Skills Through Gamified Challenges 🚀

Type Glazer is a desktop application designed to transform typing practice from a monotonous chore into an engaging, competitive experience. By offering structured challenges and gamified, head-to-head racing, Type Glazer helps users of all levels rapidly improve their typing speed and accuracy.

Overview

In today's digital landscape, fast and accurate typing is a non-negotiable skill. However, effective, engaging practice methods are scarce. Type Glazer solves this by providing a platform for consistent, measurable improvement through challenging text exercises and a motivating gamified environment. Whether you're a student aiming for efficiency, a professional optimizing workflow, or an enthusiast seeking self-improvement, Type Glazer offers the structure and motivation you need.


Getting Started

Follow these two simple steps to download, install, and run Type Glazer on your machine.

1. Install the Application (Frontend)

The Type Glazer application is packaged for macOS.

  1. Navigate to the latest release: cs346-project-1.0.0.dmg
  2. Download and open the .dmg file.
  3. Right-click the application icon and select Open. (You may need to click "Open" again if a security warning appears.)

2. Run the Server (Backend)

The Type Glazer server is deployed as a Docker image for consistent and reliable operation. Ensure you have Docker installed.

  1. Pull the Image: Open your terminal and pull the latest server image.
    docker pull georgeliuu/cs-346-server
  2. Run the Container: Start the server, exposing port 5050.
    docker run -p 5050:5050 georgeliuu/cs-346-server

The application will connect to the backend automatically once both steps are complete.


Key Features

User Account Management

Secure your progress with standard user authentication.

  • Sign-in/Sign-up: Create a new account or log in with unique, secure credentials to access your historical performance data.
  • Log Out: Easily terminate your session.

Structured Challenges & Feedback

Select from a variety of texts to practice with and get instant, detailed feedback.

  • Difficulty Levels: Choose from Easy, Medium, or Hard challenges, each presenting texts of varying complexity.
  • Real-Time Feedback: As you type, the system instantly highlights correct entries in green and incorrect entries in red, enabling immediate error correction.
  • Progress Tracking: A visual tracker and an always-on Words Per Minute (WPM) Counter update with every character, displaying your speed and completion status.

Performance Analytics

Track and visualize your improvement over time.

  • Challenge Statistics: A detailed table summarizes every session, showing the date, challenge number, and corresponding WPM score.
  • Progress Graph: A dynamic line graph illustrates your WPM progress across all completed races, providing a clear visual representation of skill evolution.

Head-to-Head Challenges (Asynchronous Race Mode)

Compete against friends to test your skills under pressure.

  • Challenge Invitation: Easily invite a valid user to a race by selecting their username from a dropdown list.
  • My Challenges Page: View incoming invitations and choose to accept or decline the challenge.
  • Results Display: After both users complete the text, the race page dynamically updates to show each participant's final WPM and the outcome (Win, Lose, Tie).

Architecture & Technology Stack

Type Glazer operates on a modern, multi-tiered architecture designed for performance, maintainability, and scalability.

Architectural Diagram

Frontend (Desktop Client)

Technology Rationale
JetBrains Compose for Desktop (Kotlin) Chosen for its seamless integration with our Kotlin codebase, enabling highly reusable, component-based UI development. Its declarative and reactive nature simplifies state management and reduces development complexity.

Backend (Server)

Technology Rationale
Ktor Framework (Kotlin) A lightweight and modular framework that leverages a Domain Specific Language (DSL) for easy route definition and HTTP request handling. Its native Kotlin support ensures full stack type safety and cohesion.
Docker/Docker Hub Used for server containerization to ensure a consistent, reproducible environment across all development and deployment stages, streamlining distribution and reliability.

Database (Data Persistence)

Technology Rationale
DigitalOcean Managed PostgreSQL Provides a highly available and scalable data solution. The managed cluster offers built-in replication and failover, minimizing downtime and allowing the application to easily adapt to fluctuating user loads.

Development Practices & Roadmap

Collaborative Practices

Our development workflow prioritized code quality and team cohesion:

  • Code Reviews: Essential for knowledge sharing and catching bugs early by having team members review all merge requests.
  • Pair Programming: Used extensively for complex tasks (like database setup), following a driver/navigator model to facilitate immediate problem-solving and rapid resolution.
  • Iterative Development: Features were broken into smaller, parallel tasks (frontend/backend) to maximize concurrent work and prevent dependencies from causing delays.
  • Version Control (GitLab): Adhered to best practices with detailed commit messages and branching strategies, which proved vital for managing complex code changes and performing quick rollbacks when necessary (e.g., a critical fix to the progress graph logic).

Future Enhancements (Roadmap)

  • Code Refactoring: A priority for the next iteration is to refactor existing code to reduce redundancy, simplify complex structures, and enhance overall readability and performance.
  • Synchronous Typing Race: Our primary feature enhancement goal is to introduce a real-time, synchronous competitive race. This requires further exploration into managing concurrency and ensuring thread safety, a technical challenge we are committed to solving to deliver a truly live competitive experience.

About

Improve your typing speed!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages