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.
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.
Follow these two simple steps to download, install, and run Type Glazer on your machine.
The Type Glazer application is packaged for macOS.
- Navigate to the latest release:
cs346-project-1.0.0.dmg - Download and open the
.dmgfile. - Right-click the application icon and select Open. (You may need to click "Open" again if a security warning appears.)
The Type Glazer server is deployed as a Docker image for consistent and reliable operation. Ensure you have Docker installed.
- Pull the Image: Open your terminal and pull the latest server image.
docker pull georgeliuu/cs-346-server
- 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.
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.
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.
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.
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).
Type Glazer operates on a modern, multi-tiered architecture designed for performance, maintainability, and scalability.
| 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. |
| 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. |
| 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. |
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).
- 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.
