A simple, focused web app for practicing hiragana and katakana writing through random prompts and self-assessment.
- ✅ Script Selection: Choose between hiragana or katakana practice
- ✅ Character Selection: Choose which characters you want to practice
- ✅ Group Selection: Select entire rows (vowels, ka-row, sa-row, etc.) at once
- ✅ Random Prompts: Displays random romaji from your selected characters
- ✅ Smart Randomization: Avoids showing the same character repeatedly
- ✅ Reveal & Check: Click to reveal the correct character, then self-assess
- ✅ Progress Tracking: Automatically saves your practice history to localStorage
- ✅ Statistics Dashboard: View your overall performance and per-character stats
- ✅ Responsive Design: Works on desktop, tablet, and mobile devices
- Complete hiragana and katakana charts (92 characters each)
- Basic characters (a, i, u, e, o, ka, ki, ku, ke, ko, etc.)
- Dakuten characters (ga, gi, gu, ge, go, etc.)
- Handakuten characters (pa, pi, pu, pe, po)
- Yōon combinations (kya, kyu, kyo, etc.)
- Node.js 20.19+ or 22.12+ (or compatible version)
- npm (comes with Node.js)
-
Clone the repository or navigate to the project directory:
cd kana-writing-prompts -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173/
To create a production build:
npm run buildTo preview the production build:
npm run previewThis project is automatically deployed to Vercel on every push to the main branch. The live version is available at:
https://kana-writing-prompts.vercel.app
Vercel also creates preview deployments for every pull request, allowing you to test changes before merging.
- Click on "Select Characters" tab
- Choose your script (hiragana or katakana)
- Choose the character groups you want to practice
- Click "Start Practice" when ready
- A random romaji will be displayed (e.g., "ka")
- Write the corresponding character in your notebook
- Click "Reveal Answer" to see the correct character
- Mark whether you got it correct or incorrect
- Continue with the next character
- Click on "Statistics" tab to view your performance
- See overall success rate and total attempts
- View per-character statistics to identify characters needing more practice
- Characters with lower success rates appear first in the list
kana-writing-prompts/
├── src/
│ ├── components/ # React components (TypeScript)
│ │ ├── CharacterSelector.tsx
│ │ ├── PromptCard.tsx
│ │ └── Statistics.tsx
│ ├── data/ # Character data
│ │ ├── hiragana.ts
│ │ └── katakana.ts
│ ├── types/ # TypeScript type definitions
│ │ └── index.ts
│ ├── utils/ # Utility functions
│ │ └── progressTracker.ts
│ ├── App.tsx # Main application component
│ ├── App.css # Application styles
│ ├── index.css # Global styles (Tailwind)
│ └── main.tsx # Application entry point
├── .github/
│ └── workflows/ # GitHub Actions CI/CD
│ ├── ci.yml # Continuous integration checks
│ └── claude.yml # Claude Code automation
├── public/ # Static assets
├── index.html # HTML template
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── vite.config.js # Vite configuration
├── .prettierrc.json # Prettier configuration
└── tailwind.config.js # Tailwind CSS configuration
- React 19: UI framework
- TypeScript: Strict type safety and better developer experience
- Vite: Build tool and development server
- Tailwind CSS: Utility-first CSS framework
- Prettier: Code formatting
- ESLint: Code linting
- localStorage: Client-side progress persistence
- All practice sessions are automatically saved to browser localStorage
- Tracks attempts, correct answers, and success rate per character
- Maintains history of all attempts with timestamps
- Data persists across sessions (doesn't require login)
- Overall Stats: Total attempts, correct answers, success rate, characters studied
- Per-Character Stats: Individual success rates with visual progress bars
- Color-coded Performance: Green (80%+), Yellow (50-79%), Red (<50%)
- Reset Progress: Option to clear all data and start fresh
- Avoids showing the same character multiple times in a row
- Maintains a history of recently shown characters
- Ensures variety in practice sessions
- Start Small: Begin with 1-2 character groups and expand as you improve
- Practice Daily: Short, consistent practice sessions are more effective
- Focus on Weak Characters: Use the statistics to identify characters needing more practice
- Write by Hand: Actually writing the characters (not just thinking about them) reinforces memory
- Review Regularly: Practice characters you've already learned to maintain proficiency
- Keyboard shortcuts for faster interaction
- Add calendar view for tracking daily practice streaks
- Stroke order diagrams for visual reference
- Spaced repetition algorithm for optimal practice scheduling
- Practice sessions with time limits
- Support for katakana characters
- Audio pronunciation for each character
- Combination characters (yōon: きゃ, きゅ, きょ, etc.)
- Export/import progress data
- Dark mode toggle
This is a personal learning project, but suggestions and improvements are welcome!
MIT License - feel free to use this for your own learning or projects.
Built for Japanese language learners who want to master hiragana and katakana through consistent, focused practice. がんばって! (Ganbatte! / Good luck!)