Skip to content
ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

40 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
NihongoFlash

A modern, accessible web app for mastering Japanese Hiragana & Katakana
through interactive flashcards, quizzes, and audio pronunciation.

Features โ€ข Getting Started โ€ข Usage โ€ข Structure โ€ข Contributing


โœจ Features

๐Ÿƒ Learning Modes

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

โ™ฟ Accessibility First

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-motion user preference
  • WCAG Compliant โ€” Color contrast and focus indicators meet accessibility standards

๐ŸŽฏ Other Highlights

  • ๐Ÿ”Š 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

๐Ÿš€ Getting Started

Prerequisites

  • Node.js v16 or higher
  • npm or yarn

Installation

# 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 dev

Then open your browser and navigate to http://localhost:5173

Available Scripts

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

๐ŸŽฎ Usage

Flashcard Mode

  1. Go to the Learn section and select your script mode
  2. Press Enter or Space (or click) to flip a card
  3. Use โ† โ†’ Arrow Keys to move between cards
  4. Click the ๐Ÿ”Š audio button to hear the pronunciation

Quiz Mode

  1. Go to the Quiz section and select your mode
  2. Pick the correct romaji for each character shown
  3. Get instant โœ… / โŒ feedback after each answer
  4. Review your final score and accuracy

โŒจ๏ธ Keyboard Shortcuts

Key Action
Tab Navigate between elements
Enter / Space Flip card or activate button
โ† โ†’ Arrow Keys Navigate between flashcards
Escape Close modal / go back

๐Ÿ—พ Kana Coverage

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.


๐Ÿ“ Project Structure

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

๐Ÿ› ๏ธ Tech Stack

Frontend

React TypeScript TailwindCSS Vite React Router

APIs & Tools

Web Speech API ESLint


๐Ÿงช Code Quality

  • 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

๐Ÿค Contributing

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-name

Please open an issue first for major changes so we can discuss what you'd like to change.


๐Ÿ“ License

This project is 100% free and open source, available under the AGPL-3.0 License.


๐Ÿ“ง Contact

Have a suggestion, found a bug, or just want to say hi?


Happy Learning! ้ ‘ๅผตใฃใฆใใ ใ•ใ„๏ผ (Ganbatte kudasai โ€” Do your best!)

โญ If this project helped you, consider giving it a star!

About

A modern, accessible web app for mastering Japanese Hiragana & Katakana through interactive flashcards, quizzes, and audio pronunciation.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages