A modern, accessible web app for mastering Japanese Hiragana & Katakana
through interactive flashcards, quizzes, and audio pronunciation.
Features โข Getting Started โข Usage โข Structure โข Contributing
| Mode | Description |
|---|---|
| Flashcards | Flip cards with smooth 3D animations to reveal pronunciations |
| Quiz Mode | Multiple-choice questions with instant feedback and scoring |
| Hiragana Only | Focus exclusively on Hiragana characters |
| Katakana Only | Focus exclusively on Katakana characters |
| Mixed Mode | Challenge yourself with both scripts at once |
NihongoFlash is built with accessibility as a core requirement, not an afterthought:
- Full Keyboard Navigation โ Tab, Enter, Space, and Arrow keys work throughout
- Screen Reader Support โ ARIA labels, live regions, and semantic HTML
- Reduced Motion โ Respects
prefers-reduced-motionuser preference - WCAG Compliant โ Color contrast and focus indicators meet accessibility standards
- ๐ Audio Pronunciation via Web Speech API for authentic listening practice
- ๐ Progress Tracking with detailed learning statistics saved to Local Storage
- ๐ Dark Theme optimized for extended study sessions
- ๐จ Color-coded Scripts โ warm amber for Hiragana, cool blue for Katakana
- ๐ฑ Fully Responsive โ desktop, tablet, and mobile ready
- โก Blazing Fast โ Vite-powered with optimized production builds
- Node.js v16 or higher
- npm or yarn
# 1. Clone the repository
git clone https://github.com/arc-en-fel/Japanese-flashcard-website-.git
cd Japanese-flashcard-website-
# 2. Install dependencies
npm install
# 3. Start the development server
npm run devThen open your browser and navigate to http://localhost:5173
npm run dev # Start development server with hot reload
npm run build # Build optimized production bundle โ /dist
npm run preview # Preview the production build locally- Go to the Learn section and select your script mode
- Press Enter or Space (or click) to flip a card
- Use โ โ Arrow Keys to move between cards
- Click the ๐ audio button to hear the pronunciation
- Go to the Quiz section and select your mode
- Pick the correct romaji for each character shown
- Get instant โ / โ feedback after each answer
- Review your final score and accuracy
| Key | Action |
|---|---|
Tab |
Navigate between elements |
Enter / Space |
Flip card or activate button |
โ โ Arrow Keys |
Navigate between flashcards |
Escape |
Close modal / go back |
Hiragana โ 46 characters (click to expand)
| Group | Characters |
|---|---|
| Vowels | ใ ใ ใ ใ ใ |
| K | ใ ใ ใ ใ ใ |
| S | ใ ใ ใ ใ ใ |
| T | ใ ใก ใค ใฆ ใจ |
| N | ใช ใซ ใฌ ใญ ใฎ |
| H | ใฏ ใฒ ใต ใธ ใป |
| M | ใพ ใฟ ใ ใ ใ |
| Y | ใ ใ ใ |
| R | ใ ใ ใ ใ ใ |
| W | ใ ใ |
| N | ใ |
Katakana โ 46 characters (click to expand)
Complete mirror set of the Hiragana table above in Katakana script.
Japanese-flashcard-website-/
โโโ src/
โ โโโ components/ # Reusable UI components
โ โ โโโ FlashCard.tsx # 3D flip card component
โ โ โโโ QuizQuestion.tsx
โ โ โโโ Navigation.tsx
โ โ โโโ ProgressBar.tsx
โ โโโ pages/ # Route-level page components
โ โ โโโ Home.tsx
โ โ โโโ Learn.tsx
โ โ โโโ Quiz.tsx
โ โ โโโ About.tsx
โ โ โโโ Contact.tsx
โ โโโ hooks/ # Custom React hooks
โ โ โโโ useAudio.ts # Web Speech API integration
โ โ โโโ useProgress.ts # Progress tracking & persistence
โ โโโ data/
โ โ โโโ kanaData.ts # Hiragana & Katakana character data
โ โโโ types/
โ โ โโโ index.ts # Shared TypeScript types
โ โโโ App.tsx
โ โโโ main.tsx
โ โโโ index.css
โโโ public/
โโโ index.html
โโโ package.json
Frontend
APIs & Tools
- Fisher-Yates shuffle for unbiased quiz question randomization
- Dev-only data validator โ checks kana data integrity on startup with zero production impact
- TypeScript strict mode for a fully type-safe codebase
- Proper cleanup of timeouts and speech synthesis on component unmount
- Component-scoped transitions for optimal rendering performance
Contributions are very welcome! Here's how to get involved:
# 1. Fork the repo and create your branch
git checkout -b feature/your-feature-name
# 2. Commit your changes with a clear message
git commit -m "feat: add your feature"
# 3. Push and open a Pull Request
git push origin feature/your-feature-namePlease open an issue first for major changes so we can discuss what you'd like to change.
This project is 100% free and open source, available under the AGPL-3.0 License.
Have a suggestion, found a bug, or just want to say hi?
- ๐ฎ Email: Click Here
- ๐ Bug Reports: Open an Issue
Happy Learning! ้ ๅผตใฃใฆใใ ใใ๏ผ (Ganbatte kudasai โ Do your best!)
โญ If this project helped you, consider giving it a star!