docs: VitePress with full vi/en i18n + quiz, exam library, URL shortener guides - #2
Merged
Merged
Conversation
…s to implementation plan
- Move content from docs/ to src/ (paths unchanged), vi as root locale, en placeholder at /en/ - Sidebar/nav per locale, local search, Mermaid, LCOJ logo and brand color - Redirect legacy Docsify hash links (/#/site/x?id=y -> /site/x#y) - Deploy to GitHub Pages via Actions; PRs build-only (dead-link check) - Add refactor plan: plans/2026-09-19-docs-i18n-refactor-design.md Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Mermaid 11.17 depends on CommonJS fastdom, which vitepress-plugin-mermaid doesn't pre-bundle; in `vitepress dev` the page failed with a missing default export and rendered blank. Production build was unaffected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…uides - Translate all 26 existing pages to English under src/en/ (same structure, commands untouched, UI labels match the app's English strings) - New bilingual how-to pages (verified against lcoj-site code), with diagrams: features/quiz, features/quiz_authoring, features/library, features/url_shortener - English sidebar/nav/home; "Features" section in both locales - scripts/check-locales.mjs + CI step: fail if a page exists in only one locale - Render "- [ ]" checklists as checkboxes (markdown-it-task-lists) - Fix nested code fences that broke rendering in managing_problems and management_commands (both locales) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Plan: phase status, decision to use diagrams instead of screenshots, list of doc errors and lcoj-site bugs found while translating - README: every page needs vi + en twins, check:locales, no screenshots Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Replace the inherited VNOI favicon with the LCOJ icon set from lcoj-site resources/icons (ico, 16/32/96, apple-touch, android-chrome) - Add theme-color, Open Graph and Twitter card tags with og_logo.png, same as luyencode.net - Per page: canonical URL, og:url, og:locale, vi/en hreflang alternates, title and description (first paragraph when no frontmatter description) - Home pages get proper titles/descriptions; generate sitemap.xml Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves the docs from Docsify to VitePress with full Vietnamese and English support, and adds how-to guides for features that had no docs.
plans/(local working notes, e.g. the refactor plan) is now gitignored.Platform
docs/tosrc/with the same URLs and keep their git history./#/site/x?id=y→/site/x#y.og_logo.png. Each page gets a canonical URL, vi↔enhreflangalternates, its own title and description, and there is asitemap.xml.master.CNAME(docs.luyencode.net) is kept.i18n
/, and English is at/en/, with a language switcher.npm run check:localesruns in CI and fails if a page exists in only one language.New guides (vi + en, written from the lcoj-site code, with diagrams)
features/quiz: taking a quizfeatures/quiz_authoring: creating quizzesfeatures/library: exam libraryfeatures/url_shortener: URL shortenerFixes
fastdomdependency. Mermaid is now pre-bundled.managing_problemsandmanagement_commands(both languages).- [ ]checklists now render as checkboxes.Not in this PR
This PR removes
docs/, which the current Pages source serves from.Test plan
npm run check:locales: 31 pages in syncnpm run build: clean, no dead links; an extra scan of the built HTML found 0 broken#anchorlinks/#/redirects work in dev and preview/#/...link redirects🤖 Generated with Claude Code