A beautiful, feature-rich typing application built with React, TypeScript, and Tailwind CSS. Learn to type faster and more accurately with real-time feedback and interactive features.
- Difficulty Levels: Easy, Medium, and Hard word sets for progressive learning
- Customizable Word Count: Choose from 10, 25, 50, 100, or 200 words per test
- Dynamic Text Generation: Thousands of words across all difficulty levels
- Live WPM Tracking: Real-time words per minute calculation
- Accuracy Monitoring: Track your typing accuracy percentage
- Progress Visualization: Visual progress bar and completion statistics
- Session Summary: Detailed results after each test
- Finger Placement Guide: Color-coded keys showing which finger to use
- Touch Typing Support: Learn proper finger positioning
- Real-time Highlighting: Keys light up as you type
- Toggle Visibility: Show/hide keyboard as needed
- Sound Effects: Audio feedback for correct/incorrect keystrokes
- Volume Control: Adjustable volume slider
- Completion Sounds: Melodic feedback when tests are complete
- Theme Support: Light, Dark, and System theme modes
- Font Size Options: Small, Medium, and Large text sizes
- Visual Feedback: Green/red highlighting for correct/incorrect characters
- Responsive Design: Works seamlessly on all devices
- Modal Settings Panel: Clean, organized settings interface
- Live WPM Display: Toggle real-time WPM visibility
- Error Highlighting: Visual feedback for typing mistakes
- Browser Shortcuts: Preserved Cmd+R, F5, and other browser shortcuts
Try the application live at: https://xtype.pages.dev/
- Frontend: React 18+ with TypeScript
- Styling: Tailwind CSS 3.4+
- UI Components: shadcn/ui
- Build Tool: Vite
- Audio: Web Audio API
- Icons: Lucide React
-
Clone the repository
git clone https://github.com/yourusername/typex.git cd typex -
Install dependencies
npm install
-
Start development server
npm run dev
-
Build for production
npm run build
- Start Typing: Click on the typing area or press any key to begin
- Choose Settings: Click the Settings button to customize your experience
- Select Difficulty: Choose Easy, Medium, or Hard based on your skill level
- Set Word Count: Pick how many words you want to type (10-200)
- Customize Display: Adjust theme, font size, and other preferences
- Track Progress: Monitor your WPM and accuracy in real-time
- Learn Proper Typing: Use the virtual keyboard to see finger placement
src/
โโโ components/ # React components
โ โโโ SettingsPanel.tsx # Settings modal
โ โโโ StatsDisplay.tsx # Statistics display
โ โโโ TypingArea.tsx # Main typing interface
โ โโโ VirtualKeyboard.tsx # Interactive keyboard
โโโ hooks/ # Custom React hooks
โ โโโ useTypingEngine.ts # Core typing logic
โโโ lib/ # Utility functions
โ โโโ utils.ts # Helper functions
โโโ types/ # TypeScript definitions
โ โโโ index.ts # Type definitions
โโโ App.tsx # Main application component
- Custom React hook managing all typing logic
- Real-time statistics calculation
- Character-level tracking and feedback
- Timer management and session control
- Comprehensive finger mapping for touch typing
- Color-coded keys for different fingers
- Real-time highlighting of current character
- Responsive design for all screen sizes
- Modal-based settings interface
- Organized into logical sections
- Real-time theme switching
- Persistent user preferences
- Web Audio API for sound generation
- Multiple sound types (correct, incorrect, complete)
- Volume control with smooth transitions
- Audio context management
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
react- UI frameworktypescript- Type safetytailwindcss- Utility-first CSS@radix-ui/*- Accessible UI primitiveslucide-react- Icon library
- Accessibility First: WCAG compliant with keyboard navigation
- Mobile Responsive: Works on all device sizes
- Performance Optimized: Fast loading and smooth animations
- User Experience: Intuitive interface with clear feedback
- Modern Standards: Latest React patterns and best practices
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by typing learning platforms like keybr.com
- Built with modern web technologies
- Icons by Lucide
- UI components by shadcn/ui
- Live Demo: https://xtype.pages.dev/
- LinkedIn: https://www.linkedin.com/in/kourouklidis/
- GitHub: https://github.com/kokoyroy
Happy Typing! ๐
Built with โค๏ธ using React, TypeScript, and Tailwind CSS