TypeMon is a high-performance, real-time multiplayer competitive typing game. Designed for speed and accuracy, it allows players to challenge themselves and others in a dynamic typing environment.
TypeMon combines the thrill of competitive gaming with the utility of typing practice. Whether you're looking to improve your WPM (Words Per Minute) or compete for the top spot on the leaderboard, TypeMon provides the tools to track your progress and hone your skills.
- 🌐 Multiplayer Battles: Create or join lobbies with up to 4 players for real-time typing races.
- ⚡ Real-time Feedback: Visualize your progress and your opponents' positions instantly using Socket.IO.
- 📊 Comprehensive Stats: Track WPM (Words Per Minute), CPM (Characters Per Minute), and accuracy for every session.
- 🌍 Multi-language Support: Practice typing in various languages, with a focus on Mongolian and English.
- 🔐 Secure Authentication: Integrated NextAuth for secure login via Email/Password, GitHub, or Google.
- 📈 Personal History: Monitor your growth over time with a detailed history of your typing tests.
- Frontend: Next.js 14 (App Router), React, Tailwind CSS
- State Management: Zustand
- Real-time: Socket.IO
- Backend / Database: Node.js, Prisma, MongoDB
- Authentication: NextAuth.js
- Monorepo Management: Turborepo, pnpm
This project is a monorepo managed by Turborepo:
apps/web: The core Next.js application, including the custom Socket.IO server.packages/*: Shared configurations and utilities (extensible for future packages).
-
Clone the repository:
git clone https://github.com/OthyTenk/typemon.git cd typemon -
Install dependencies:
pnpm install
-
Environment Setup: Create a
.envfile inapps/web/based on.env.example:cp apps/web/.env.example apps/web/.env
Fill in your
DATABASE_URL, authentication secrets, and provider keys. -
Initialize Database:
pnpm --filter @typemon/web prisma generate
To start the development server for the web app:
pnpm devThe application will be available at http://localhost:3000.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Refer to CONTRIBUTING.md for more details.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ for the typing community.
