A memory card matching game built with vanilla JavaScript — zero dependencies, no build step.
Live demo: https://sen.ltd/portfolio/memory-game/
- 4 difficulty levels: Easy (4×3), Medium (4×4), Hard (6×6), Expert (8×8)
- 5 card themes: Emoji, Numbers, Alphabet, Shapes, Japanese Hiragana
- Smooth CSS 3D flip animation
- Moves counter & timer
- Best time / best moves saved in localStorage (per difficulty + theme)
- Confetti animation on win
- Dark / Light theme toggle
- Japanese / English UI
- Mobile-friendly responsive layout
- Keyboard accessible (Tab + Enter/Space)
npm run serve
# → http://localhost:8080No installation needed. Open index.html directly in a browser for offline play.
npm testUses Node.js built-in test runner (node:test). No extra dependencies.
memory-game/
├── index.html # Single-page app shell
├── style.css # All styles (CSS custom properties for theming)
├── src/
│ ├── main.js # DOM wiring, rendering, event handling
│ ├── memory.js # Pure game logic (immutable state)
│ └── i18n.js # ja/en translations + difficulty config
├── tests/
│ └── memory.test.js
├── assets/
└── package.json
- Choose a difficulty and theme
- Click cards to reveal them
- Match all pairs as quickly and efficiently as possible
- Beat your best time!
MIT © 2026 SEN LLC (SEN 合同会社)