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
-
Know: Ruby syntax, OOP, Rails/Hanami patterns
-
Donβt know: Functional programming, long-lived stateful apps (Rails is request/response)
-
Need: Conceptual bridge from stateless web to stateful TUI, MVU mental model
2. Front-End Developers
-
Know: JavaScript, React (passive MVU exposure via Redux), have used TUIs (lazygit, etc.)
-
Donβt know: Ruby, terminal programming, architecture
-
Need: Ruby crash course, explicit connection to React/Redux patterns they already know
3. Polyglots / Newcomers
-
Know: Variesβcould be Go, Rust, Python, or nothing
-
Donβt know: Potentially everything
-
Need: Complete onboarding from zero, language-agnostic conceptual explanations
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:
-
User concepts: 5 docs, 3 incomplete, ~27KB
-
Contributor design: 2 docs, both thorough, ~20KB
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/exceptdoc/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:
-
Automated tests from Step 3, TDD from Step 7 - Tests are not optional, theyβre fundamental
-
Controlled failure at Step 5 - Tests break when adding real files, teaching why mocking matters
-
Snapshots vs assertions at Step 7 - Snapshots guard regressions; assertions drive design
-
One pedagogical moment per step - Each step teaches ONE concept clearly
-
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) |