PKC AI Project

AI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณด๊ธ‰ํ˜• ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์—์„œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ฑ—๋ด‡ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ

Korean Learning App/Korean Learning App English Translation

PKC ํ•ด๋ก€ Haerye - A Korean Learning PWA Supporting 11 Languages (Open Source)

AI Orchestrator 2025. 12. 19. 20:46

 

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.

โœจ 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:

 
- Frontend: Vanilla JavaScript (ES6+)
- 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?

  1. Lightweight: Fast loading without framework overhead
  2. Long lifespan: Not dependent on framework updates
  3. Learning purpose: Deep understanding of native browser APIs
  4. Complete control: Full understanding and control of every line of code

๐Ÿ“ Project Structure

Built with a modular architecture for clear separation of concerns:

 
 
js/
โ”‚
โ”œโ”€ 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.

 
 
// locales/en/en.json
{
  "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

 
 
# Clone the repository
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)

  1. Visit the website, tap menu (โ‹ฎ) → "Add to Home screen"
  2. Launch like an app from your home screen

iOS (Safari)

  1. Visit in Safari
  2. Tap share button (โฌ†๏ธ) → "Add to Home Screen"

Desktop (Chrome/Edge)

  1. Click "Install" button in the address bar
  2. 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:

Feel free to reach out with any questions or suggestions! ๐Ÿ˜Š