A browser extension that enables Vietnamese typing using the powerful anvim engine. VinaKey allows users to seamlessly type Vietnamese text on any website with support for multiple input methods.
- Multiple Input Methods: Support for Off/Auto/Telex/VNI/VIQR input methods via anvim
- Smart Site Management: Enable/disable the extension per website
- Universal Compatibility: Works on all text input fields across the web
- Modern UI: Clean interface built with Bulma CSS
- Comprehensive Testing: End-to-end tests with Playwright
- Off: Disable Vietnamese typing
- Auto: Automatic detection and conversion
- Telex: Popular Vietnamese input method (aw β Δ, oo β Ζ‘, etc.)
- VNI: Numeric-based input method
- VIQR: ASCII-based Vietnamese input method
- Node.js 18+
- Yarn package manager
- Modern web browser (Chrome/Firefox/Edge)
# Clone the repository
git clone <repository-url>
cd vinakey-extension
# Install dependencies
yarn install
# Build the extension
yarn build
# Load in browser (Chrome example)
# 1. Open chrome://extensions/
# 2. Enable "Developer mode"
# 3. Click "Load unpacked"
# 4. Select the dist/ folder# Start development server with hot reload
yarn dev
# Run tests
yarn test
# Run end-to-end tests
yarn test:e2e
# Lint code
yarn lint
# Type checking
yarn type-checkvinakey-extension/
βββ src/
β βββ content/ # Content scripts
β βββ popup/ # Extension popup UI (HTML + vanilla JS)
β βββ background/ # Background scripts (service worker)
β βββ options/ # Options page (HTML + vanilla JS)
β βββ utils/ # Utility functions
β βββ types/ # TypeScript types
βββ public/ # Static assets
βββ tests/ # Test files
βββ docs/ # Documentation
βββ dist/ # Built extension
- Content Script: Injected into web pages to handle text input
- Background Script: Manages extension state and settings
- Popup UI: Quick access to settings and toggle
- Options Page: Detailed configuration interface
- anvim: Vietnamese input method engine
- Bulma CSS: Modern CSS framework
- Vanilla JavaScript: Lightweight UI implementation
- Playwright: End-to-end testing framework
- TypeScript: Type-safe development
- Yarn: Package management
- Enable Extension: Click the VinaKey icon in your browser toolbar
- Select Input Method: Choose from Off/Auto/Telex/VNI/VIQR
- Configure Sites: Add websites to enable/disable list
- Start Typing: Begin typing Vietnamese on any text field
Access via extension popup or options page:
- Default Method: Set preferred input method (Auto, Telex, VNI, VIQR, or Off)
- Global Toggle: Enable/disable the extension globally
- Per-site Control: Enable/disable for specific websites
- Whitelist Mode: Only work on specified sites
- Blacklist Mode: Work everywhere except specified sites
- Domain Patterns: Support for wildcards and subdomains
See DEVELOPMENT.md for detailed development instructions.
See TESTING.md for testing guidelines and setup.
See API.md for detailed API documentation.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details.
- Issues: Report bugs and feature requests
- Documentation: Comprehensive guides in
/docs - Community: Join our discussions
Built with β€οΈ for the Vietnamese developer community