<!DOCTYPE html>
<html lang="en">
<head>
  <!--
    If you are serving your web app in a path other than the root, change the
    href value below to reflect the base path you are serving from.

    The path provided below has to start and end with a slash "/" in order for
    it to work correctly.

    For more details:
    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

    This is a placeholder for base href that will be replaced by the value of
    the `--base-href` argument provided to `flutter build`.
  -->
  <base href="/">

  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- SEO Meta Tags -->
  <title>JLPT Lessons &amp; Japanese Courses | Kanji, Mock Tests, 1:1 Tutoring — Hishig Erdem</title>
  <meta name="description" content="All-in-one JLPT N5–N1 preparation platform. Kanji lessons, kanji radicals, kanji writing practice, vocabulary, grammar, mock tests, and 1:1 lessons with certified teachers. Start for free.">
  <meta name="keywords" content="JLPT exam, JLPT test, JLPT preparation, learn Japanese, Japanese lessons, Japanese course online, Japanese language course, learn kanji, kanji lessons, kanji radicals, kanji writing practice, JLPT N5 lessons, JLPT N4 lessons, JLPT N3 lessons, JLPT N2 lessons, JLPT N1 lessons, learn hiragana, learn katakana, Japanese grammar, Japanese vocabulary, JLPT mock test, Japanese tutor, JLPT practice test, Japanese course online, JLPT test course, Japanese tutorial online, kanji tutorial, kanji radicals, kanji writing practice, learn Japanese online, Japanese flashcards, JLPT mock test online, JLPT preparation app">
  <link rel="canonical" href="https://jlpt.hishig-edu.com/">

  <!-- Open Graph / Social -->
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://jlpt.hishig-edu.com/">
  <meta property="og:title" content="JLPT Lessons &amp; Japanese Courses — Hishig Erdem">
  <meta property="og:description" content="All-in-one JLPT N5–N1 platform. Kanji lessons, radicals, writing practice, mock tests, and 1:1 tutoring — everything in one place.">
  <meta property="og:image" content="https://jlpt.hishig-edu.com/icons/Icon-512.png">
  <meta property="og:locale" content="en_US">
  <meta property="og:locale:alternate" content="mn_MN">
  <meta property="og:site_name" content="Hishig Erdem">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="JLPT Lessons &amp; Japanese Courses — Hishig Erdem">
  <meta name="twitter:description" content="All-in-one JLPT N5–N1 platform. Kanji, vocabulary, grammar, mock tests, and 1:1 tutoring in one place.">
  <meta name="twitter:image" content="https://jlpt.hishig-edu.com/icons/Icon-512.png">

  <!-- Structured Data: WebSite -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "Hishig Erdem",
    "alternateName": "JLPT Preparation — Hishig Erdem",
    "url": "https://jlpt.hishig-edu.com/"
  }
  </script>

  <!-- Structured Data: EducationalOrganization -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "EducationalOrganization",
    "name": "Hishig Erdem",
    "url": "https://jlpt.hishig-edu.com/",
    "logo": "https://jlpt.hishig-edu.com/icons/Icon-512.png",
    "description": "All-in-one JLPT preparation platform — kanji writing practice, mock tests, vocabulary, grammar, listening, reading, and live Japanese tutoring.",
    "sameAs": []
  }
  </script>

  <!-- Structured Data: FAQPage -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "What is Hishig Erdem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Hishig Erdem is an all-in-one online Japanese learning platform covering JLPT N5–N1 preparation, kanji writing practice, vocabulary, grammar, listening & reading tests, hiragana & katakana, 1:1 tutoring with certified teachers, and structured online courses."
        }
      },
      {
        "@type": "Question",
        "name": "How do the JLPT mock tests work?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Mock tests are available for every level from N5 to N1, covering kanji, vocabulary, grammar, reading, and listening. There are 8+ question formats — multiple choice, fill-in-the-blank, drag & drop, picture-based, and more — all mirroring the real JLPT exam."
        }
      },
      {
        "@type": "Question",
        "name": "How does kanji writing practice work?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "You can trace each kanji on screen, view on/kun readings, meanings, and example words. Use the flashcard system with audio pronunciation to reinforce learning through spaced repetition."
        }
      },
      {
        "@type": "Question",
        "name": "How much does it cost?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Choose from three membership tiers: Sakura, Samurai, or Shogun — available monthly or yearly. Payment accepted in MNT and USD. Some content is free."
        }
      },
      {
        "@type": "Question",
        "name": "How do I book a lesson with a Japanese teacher?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Browse verified teacher profiles in the app, pick a time slot, and attend your 1:1 lesson via Google Meet. Lesson notes, ratings, and history are all saved in the app."
        }
      }
    ]
  }
  </script>

  <!-- iOS meta tags & icons -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="Hishig Erdem">
  <link rel="apple-touch-icon" href="icons/Icon-192.png">
  <link rel="shortcut icon" href="favicon.png" type="image/png">
  <link rel="icon" href="favicon.png" type="image/png">
  <link rel="manifest" href="manifest.json">
  <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4645894558294466"
     crossorigin="anonymous"></script>
</head>
<body>
  <!--
    SEO fallback: static HTML rendered immediately so crawlers (and users on
    slow connections) see real content within the first paint — not a blank
    canvas while main.dart.js is still booting. Flutter replaces the body
    contents when it mounts, so real users never see this layer.
  -->
  <div id="seo-fallback" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 860px; margin: 0 auto; padding: 24px; color: #222; line-height: 1.55;">
    <header style="text-align: center; padding: 32px 0; border-bottom: 1px solid #eee;">
      <h1 style="font-size: 26px; color: #1a237e; margin: 0 0 12px;">JLPT Study &amp; Japanese Courses — Everything in One Place | Hishig Erdem</h1>
      <p style="font-size: 15px; color: #555; margin: 0;">From Hiragana &amp; Katakana to N1. JLPT practice tests, Kanji lessons, radical drills, stroke-order writing practice, vocabulary flashcards, grammar, listening &amp; reading exercises, and 1-on-1 lessons with professional teachers — all in one platform.</p>
      <p style="margin-top: 16px; color: #888; font-size: 13px;">Loading app…</p>
    </header>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">JLPT Practice Tests (N5–N1)</h2>
      <p>Take full-length JLPT practice exams for every level from N5 to N1 on Hishig Erdem. Covering all five skills — Kanji, Vocabulary, Grammar, Reading, and Listening — with 8+ task types that mirror the real JLPT exam format: multiple choice, fill-in-the-blank, drag-and-drop, image recognition, and more.</p>
    </section>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">Kanji Lessons, Radicals &amp; Writing Practice</h2>
      <p>The most effective way to learn Kanji is through writing. Our Kanji lessons let you practice stroke order alongside meaning, on-yomi, kun-yomi, and radicals. Reinforce your knowledge with audio-enabled flashcards for vocabulary and Kanji review.</p>
    </section>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">Hiragana, Katakana &amp; Japanese Lessons for Beginners</h2>
      <p>Start from Hiragana and Katakana, then progress through verb conjugations, numbers, dates, and pronouns — all the Japanese fundamentals in one place. Perfect for absolute beginners starting their Japanese learning journey.</p>
    </section>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">1-on-1 Online Japanese Lessons with a Teacher</h2>
      <p>Book private lessons with professional Japanese teachers via Google Meet. Browse teacher profiles, schedule a session, and receive lesson notes — all inside the app.</p>
    </section>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">Japanese Courses &amp; Certificates</h2>
      <p>Enroll in free and paid Japanese courses, track your progress, and earn a completion certificate when you finish a course.</p>
    </section>

    <section style="padding: 20px 0;">
      <h2 style="font-size: 20px; color: #1a237e;">Frequently Asked Questions</h2>
      <h3 style="font-size: 16px; margin-bottom: 4px;">What is Hishig Erdem?</h3>
      <p>Hishig Erdem is an all-in-one online Japanese learning platform combining JLPT N5–N1 lessons, Kanji writing drills, vocabulary flashcards, grammar, listening &amp; reading tests, Hiragana/Katakana, 1-on-1 teacher sessions, and structured online courses.</p>
      <h3 style="font-size: 16px; margin-bottom: 4px;">How do the JLPT practice tests work?</h3>
      <p>Each level N5–N1 has dedicated Kanji, Vocabulary, Grammar, Reading, and Listening tests with 8+ task types that replicate the real JLPT exam experience.</p>
      <h3 style="font-size: 16px; margin-bottom: 4px;">How do I use the Kanji writing practice?</h3>
      <p>Trace each Kanji stroke by stroke on screen. On-yomi, kun-yomi, meaning, and example words are displayed alongside so you learn everything in context.</p>
      <h3 style="font-size: 16px; margin-bottom: 4px;">How much does it cost?</h3>
      <p>Choose from three membership tiers: Sakura, Samurai, and Shogun. Payment is accepted in both MNT (Mongolian Tögrög) and USD. Some content is free.</p>
      <h3 style="font-size: 16px; margin-bottom: 4px;">How do I book a lesson with a Japanese teacher?</h3>
      <p>Browse teacher profiles in the app, pick a time slot, and join your 1-on-1 session via Google Meet.</p>
    </section>
  </div>
  <!-- <script src="//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.min.js"></script>
<script type="text/javascript">
   pdfjsLib.GlobalWorkerOptions.workerSrc = "//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.worker.min.js";
</script> -->
  <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-app-compat.js"></script>
      <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-database-compat.js"></script>
      <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-auth-compat.js"></script>
      <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-analytics-compat.js"></script>
      <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-storage-compat.js"></script>
      <!-- Initialize Firebase with compat API for analytics -->
  <script>
    var firebaseConfig = {
      apiKey: "AIzaSyDXma4qLVYvf0eSh7kuQ4VFA5TRmS2w-QE",
      authDomain: "hishig-erdem.firebaseapp.com",
      databaseURL: "https://hishig-erdem-default-rtdb.firebaseio.com",
      projectId: "hishig-erdem",
      storageBucket: "hishig-erdem.appspot.com",
      messagingSenderId: "356944658973",
      appId: "1:356944658973:web:371abd63162b825acc3cf4",
      measurementId: "G-7F1GX3HNEL"
    };
    firebase.initializeApp(firebaseConfig);
    firebase.analytics();
  </script>

  <script>
    const serviceWorkerVersion = "894440865";
    var scriptLoaded = false;
    function loadMainDartJs() {
      if (scriptLoaded) {
        return;
      }
      scriptLoaded = true;
      var scriptTag = document.createElement('script');
      scriptTag.src = 'main.dart.js';
      scriptTag.type = 'application/javascript';
      document.body.append(scriptTag);
    }

    // Detect search-engine crawlers so they skip the service worker handshake
    // (which they block anyway) and load main.dart.js immediately. This saves
    // ~4 seconds of rendering budget per crawl and makes indexing reliable.
    var isBot = /bot|crawl|spider|slurp|bing|google|yahoo|duckduck|baidu|yandex/i
      .test(navigator.userAgent);

    if (isBot) {
      loadMainDartJs();
    } else if ('serviceWorker' in navigator) {
      // Service workers are supported. Use them.
      window.addEventListener('load', function () {
        // Wait for registration to finish before dropping the <script> tag.
        // Otherwise, the browser will load the script multiple times,
        // potentially different versions.
        var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion;
        navigator.serviceWorker.register(serviceWorkerUrl)
          .then((reg) => {
            function waitForActivation(serviceWorker) {
              serviceWorker.addEventListener('statechange', () => {
                if (serviceWorker.state == 'activated') {
                  console.log('Installed new service worker.');
                  loadMainDartJs();
                }
              });
            }
            if (!reg.active && (reg.installing || reg.waiting)) {
              // No active web worker and we have installed or are installing
              // one for the first time. Simply wait for it to activate.
              waitForActivation(reg.installing || reg.waiting);
            } else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) {
              // When the app updates the serviceWorkerVersion changes, so we
              // need to ask the service worker to update.
              console.log('New service worker available.');
              reg.update();
              waitForActivation(reg.installing);
            } else {
              // Existing service worker is still good.
              console.log('Loading app from service worker.');
              loadMainDartJs();
            }
          });

        // If service worker doesn't succeed in a reasonable amount of time,
        // fallback to plain <script> tag. Shortened from 4000ms to 1000ms so
        // real users on poor connections also feel the speed-up.
        setTimeout(() => {
          if (!scriptLoaded) {
            console.warn(
              'Failed to load app from service worker. Falling back to plain <script> tag.',
            );
            loadMainDartJs();
          }
        }, 1000);
      });
    } else {
      // Service workers not supported. Just drop the <script> tag.
      loadMainDartJs();
    }
  </script>
</body>
</html>
