Rooibos Documentation Complete Overhaul Proposal

Executive Summary

Goal: Defeat BubbleTea in the marketplace for TUI frameworks. Make Ruby the language people learn to build TUIs.

Rooibos has excellent contributor-facing design documentation but incomplete user-facing guides. This proposal restructures the doc/ directory into a Rails Guides–style information architectureβ€”comprehensive enough to onboard developers who have never written Ruby.


Strategic Context

The Competitive Landscape

Framework Language Docs Scale Target Audience
BubbleTea Go ~50KB + examples Go developers
Iced Rust ~30KB + examples Rust developers
textual Python ~200KB Python developers
Rooibos Ruby ~370KB (target) Everyone

Rooibos should be the Rails of TUI frameworks: the one that makes people want to learn Ruby.

Target Audiences

Unlike Ember/Vue (JS-only), Rooibos targets three distinct audiences:

1. Rubyists

2. Front-End Developers

3. Polyglots / Newcomers

Implications for Documentation

Audience Rails does this Rooibos should do this
Rubyists Assumes Ruby knowledge Same
Non-Rubyists β€œLearn Ruby first” Teach Ruby inline (like Rails’ Getting Started)
Architecture-naive Explains MVC from scratch Explain MVU from scratch
Polyglots Links to Ruby docs Provide comparison tables (β€œIf you know Go…”)

Documentation Scope: Rooibos vs. RatatuiRuby

Rooibos and RatatuiRuby have complementary responsibilities. Avoid duplicating widget/rendering docs.

Topic Rooibos docs teach RatatuiRuby docs (link to)
Architecture MVU loop, functional runtime β€”
State management Model design, Data.define β€”
Messages Types, predicates, routing Event handling (predicates)
Commands Built-in + custom commands, async β€”
Views What a view function is, returning layouts Widgets, styling, layout APIs
Widgets β€” Paragraph, Table, List, Block, etc.
Layouts β€” Rect, Constraint, Layout engine
Testing TestHelper, update testing Buffer assertions, view testing
Debugging Runtime debug mode Terminal debugging, buffer inspection

Strategy: Rooibos views.md explains the contract (what a view function returns) and links out to RatatuiRuby for the actual widget catalog. The tutorial teaches just enough widgets to build the app, with β€œSee RatatuiRuby docs for more” links.


Current State Analysis

RatatuiRuby Documentation (The Gold Standard)

Section Files Total Size Quality
Getting Started 2 ~18KB Complete tutorials with screenshots
Concepts 7 ~49KB Full C-P-S pattern, comprehensive examples
Troubleshooting 3 ~11KB Dedicated problem-solving guides
Index 1 ~1.4KB Clear navigation with section headers

Structure:

doc/
β”œβ”€β”€ index.md                 # Navigation hub
β”œβ”€β”€ getting_started/
β”‚   β”œβ”€β”€ why.md               # Philosophy and comparisons
β”‚   └── quickstart.md        # 292 lines, 3 tutorials, examples gallery
β”œβ”€β”€ concepts/
β”‚   β”œβ”€β”€ application_architecture.md  # 322 lines, lifecycle patterns
β”‚   β”œβ”€β”€ application_testing.md       # 194 lines, test helpers
β”‚   β”œβ”€β”€ async.md                     # 191 lines, background work
β”‚   β”œβ”€β”€ custom_widgets.md            # 248 lines, escape hatch
β”‚   β”œβ”€β”€ debugging.md                 # 402 lines, remote debugging
β”‚   β”œβ”€β”€ event_handling.md            # 163 lines, predicates + patterns
β”‚   └── interactive_design.md        # 147 lines, cached layout
β”œβ”€β”€ troubleshooting/
β”‚   β”œβ”€β”€ async.md
β”‚   β”œβ”€β”€ terminal_limitations.md
β”‚   └── tui_output.md
└── contributors/
    └── ... (15 files)

Rooibos Documentation (Current State)

Section Files Total Size Quality
Getting Started 1 ~2KB Placeholder stubs
Concepts 5 ~27KB Mixed: 2 good, 3 incomplete
Troubleshooting 0 0 Missing entirely
Index 1 ~0.8KB Minimal navigation

Structure:

doc/
β”œβ”€β”€ index.md                 # Minimal, links 2 concept docs
β”œβ”€β”€ getting_started/
β”‚   └── quickstart.md        # 57 lines, ALL placeholders
β”œβ”€β”€ concepts/
β”‚   β”œβ”€β”€ application_architecture.md  # 198 lines, incomplete Core Concepts
β”‚   β”œβ”€β”€ application_testing.md       # 50 lines, placeholder
β”‚   β”œβ”€β”€ async_work.md                # 165 lines, solid C-P-S
β”‚   β”œβ”€β”€ commands.md                  # 531 lines, EXCELLENT
β”‚   └── message_processing.md        # 52 lines, minimal
└── contributors/
    β”œβ”€β”€ design/
    β”‚   β”œβ”€β”€ commands_and_outlets.md  # 215 lines, rich pattern lineage
    β”‚   └── mvu_tea_implementations_research.md  # 374 lines, thorough
    └── WIP/
        └── ...

The Inversion Problem

Rooibos has inverted documentation priority:

Users hit doc/concepts/ first. They don’t discover the rich pattern documentation until they’re already contributors.


Proposed Information Architecture

Research: Rails Guides, Vue.js Docs, and Ember Guides

I examined the actual source files for all three frameworks. Here’s what I found:


Rails Guides (~/Developer/rails/guides/source/)

Scale: 80 markdown files, ~2.5MB total

ToC Structure (documents.yaml):

Start Here
  └── Getting Started with Rails (100KB, 3221 lines!)
  └── Install Ruby on Rails
Models (7 guides)
  └── Active Record Basics
  └── Migrations, Validations, Callbacks, Associations, Querying, Active Model
Views (4 guides)
Controllers (3 guides)
Other Components (7 guides)
Digging Deeper (11 guides)
Going to Production (4 guides)
Advanced Active Record (4 guides)
Extending Rails (5 guides)
Contributing (4 guides)
Policies
Release Notes (19 versions!)

Key Patterns: 1. Massive β€œGetting Started”: 3221 lines, covers everything from install to deployment 2. Each guide has a header: β€œAfter reading this guide, you will know:” (learning objectives) 3. Progressive complexity: Models β†’ Views β†’ Controllers β†’ Other β†’ Digging Deeper β†’ Production 4. Real-world project: Builds β€œstore” e-commerce app throughout


Vue.js Docs (~/Developer/docs/src/guide/)

Scale: 8 subdirectories, ~70 files

Directory Structure:

introduction.md (12KB)
quick-start.md (15KB)
essentials/ (13 files, ~144KB)
  └── reactivity-fundamentals.md (20KB)
  └── template-syntax.md, computed.md, class-and-style.md...
components/ (9 files, ~103KB)
  └── props.md (20KB), slots.md (24KB), v-model.md (19KB)...
reusability/ (4 files)
built-ins/ (18 files)
scaling-up/ (6 files)
typescript/ (3 files)
best-practices/ (4 files)
extras/ (15 files)

Key Patterns: 1. API Preference Toggle: Every page has Options API vs Composition API versions 2. Deep outline: Uses outline: deep frontmatter for rich ToC 3. Interactive examples: β€œTry it in the Playground” links throughout 4. Progressive disclosure: essentials β†’ components β†’ reusability β†’ scaling-up β†’ best-practices 5. β€œWhy” sections: β€œWhy Refs?” explains design decisions


Ember Guides (~/Developer/guides-source/guides/release/)

Scale: 23 sections, ~150 files, pages.yml defines structure

ToC Structure (pages.yml):

Introduction
  └── Guides and Tutorials
Getting Started (7 pages)
  └── How To Use The Guides, Quick Start, Anatomy of an Ember App
Tutorial (2 parts, 15 pages)
  └── Part 1: Orientation β†’ Building Pages β†’ Testing β†’ Components
  └── Part 2: Route Params β†’ Service Injection β†’ EmberData
--- Core Concepts ---
Components (11 pages)
Routing (11 pages)
Services (1 page)
EmberData (9 pages)
In-Depth Topics (6 pages)
--- Application Development ---
Application Concerns (5 pages, all marked "isAdvanced")
Accessibility (6 pages)
Configuration (10 pages)
Testing (10 pages)
TypeScript (16 pages)
--- Developer Tools ---
Build Tooling, Ember Inspector (12 pages), Code Editors
--- Additional Resources ---
Upgrading, Contributing, Glossary

Key Patterns: 1. Section headings in ToC: is_heading: true creates visual groupings 2. isAdvanced flag: Marks optional/advanced content 3. Tutorial-driven: Full 15-page tutorial building a complete app 4. Component-centric structure: Components section has 11 deep pages 5. Mascot callouts: β€œZoey says…” and β€œTomster says…” for tips


Synthesis: Key Patterns from Deep Research

From reading 12 docs across all three frameworks (Vue’s quick-start, watchers, component-basics, props, render-function; Rails’ testing, association_basics; Ember’s reusable-components tutorial, native-classes-in-depth):

Content Patterns

Pattern Example Apply to Rooibos
Learning objectives header Rails: β€œAfter reading this guide, you will know:” Top of every doc
Dual API presentation Vue shows Options API + Composition API side-by-side Show Data.define + Struct alternatives
Massive reference tables Rails testing.md: 30+ assertion methods in a table Commands reference table
TIP/NOTE/WARNING callouts All three use these extensively Use consistently
Playground links Vue: β€œTry it in the Playground” after every example Link to example apps
Mascot callouts Ember: β€œZoey says…” tips Consider a Rooibos mascot
Version badges Vue: <sup class="vt-badge" data-text="3.5+"> Mark new v1.0 features

Structural Patterns

Pattern Example Apply to Rooibos
Tutorial builds real app Ember: 15-part tutorial building β€œSuper Rentals” Build a TODO or chat app
Progressive disclosure Vue: essentials β†’ components β†’ extras essentials β†’ in_depth β†’ patterns
Exhaustive method lists Rails: every association method documented Every Command method documented
isAdvanced flags Ember: marks optional advanced content Mark Ractor safety, parallel streaming
Cross-references All: β€œSee also [X]” links throughout Required in every doc

Scale Comparison (Corrected)

Framework User docs Total size
Rails 75 files ~2.5MB
Vue 52 files ~400KB
Ember 125 files ~500KB
RatatuiRuby 12 files ~80KB
Rooibos (current) 6 files ~29KB
Rooibos (target) 40+ files ~370KB

The target scale is ~13x larger than current, matching Ember-scale ambition.

Fresh Start: Delete All Current Docs

[!CAUTION] Delete all existing user-facing documentation (doc/ except doc/contributors/). We are starting from scratch with a completely new information architecture.

Proposed Structure (47 files, ~380KB total)

doc/
β”œβ”€β”€ index.md                         # Navigation hub with audience paths (~5KB)
β”‚
β”œβ”€β”€ getting_started/                 # 8 files, ~55KB
β”‚   β”œβ”€β”€ index.md                     # "Choose your path" (audience routing)
β”‚   β”œβ”€β”€ why_rooibos.md               # Philosophy, BubbleTea comparison
β”‚   β”œβ”€β”€ install.md                   # Ruby + gem installation (for non-Rubyists)
β”‚   β”œβ”€β”€ quickstart.md                # 500+ lines, Hello World β†’ HTTP app
β”‚   β”œβ”€β”€ for_react_developers.md      # "If you know Redux..." bridge
β”‚   β”œβ”€β”€ for_go_developers.md         # BubbleTea β†’ Rooibos translation guide
β”‚   β”œβ”€β”€ for_python_developers.md     # Textual β†’ Rooibos translation guide
β”‚   └── ruby_primer.md               # Ruby basics for polyglots
β”‚
β”œβ”€β”€ tutorial/                        # 32 files, ~250KB (TDD-first, one concept per step)
β”‚   β”œβ”€β”€ index.md                     # Tutorial overview, what you'll build
β”‚   β”œβ”€β”€ 01_project_setup.md          # Story -4: Creating project structure
β”‚   β”œβ”€β”€ 02_hello_world.md            # Story -3: VIEW, UPDATE, quit
β”‚   β”œβ”€β”€ 03_static_file_list.md       # Story -2: MODEL, INIT, testing intro ⭐
β”‚   β”œβ”€β”€ 04_arrow_navigation.md       # Story -1: State updates, more tests
β”‚   β”œβ”€β”€ 05_real_files.md             # Story 0: Tests break, learn mocking ⭐⭐⭐
β”‚   β”‚                                # (Stories 1-2 covered by Steps 03-05)
β”‚   β”œβ”€β”€ 06_safe_refactoring.md       # Extract fragment, tests protect ⭐
β”‚   β”œβ”€β”€ 07_red_first_tdd.md          # Story 3: Enter Directories via TDD ⭐⭐
β”‚   β”œβ”€β”€ 08_multi_fragment_layout.md  # Story 4: PathBar + Preview placeholder ⭐
β”‚   β”œβ”€β”€ 09_file_metadata.md          # Story 5: Pre-calculation pattern
β”‚   β”œβ”€β”€ 10_text_preview.md           # Story 6: File reading, scrolling
β”‚   β”œβ”€β”€ 11_directory_tree.md         # Story 7: Recursive data structures
β”‚   β”œβ”€β”€ 12_pane_focus.md             # Story 8: Message routing
β”‚   β”œβ”€β”€ 13_sorting.md                # Story 9: Pre-calculation (sort in UPDATE)
β”‚   β”œβ”€β”€ 14_filtering.md              # Story 10: Manual text input (cursor state)
β”‚   β”œβ”€β”€ 15_toggle_hidden.md          # Story 11: Conditional rendering
β”‚   β”œβ”€β”€ 16_text_input_widget.md      # Story 12: Cancellation tokens ⭐
β”‚   β”œβ”€β”€ 17_rename_files.md           # Story 13: Pre-populated input
β”‚   β”œβ”€β”€ 18_confirmation_dialogs.md   # Story 14: Modal UI state
β”‚   β”œβ”€β”€ 19_progress_indicators.md    # Story 15: Long-running with progress ⭐
β”‚   β”œβ”€β”€ 20_atomic_operations.md      # Story 16: Fallback strategies
β”‚   β”œβ”€β”€ 21_external_editor.md        # Story 17: Suspend/resume
β”‚   β”œβ”€β”€ 22_modal_overlays.md         # Story 18: Help overlay pattern
β”‚   β”œβ”€β”€ 23_error_handling.md         # Story 19: Auto-dismiss timers
β”‚   β”œβ”€β”€ 24_terminal_capabilities.md  # Story 23: NO_COLOR, fallbacks ⭐
β”‚   β”œβ”€β”€ 25_mouse_events.md           # Story 20: Optional input handling
β”‚   β”œβ”€β”€ 26_resize_events.md          # Story 21: Responsive layouts
β”‚   β”œβ”€β”€ 27_loading_states.md         # Story 22: Tri-state models
β”‚   β”œβ”€β”€ 28_performance.md            # Story 24: Profiling, optimization
β”‚   β”œβ”€β”€ 29_color_schemes.md          # Story 26: Theme system
β”‚   β”œβ”€β”€ 30_configuration.md          # Story 27: Config files
β”‚   └── 31_going_further.md          # Links to advanced topics
β”‚
β”œβ”€β”€ essentials/                      # 8 files, ~80KB (Vue-style concepts)
β”‚   β”œβ”€β”€ the_elm_architecture.md      # MVU pattern + "Why MVU?"
β”‚   β”œβ”€β”€ models.md                    # Data.define, state design, immutability
β”‚   β”œβ”€β”€ messages.md                  # Types, predicates, pattern matching
β”‚   β”œβ”€β”€ update_functions.md          # Pure functions, case expressions
β”‚   β”œβ”€β”€ views.md                     # RatatuiRuby integration, fragments
β”‚   β”œβ”€β”€ commands.md                  # Built-in commands reference
β”‚   β”œβ”€β”€ the_runtime.md               # The loop, debug mode
β”‚   └── shortcuts.md                 # Cmd, Msg module aliases
β”‚
β”œβ”€β”€ scaling_up/                      # 7 files, ~70KB (Vue-inspired)
β”‚   β”œβ”€β”€ custom_commands.md           # out, token, call signature
β”‚   β”œβ”€β”€ command_composition.md       # out.source, out.standing, out.last
β”‚   β”œβ”€β”€ fractal_architecture.md      # Cmd.map, nested fragments
β”‚   β”œβ”€β”€ message_routing.md           # Router DSL, Rooibos.route
β”‚   β”œβ”€β”€ ractor_safety.md             # Shareability, freezing, Callable pattern
β”‚   β”œβ”€β”€ async_patterns.md            # Streaming, polling, websockets
β”‚   └── testing.md                   # Comprehensive testing guide
β”‚
β”œβ”€β”€ best_practices/                  # 6 files, ~50KB
β”‚   β”œβ”€β”€ modal_dialogs.md             # Result routing patterns
β”‚   β”œβ”€β”€ forms_and_validation.md      # Input handling, error display
β”‚   β”œβ”€β”€ lists_and_tables.md          # Scrolling, selection, pagination
β”‚   β”œβ”€β”€ http_workflows.md            # Loading states, retries, caching
β”‚   β”œβ”€β”€ streaming_data.md            # SSE, websockets, log tailing
β”‚   └── orchestration.md             # Command.all, sequential flows
β”‚
β”œβ”€β”€ troubleshooting/                 # 3 files, ~15KB
β”‚   β”œβ”€β”€ common_errors.md             # Table of errors β†’ fixes
β”‚   β”œβ”€β”€ debugging.md                 # Logging, inspection, debug: true
β”‚   └── performance.md               # Render optimization
β”‚
└── contributors/                    # KEEP existing excellent docs
    └── ...

File count: 65 files
Target size: ~520KB (avg ~8KB per file)


Pedagogical Innovation: TDD-First Tutorial

The Step 3 β†’ Step 5 Teaching Arc

Our tutorial introduces a controlled failure that teaches professional testing practices:

Step 3: Static File List + Testing Introduction - Introduce Rooibos::TestHelper - Write first snapshot tests with hardcoded data - Tests PASS βœ… - students feel successful - Teaches: Testing is easy, tests build confidence

Step 4: Arrow Navigation + More Tests - Test state transitions in UPDATE - Tests PASS βœ… - confidence grows - Teaches: Testing UPDATE functions, building test habits

Step 5: Real Files - Tests Break! πŸ’₯ - Student changes INIT to use Dir.children(".") - Runs tests β†’ ❌ SNAPSHOT MISMATCH - The Teaching Moment: β€œYour tests broke! Why? The filesystem is non-deterministic.” - Introduce mocking with Dir.stub - Tests PASS βœ… - relief and understanding - Teaches: Why mocking matters (determinism, speed, isolation)

Step 6: Safe Refactoring with Tests - Extract first fragment (file list) from monolithic app - Run snapshot tests β†’ still pass βœ…- Teaches: Tests enable fearless refactoring, fragments are just modules

Step 7: Red-First TDD (Story 3: Enter Directories) - Learner discovers snapshots can’t drive design (auto-create on first run, no β€œred” phase) - Write failing assertion-based test: β€œEnter on directory changes path” ❌ (red) - Implement directory traversal in FileList::Update βœ… (green) - Write failing test: β€œEnter on file does nothing” ❌ (red) - Implement the guard βœ… (green) - Write failing test: β€œBackspace goes to parent” ❌ (red) - Implement parent navigation βœ… (green) - Teaches: Red-Green-Refactor, assertion tests vs snapshots, TDD workflow

Why This Beats the Competition

Framework Testing in Tutorial? When? Approach
BubbleTea ❌ No N/A No testing guidance
Iced ❌ No N/A No testing guidance
textual βœ… Yes After features Testing as afterthought
Rails βœ… Yes Chapter 10/12 Testing comes late
Ember βœ… Yes Throughout Integrated testing
Rooibos βœ… Yes Step 3/25 TDD from the start ⭐

Our advantages: 1. Earlier than Rails - Testing at Step 3, not Step 10 2. Integrated like Ember - Every step includes tests 3. Better than BubbleTea/Iced - They have no testing guidance at all 4. Experiential learning - Students experience the pain (broken tests) then learn the solution (mocking) 5. Professional practices - Mocking, snapshot testing, TDD mindset from the beginning

Alignment with Documentation Style Guide

From documentation_style.md:

Do first, explain after β€” Show the code, let them run it, then explain

Our Step 5 approach: 1. Do: Change INIT to use real files 2. See: Tests fail ❌3. Experience: β€œWhat happened? Why did they break?” 4. Do: Add Dir.stub mocking 5. See: Tests pass βœ…6. Understand: β€œWhy mocking matters for deterministic tests”

This is experiential learning - the student discovers WHY through controlled failure, not lecture.

Detailed Content Plan

All content is new. We’re starting fresh β€” no annotations like [NEW]/[REWRITE].

Getting Started (8 files, ~55KB)

File Est. KB Description
index.md 3 β€œChoose your path” audience routing
why_rooibos.md 8 TEA philosophy, BubbleTea comparison table
install.md 5 Ruby install for non-Rubyists, gem setup
quickstart.md 15 500+ lines: Hello World β†’ HTTP app
for_react_developers.md 8 Redux β†’ MVU mental model bridge
for_go_developers.md 6 BubbleTea β†’ Rooibos translation
for_python_developers.md 6 Textual β†’ Rooibos translation
ruby_primer.md 5 Ruby basics for polyglots

Tutorial (32 files, ~250KB)

A comprehensive TDD-first tutorial building a File Browser using Ruby’s Pathname/File.

Key Innovation: Testing introduced at Step 3, with controlled failure at Step 5 teaching why mocking matters.

File Est. KB Stories Description
index.md 3 β€” What you’ll build, prerequisites
01_project_setup.md 6 -4 Gemfile, folder structure
02_hello_world.md 8 -3 VIEW, UPDATE, Messages, Command.exit
03_static_file_list.md 10 -2 MODEL, INIT, testing intro ⭐
04_arrow_navigation.md 8 -1 State updates (.with), more tests
05_real_files.md 12 0 Tests break, learn mocking ⭐⭐⭐
06_safe_refactoring.md 8 β€” Extract fragment, tests protect ⭐
07_red_first_tdd.md 10 3 Enter Directories via assertion-based TDD ⭐⭐
08_multi_fragment_layout.md 8 4 PathBar + Preview placeholder, layout ⭐
09_file_metadata.md 8 5 Pre-calculation pattern (sort in UPDATE)
10_text_preview.md 8 6 File reading, text detection, scrolling
11_directory_tree.md 10 7 Recursive data structures in Model
12_pane_focus.md 8 8 Message routing, context-sensitive keys
13_sorting.md 8 9 Pre-calculation (no VIEW computation!)
14_filtering.md 8 10 Manual text input (cursor state)
15_toggle_hidden.md 6 11 Conditional rendering, visual styling
16_text_input_widget.md 10 12 Cancellation tokens, Command.cancel ⭐
17_rename_files.md 8 13 Pre-populated input, validation
18_confirmation_dialogs.md 8 14 Modal UI state, Y/N handling
19_progress_indicators.md 8 15 Long-running with progress ⭐
20_atomic_operations.md 8 16 Fallback strategies, error recovery
21_external_editor.md 8 17 Suspend/resume, process spawning
22_modal_overlays.md 8 18 Help overlay pattern
23_error_handling.md 8 19 Auto-dismiss timers (Command.wait)
24_terminal_capabilities.md 10 23 NO_COLOR, ANSI/ASCII fallbacks ⭐
25_mouse_events.md 8 20 Optional input, capability detection
26_resize_events.md 8 21 Responsive layouts, degradation
27_loading_states.md 8 22 Tri-state models, cancellable Commands
28_performance.md 8 24 Profiling, optimization, caching
29_color_schemes.md 8 26 Theme system, validation
30_configuration.md 8 27 YAML parsing, config files
31_going_further.md 5 β€” Links to scaling_up/ and best_practices/

Tutorial Philosophy:

  1. Automated tests from Step 3, TDD from Step 7 - Tests are not optional, they’re fundamental

  2. Controlled failure at Step 5 - Tests break when adding real files, teaching why mocking matters

  3. Snapshots vs assertions at Step 7 - Snapshots guard regressions; assertions drive design

  4. One pedagogical moment per step - Each step teaches ONE concept clearly

  5. 31 steps total - Comprehensive coverage of all file browser stories

Essentials (8 files, ~80KB)

Vue-style conceptual docs. Each follows Context-Problem-Solution.

File Est. KB Description
the_elm_architecture.md 12 MVU pattern + β€œWhy MVU?”
models.md 10 Data.define, immutability, state design
messages.md 10 Types, predicates, pattern matching
update_functions.md 8 Pure functions, case expressions, Command returns
views.md 8 View function contract, links to RatatuiRuby widgets
commands.md 15 Built-in commands reference (wait, http, batch, all)
the_runtime.md 10 The loop, debug mode
shortcuts.md 5 Cmd, Msg module aliases

Scaling Up (7 files, ~70KB)

Advanced architecture topics.

File Est. KB Description
custom_commands.md 12 out, token, call signature
command_composition.md 12 out.source, out.standing, out.last
fractal_architecture.md 12 Cmd.map, nested fragments, Router DSL
message_routing.md 10 Rooibos.route, delegate patterns
ractor_safety.md 8 Shareability, freezing, Callable pattern
async_patterns.md 10 Streaming, polling, websockets
testing.md 10 Comprehensive TestHelper guide

Best Practices (6 files, ~50KB)

Pattern cookbook for common scenarios.

File Est. KB Description
modal_dialogs.md 8 Result routing, dialog patterns
forms_and_validation.md 10 Input handling, error display
lists_and_tables.md 8 Scrolling, selection, pagination
http_workflows.md 10 Loading states, retries, caching
streaming_data.md 8 SSE, websockets, log tailing
orchestration.md 8 Command.all, sequential flows

Troubleshooting (3 files, ~15KB)

File Est. KB Description
common_errors.md 6 Table: error message β†’ cause β†’ fix
debugging.md 5 Logging, inspection, debug: true
performance.md 4 Render optimization

Style Guide

Concept docs (Essentials, Scaling Up, Best Practices) follow the Alexandrian form: - Context-Problem-Solution structure - Active voice, short sentences - Comprehensive examples with headers - Cross-references to related docs (3+ per file) - Links to RatatuiRuby for widget/layout details

Tutorial chapters follow a progressive build pedagogy: - Do this β†’ see that β†’ now understand why - Hands-on first, explanation after - Each chapter builds on the previous


Metrics for Success

Metric Target
Total size ~510KB
Files 64
Avg per file ~8KB
Tutorial steps 30 (TDD from Step 3)
Cross-refs per doc 3+
Audience coverage Rubyists, Front-end devs, Polyglots
Testing introduced Step 3 (earlier than all competitors)
Pedagogical moments One per step (clear, focused learning)