A word-guessing game built with React, TypeScript, and Vite. Perfect for gatherings with friends and family.
- Multilingual Support: Available in English and Russian
- Team-based Gameplay: Create multiple teams and take turns
- Customizable Settings: Adjust round time, score limits, and difficulty
- Responsive Design: Works on desktop and mobile devices
- Progressive Web App: Can be installed on mobile devices
The application supports multiple languages:
- English (default)
- Russian (Русский)
Language detection is automatic based on browser settings, but users can manually switch languages using the language switcher in the header.
To add a new language:
- Create translation files in
src/locales/[language-code]/ - Add the language to the i18n configuration in
src/i18n.ts - Update the language switcher component if needed
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default tseslint.config({
extends: [
// Remove ...tseslint.configs.recommended and replace with this
...tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
...tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
...tseslint.configs.stylisticTypeChecked,
],
languageOptions: {
// other options...
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})foo
You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default tseslint.config({
plugins: {
// Add the react-x and react-dom plugins
'react-x': reactX,
'react-dom': reactDom,
},
rules: {
// other rules...
// Enable its recommended typescript rules
...reactX.configs['recommended-typescript'].rules,
...reactDom.configs.recommended.rules,
},
})