Hello, I'm PKC! ๐
Today, I'm excited to introduce "Haerye", a Korean learning web app I've been developing for about a month. It's now open-sourced on GitHub and free for anyone to use.
Experience the best free way to learn Korean for beginners on our dedicated web platform without the need for installing any apps. As a high-performance web app site, Haerye provides a seamless, browser-based experience to study everything from Hangul to grammar anytime, anywhere. This zero-install web site is the ultimate platform for global learners seeking comprehensive and accessible Korean education.
๐ฏ Project Overview
Haerye is an all-in-one Korean learning platform designed for foreign learners. It provides a structured learning path from absolute beginner to low-intermediate level, leveraging PWA (Progressive Web App) technology for an app-like experience.
- Website: https://www.haerye.com/
- GitHub: https://github.com/PKC0412/Haerye
- License: GPLv3 (free for non-commercial use)
โจ Key Features
1. Comprehensive Learning Modules
- Hangul Learning: 19 consonants, 21 vowels, and final consonants
- Vocabulary: 300+ words across 15 categories
- Greetings, food, people, places, school, time, transportation, numbers, colors, body parts, nature, adjectives, verbs, etc.
- Grammar: Systematically organized into 11 categories
- Particles, tenses, negation, comparison, conditionals, connectives, endings, quotations, voice, sentence structure
- Flashcards: Spaced repetition learning system
- Learning Statistics: Daily/weekly trends, mastery analysis, personalized recommendations
2. 11-Language Support ๐
The entire UI and learning content are available in 11 languages:
๐ฌ๐ง English | ๐ฉ๐ช Deutsch | ๐ช๐ธ Español | ๐ซ๐ท Français | ๐ฎ๐น Italiano
๐ฏ๐ต ๆฅๆฌ่ช | ๐ณ๐ฑ Nederlands | ๐ต๐น Português | ๐ท๐บ ะ ัััะบะธะน | ๐น๐ญ เนเธเธข | ๐จ๐ณ ไธญๆ
3. PWA Capabilities
โ
Partial offline support (Service Worker)
โ
Installable to home screen
โ
Fast loading speeds
โ
Automatic light/dark mode
โ
TTS pronunciation support (Web Speech API)
โ
Responsive design (optimized for PC/mobile)
๐ Tech Stack
Built entirely with pure Vanilla JavaScript without any frameworks:
- Styling: CSS3 (CSS Variables, Grid, Flexbox)
- PWA: Service Worker, Web App Manifest
- API: Web Speech API (TTS)
- Storage: LocalStorage
- Hosting: GitHub Pages
Why Vanilla JS?
- Lightweight: Fast loading without framework overhead
- Long lifespan: Not dependent on framework updates
- Learning purpose: Deep understanding of native browser APIs
- Complete control: Full understanding and control of every line of code
๐ Project Structure
Built with a modular architecture for clear separation of concerns:
โ
โโ core/ (Core System)
โ โโ app.js (App initialization)
โ โโ ui-manager.js (UI controller)
โ โโ settings.js (Settings management)
โ โโ theme.js (Theme switching)
โ โโ ...
โ
โโ renderers/ (UI Rendering)
โ โโ header-renderer.view.js
โ โโ nav-renderer.js
โ โโ stats-renderer.js
โ โโ ...
โ
โโ features/ (Learning Features)
โโ hangul-learning.js
โโ vocabulary-learning.js
โโ grammar-view.js
โโ flashcard.js
โโ ...
Total File Statistics:
- JavaScript: 27 modules
- CSS: 15 files
- Translation files: 187 (11 languages × 17 files)
๐จ Key Development Considerations
1. Modularity and Maintainability
Each feature is separated into independent modules for easy maintenance and expansion. For example:
- learning-progress.model.js: Data model
- learning-progress.storage.js: Storage logic
- learning-progress.runtime.js: Runtime logic
2. Internationalization (i18n) System
I built a custom i18n system to support 11 languages. All text is managed in JSON files and updates instantly when switching languages.
{
"home.title": "Learn Korean Easily",
"vocabulary.greeting": "Greetings",
...
}
3. Learning Statistics System
Using LocalStorage to track user learning data, providing:
๐ Daily/weekly learning trend graphs
๐ Category-wise word mastery
๐ฅ Grammar learning heatmap
๐ก Personalized learning recommendations
4. TTS Pronunciation Support
Utilizes the Web Speech API for browser-native Korean TTS. However, there are limitations on iOS Safari, so I've provided detailed user guidance.
๐ Running Locally
git clone https://github.com/PKC0412/Haerye.git
cd Haerye
# Run Python server
python -m http.server 8000
# Or Node.js
npx http-server -p 8000
# Open in browser
# http://localhost:8000
๐ฑ PWA Installation Guide
Android (Chrome)
- Visit the website, tap menu (โฎ) → "Add to Home screen"
- Launch like an app from your home screen
iOS (Safari)
- Visit in Safari
- Tap share button (โฌ๏ธ) → "Add to Home Screen"
Desktop (Chrome/Edge)
- Click "Install" button in the address bar
- App icon added to Dock/taskbar
๐ฎ Future Roadmap
Features currently in planning:
- Dictation learning
- Pronunciation evaluation system (using Web Speech API)
- Situational conversation scenarios
- Vocabulary expansion (300 → 1,200+ words)
- Enhanced quiz system
- Audio example sentences
๐ก What I Learned During Development
1. The Power of PWA
It was impressive how PWA can provide an app-like experience without native app development. Features like offline support through Service Workers and home screen installation really showcase PWA's potential.
2. Vanilla JS is Sufficient
You can definitely build large-scale web apps without frameworks. In fact, gaining a deeper understanding of native browser APIs led to more efficient code.
3. The Importance of Internationalization
Designing with i18n in mind from the start made supporting 11 languages much easier than expected. Multi-language support is essential for reaching a global audience.
๐ Known Issues
- Language switching bug: Occasionally language switching may not work → Refresh (F5) to resolve
- iOS TTS limitation: Safari's autoplay policy may prevent the first pronunciation from playing → Tap twice to activate
๐ License
Following a Dual License Policy:
- Non-commercial/Open Source use: GPLv3 (free to use, fork, and redistribute)
- Commercial use: Separate license required
Contact: pkc0412@gmail.com
๐ Closing Thoughts
After about a month of development, I'm excited to release the first version. While it's not perfect, I hope it serves as a solid starting point for foreign learners to systematically study Korean.
If you're interested in the project, please give it a โญ star on GitHub or contribute through issues and PRs!
Project Links:
- Website: https://www.haerye.com/
- GitHub: https://github.com/PKC0412/Haerye
Feel free to reach out with any questions or suggestions! ๐