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
- Framer 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 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 buildPreview the production build:
pnpm previewRun unit tests:
pnpm testRun end-to-end tests:
pnpm test:e2eCheck code style and issues:
pnpm lintFix code style issues:
pnpm lint:fixRun type checking:
pnpm typecheckMIT