A modern web application for customizing keyboard settings, including sound profiles, macros, and RGB lighting.
- Sound profiles with different switch types (Blue, Brown, Red)
- Macro recording and playback
- RGB lighting customization
- Cloud sync for settings
- Modern, responsive UI
- Complete keyboard customization
- Multi-layer support
- Frontend: React 18 with TypeScript
- UI Library: Chakra UI & Material UI
- State Management: Zustand
- Routing: React Router v6
- Backend: Firebase (Authentication, Firestore, Storage)
- Build Tool: Vite
- Testing: Jest & React Testing Library
- Node.js >= 18.0.0
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/keymapper.git
cd keymapper- Install dependencies:
npm install- Create a
.envfile in the root directory with your Firebase configuration:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=your_measurement_id- Start the development server:
npm run devsrc/
├── assets/ # Static assets (images, sounds)
├── components/ # Reusable UI components
├── config/ # Configuration files
├── contexts/ # React contexts
├── features/ # Feature-specific code
├── hooks/ # Custom React hooks
├── layouts/ # Layout templates
├── pages/ # Page components
├── services/ # Service modules
├── store/ # Zustand stores
├── styles/ # CSS and style utilities
├── test/ # Test utilities and mocks
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
├── App.tsx # Main App component
├── main.tsx # Application entry point
Run the test suite:
npm testRun tests in watch mode:
npm run test:watchGenerate test coverage report:
npm run test:coverageTo create a production build:
npm run buildPreview the production build locally:
npm run preview- Follow the coding style and conventions used throughout the project
- Write tests for new features
- Ensure all tests pass before submitting a PR
- Update documentation as needed
MIT