ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Free Korean verb conjugator. Get every tense and politeness level — casual, polite, and formal — for any Korean verb, with romanization.
EducationJavaScript · CSSGitHub @playhousegamesOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A free, fast Korean verb conjugator built as a programmatic-SEO site. Every verb gets its own statically-generated page showing the full conjugation table — present / past / future across casual, polite, and formal speech levels — plus extra forms (command, suggestion, question, connectives) and romanization.
The strategy: each page is a genuinely useful interactive reference, not thin content. That's the kind of page AI Overviews summarize but can't replace, and it earns links because people bookmark and share a tool that works.
npm install
npm run dev # regenerates conjugations, then starts the dev server
# open http://localhost:3000
Build for production:
npm run build # runs the generator (prebuild), then next build
npm start
The prebuild script regenerates data/conjugations.json on every Vercel build,
so adding verbs and pushing is all it takes to publish new pages.
Before going live, set your real domain in lib/site.js (the url field is
used for canonical tags, Open Graph, the sitemap, and robots).
data/verbs.js seed list — the single source of truth for what pages exist
scripts/generate.js plain-Node build step: runs the engine over every verb,
writes data/conjugations.json
lib/korean/engine.js wrapper: curates forms + fixes the polite-present bug
lib/korean/bravender/* vendored conjugation algorithm (AGPL — see Licensing)
data/conjugations.json GENERATED. precomputed output the pages import
app/conjugate/[verb]/ the page template, statically rendered per verb (SSG)
app/page.js homepage + searchable verb index
app/sitemap.js, robots.js auto-generated from the verb list
Why precompute into JSON instead of calling the engine inside the app? The conjugation library is written in old-style ("sloppy mode") JavaScript that a modern bundler can't compile directly. Running it once in plain Node at build time sidesteps that entirely and keeps the algorithm out of the shipped bundle — smaller, faster, and the pages just read static data.
The JavaScript port of the conjugator corrupts the stem of ㄷ-irregular verbs in
the polite present form (e.g. 듣다 → 㭤어요 instead of 들어요). Because the
polite present is always "casual present + 요" for every verb class,
lib/korean/engine.js rebuilds those three forms from the verified casual form.
The generator fails the build if the corruption marker ever appears, so a bad
form can't ship silently.
Open data/verbs.js and add an entry:
{ hangul: '읽다', slug: 'ikda', en: 'to read', type: 'regular' },
hangul — dictionary form, must end in 다.slug — unique, ASCII, used in the URL (/conjugate/ikda). Revised
romanization is the convention here; just keep it unique.en — concise meaning. This drives "how to say X in Korean" search intent.type — grammatical class label (display only; conjugation is automatic).Then npm run generate (or just build/deploy). The new page, its sitemap entry,
and its internal links appear automatically.
To scale to thousands of verbs, generate data/verbs.js from a source like the
Wiktionary Korean verb category plus a TOPIK frequency list, prioritising the
words people actually search. Keep the file as plain data — everything
downstream is automatic.
The conjugation algorithm in lib/korean/bravender/ is © Dan Bravender,
licensed under AGPL-3.0 (see LICENSE-AGPL.txt and COPYRIGHT in that folder).
The two files modified for strict-mode/bundler compatibility are marked inline.
AGPL-3.0 includes a network-use clause (section 13): if users interact with this software over a network (i.e. a public website), you must offer them the complete corresponding source code of the AGPL-covered portion, including any modifications.
Practical compliance, kept simple:
lib/korean/ (it already is).This does not force you to open-source your whole site — only the AGPL'd
module and changes to it. If you'd prefer no copyleft obligation at all, replace
lib/korean/bravender/ with a clean-room conjugator and update engine.js
accordingly (more work, and conjugation correctness is the hard part).
Your own code in this project (everything outside lib/korean/bravender/) is
yours to license as you wish.