TypeVerse is a modern, responsive typing test web application built with React, Vite, Express, and MongoDB. It challenges users with dynamically generated word lists, tracks performance in real-time, and offers flexible typing modes—for a personalized typing experience.
-
⏱ Timed Tests: Choose between test durations.
-
📝 Word Test Mode: Set a target word count instead of time.
-
⌨️ Typing Modes:
- Auto-Skip Spaces: Type letters continuously, spaces are inserted automatically.
- Explicit Spaces: Manually type spaces, similar to traditional tests.
-
📊 Live Stats: Real-time WPM, accuracy, and countdown timer while typing.
-
📂 Persistent Results:
- Logged-in users’ results saved to MongoDB.
- Guest results stored locally in the browser.
-
🎯 Cumulative Accuracy: Errors stay highlighted; accuracy doesn't reset between words.
-
🔁 Dynamic Word Pool: Words are randomized on each test run from a configurable list.
-
🌐 Global Leaderboard: Compare scores with users worldwide.
-
🧑💼 User Dashboard: View personal typing history and performance trends.
-
📱 Responsive UI: Built with Tailwind CSS for a clean, mobile-friendly layout.
-
♿ Accessible Controls: Includes keyboard focus states, ARIA-compliant buttons, and clear feedback.
- Node.js ≥ 14.x
- npm or Yarn
- MongoDB URI (for database connection)
-
Clone the repository:
git clone https://github.com/your-username/typeverse.git cd typeverse -
Install dependencies:
cd client && npm install cd ../server && npm install
-
Create environment variables:
-
server/.envPORT=5000 MONGO_URI=your_mongodb_uri JWT_SECRET=your_jwt_secret FRONTEND_URL=http://localhost:5173
-
client/.envVITE_API_URL=http://localhost:5000
-
-
Start MongoDB (locally or using a remote URI).
-
Run the backend:
cd server npm run dev -
Run the frontend:
cd client npm run dev -
Open the app at http://localhost:5173
- Choose a test duration (15s, 30s, or 60s) or word target.
- Toggle “Skip Spaces” to enable continuous typing or manual space input.
- Start typing and track your performance live.
- View your results after the timer or word target ends.
- Log in to save your results—or try again as a guest!
typeverse/
├── client/ # Frontend (React + Vite)
│ ├── public/
│ ├── src/
│ └── ...
├── server/ # Backend (Express + MongoDB)
│ ├── models/
│ ├── routes/
│ ├── controllers/
│ └── ...
└── README.md
npm run dev— Start Vite dev servernpm run build— Build production assetsnpm run preview— Preview production build
npm run dev— Run with Nodemonnpm start— Start production server
Contributions are welcome! Follow these steps:
-
Fork the repository
-
Create your feature branch
git checkout -b feature/your-feature
-
Commit your changes
git commit -m "feat: add new feature" -
Push to your branch
git push origin feature/your-feature
-
Open a Pull Request
This project is licensed under the MIT License.