WritingPractice
Writing practice β number/hangul/english/hanja + print/online mode + learning flow (Layer 3 Domain).
Statusβ
| Key | Value |
|---|---|
| Layer | domain |
| Tier | L1 |
| Status | deprecated |
| Version | 0.9.0 |
| Price | Free (free) |
| Category | Learning |
Overviewβ
Overviewβ
WritingPractice is a Layer 3 Domain Plugin of multi-saas-kit. The final goal of this plugin extraction effort β provides content model, print layout, learning flow, and scoring logic for number/hangul/english/hanja writing practice.
Layered atop HandwritingInput Composite (DigitalInk + BrushConfiguration + RecognitionBridge) and DocumentProcessor.
Content Modelβ
Writing Practice (Program)
βββ Number (1~9, 0, two-digit)
βββ Hangul (consonants, vowels, jongseong)
βββ English (uppercase, lowercase, words)
βββ Hanja (basic strokes, number characters, basic chars)
MVP: Number 1~9 writing
Core Componentsβ
Enums (2)β
| Enum | Cases |
|---|---|
WritingProgram | NUMBER / HANGUL / ENGLISH / HANJA |
WritingTemplate | MODEL_THEN_TRACE / BLANK_ONLY / STROKE_ORDER / QUIZ |
WritingItem (DTO)β
Single-character practice target: character, program, romanization, strokeCount, audioUrl.
PrintLayoutCalculator (Pure)β
Decides A4 print layout. mm coordinates + cells_per_row / rows_per_page / total_pages.
AttemptScorer (Pure)β
Naive student-vs-model stroke comparison. Average distance of 3 samples (start/mid/end) per stroke β 100-point scale. Stroke count diff penalty: -10 points/stroke.
Configurationβ
return [
'enabled' => env('PLG_WRITING_PRACTICE_ENABLED', true),
'print' => [
'page_width_mm' => 210.0, 'page_height_mm' => 297.0,
'margin_mm' => 15.0,
'cell_size_mm' => 24.0, 'cell_spacing_mm' => 4.0,
'header_reserve_mm' => 30.0,
],
'scoring' => [
'min_score' => 60,
'distance_scale' => 200,
],
];
Usageβ
$layout = PrintLayoutCalculator::fromConfig(config('writing-practice'))->calculate(45);
$score = AttemptScorer::fromConfig(config('writing-practice'))->score($modelStrokes, $studentStrokes);
if ($score['passed']) { /* next character */ }
Dependenciesβ
- HandwritingInput β student stroke input
- DocumentProcessor β model content HTML rendering
Roadmap (Phase 3+)β
- Standard
WritingProgram/Unit/Lesson/Item/TemplateModels + Migrations (opt-in) - Filament Resource
- Livewire canvas component
- DTW-based advanced scoring
- Hanja stroke order animation
- writing_attempts log
Originβ
New plugin β Phase 2 MVP outcome of the writing-practice plugin discussion (2026-04-30).
Licenseβ
MIT
Dependenciesβ
Demosβ
- Platform κ΄λ¦¬μ ν¨λμμ λ©ν νμΈ π Login required
- μ¬μ© μμ (PHP)
π View on Plugin Store: store.codebase.how/plugins/writing-practice