A modern match-3 puzzle game built with React, TypeScript, and Vite. Features smooth animations, mobile-optimized swipe controls, and cascading match effects.
- Match-3 Gameplay: Match 3 or more gems of the same color to clear them
- Swipe Controls: Mobile-optimized swipe gestures for gem swapping
- Smooth Animations: Fluid swap, drop, and match-clearing animations
- Cascading Matches: Automatic chain reactions when gems fall into new matches
- Progressive Scoring: Score multipliers for combo matches
- Responsive Design: Optimized for both desktop and mobile devices
- React with TypeScript
- Motion for smooth animations
- @use-gesture/react for touch gesture handling
- Vite for fast development and building
- ESLint and Prettier for linting and formatting
- Vitest for unit testing with Testing Library
- Playwright for end-to-end testing
- Renovate for automated dependency updates
- Node.js (see
mise.tomlfor version requirements) - pnpm package manager
pnpm installStart the development server:
pnpm run devThe game will be available at http://localhost:5173
- Swipe to Swap: Swipe any gem in any direction to swap it with an adjacent gem
- Create Matches: Only swaps that create matches of 3 or more gems are allowed
- Chain Reactions: Watch for cascading matches as gems fall into place
- Score Points: Earn points for matches, with bonus multipliers for combo chains
- Keep Playing: The game continues until no more valid moves are available
Build for production:
pnpm run buildPreview the production build:
pnpm run previewRun unit tests:
pnpm run testRun end-to-end tests:
pnpm run test:e2eCheck code style and issues:
pnpm run lintFix code style issues:
pnpm run fixRun type checking:
pnpm run lint:typecheckMIT