A browser-based worksheet generator for Chinese handwriting practice (elementary school Chinese curriculum). Configure content, typeface, grid, and paper on the left, get a real-scale print preview on the right, and print a millimeter-accurate practice sheet.
Content can be typed by hand or imported from the built-in standard textbook data (character lists / writing lists / word lists), filterable by grade, volume, list type, and lesson.
Two practice modes:
- Character practice — one character plus N faded tracing repetitions, based on the character/writing lists.
- Word practice — laid out by word: a word and its tracing copies never split across lines.
- What you see is what prints, at true size. A 10mm grid in the settings prints as 10mm ± 0.2mm.
- Client-side only, works offline. Rendering and pagination don't depend on a server; textbook data is a build-time asset, not a runtime API.
- Fully serializable configuration. The entire UI state can be described by one JSON object, used for URL sharing and local persistence.
- Words never split across lines. In word-practice mode, a word and its tracing copies must fit on the same line, even if it leaves trailing space.
- SvelteKit 2 + Svelte 5 (runes)
- TypeScript (strict)
- SVG rendering in millimeter units
- UnoCSS
- Vitest (unit) + Playwright (E2E / print)
- Deployed as a static site to GitHub Pages (
@sveltejs/adapter-static)
pnpm install
pnpm devBuild a production bundle:
pnpm build
pnpm previewpnpm check # type-check
pnpm lint # prettier + eslint
pnpm test # unit tests (vitest)See CONTRIBUTING.md.
MIT