← Extractions

Building Beautiful UIs with Ruby — A Rails-Native Approach (wroclove.rb 2025)

Seth Horsley's wroclove.rb 2025 talk on migrating Statesert's front end from React to Phlex + Ruby UI, with Joel Drapper on stage to explain Phlex's 'accordion of complexity' for composable components, benchmark caveats, and Turbo integration. Q&A covers Turbo interop, why Ruby UI favors atomic components over slots, front-end developer onboarding, CSS/JS integration (Tailwind, Stimulus, floating-ui), and strategies for testing Phlex-rendered output.

Model
claude-opus-4-7
Ingestion
02014cf1
Input tokens
172,225
fresh
127,525
cached
37,614
cache write
7,086
Output tokens
12,512
Duration
168.9s
Roundtrips
4
Tool calls
22
Cost
$0.00
Nodes/edges extracted
19 / 59
Read set (nodes/edges)
128 / 2

Nodes (19)

create floating-ui tool
kind (empty) tool
name (empty) floating-ui
slug (empty) floating-ui
attrs (empty) {"category" => "library"}
description (empty) JavaScript library for positioning floating elements (tooltips, popovers, dropdowns, menus) relative to an anchor ele...
short_description (empty) JavaScript positioning library for tooltips, popovers and dropdowns.
update Building Beautiful UIs with Ruby A Rails-Native Approach talk
attrs {"type" => "talk"} {"date" => "2025-03-14", "type" => "talk"}
description Talk at wroclove.rb 2025. Talk at wroclove.rb 2025 by Seth Horsley (with Joel Drapper co-presenting part of the content). Tells the story of mi...
short_description Talk at wroclove.rb 2025. Seth Horsley's wroclove.rb 2025 talk on Phlex and Ruby UI for Rails-native component UIs.
update Seth Horsley person
attrs (empty) {"role" => "Owner at Statesert"}
description Conference speaker. Conference speaker and owner of Statesert. Led Statesert's migration from a MERN stack (MongoDB, Express, React, Node...
short_description Conference speaker. Owner of Statesert; Ruby UI contributor; wroclove.rb 2025 speaker.
create Ruby UI project
kind (empty) project
name (empty) Ruby UI
slug (empty) ruby-ui
attrs (empty) {"status" => "active", "license" => "open-source"}
description (empty) Open-source component library for Phlex, modeled after shadcn/ui. Ships a catalog of reusable primitives (buttons wit...
short_description (empty) shadcn/ui-style component library for Phlex, built in Ruby.
create Statesert company
kind (empty) company
name (empty) Statesert
slug (empty) statesert
attrs (empty) {"industry" => "software"}
description (empty) Company owned by Seth Horsley. Originally built on a MERN stack (MongoDB, Express, React, Node.js); about six years a...
short_description (empty) Company owned by Seth Horsley; migrated from MERN stack to Ruby on Rails + Phlex.
create MongoDB tool
kind (empty) tool
name (empty) MongoDB
slug (empty) mongodb
attrs (empty) {"category" => "service"}
description (empty) Document-oriented NoSQL database. Part of the MERN stack. Statesert originally stored its data in MongoDB and migrate...
short_description (empty) Document-oriented NoSQL database.
create Express.js tool
kind (empty) tool
name (empty) Express.js
slug (empty) express-js
attrs (empty) {"category" => "framework"}
description (empty) Minimalist web application framework for Node.js. The 'E' in the MERN stack. Statesert used it before migrating to Ru...
short_description (empty) Minimalist web framework for Node.js.
create MERN Stack concept
kind (empty) concept
name (empty) MERN Stack
slug (empty) mern-stack
attrs (empty) {"category" => "architecture"}
description (empty) Full-JavaScript web stack combining MongoDB, Express, React, and Node.js. Statesert originally used the MERN stack be...
short_description (empty) MongoDB + Express + React + Node.js JavaScript web stack.
create shadcn/ui resource
kind (empty) resource
name (empty) shadcn/ui
slug (empty) shadcn-ui
attrs (empty) {"type" => "documentation"}
description (empty) Popular component collection originating in the React/Tailwind world where components are distributed by copy-paste/C...
short_description (empty) Tailwind-based React component collection distributed by copy-paste rather than as a package.
update Accordion of Complexity concept
attrs {"category" => "methodology"} {"category" => "pattern"}
description Idea (attributed by Joel Drapper to Stephen Margheim's upcoming talk at wroclove.rb 2025) that good interfaces let yo... Phlex-flavored design philosophy articulated by Joel Drapper during the talk: a component system should let you 'expa...
short_description Design progression that scales with use case — add complexity only when needed. Design philosophy letting component APIs expand or contract in expressiveness.
update Phlex tool
description Ruby gem for building HTML views as Ruby objects/methods instead of template files. Created by Joel Drapper. Componen... Ruby gem for building HTML views as Ruby objects/methods instead of template files. Created by Joel Drapper. One file...
create Phlex is only faster than ERB at scale takeaway
kind (empty) takeaway
name (empty) Phlex is only faster than ERB at scale
slug (empty) phlex-is-only-faster-than-erb-at-scale
attrs (empty) {"type" => "insight"}
description (empty) Joel Drapper's clarification of a widely cited benchmark: Phlex actually does more work than ERB to render a single H...
short_description (empty) Phlex beats ActionView on component-heavy pages, not on single-tag rendering.
create One file rules them all takeaway
kind (empty) takeaway
name (empty) One file rules them all
slug (empty) one-file-rules-them-all
attrs (empty) {"type" => "recommendation"}
description (empty) Seth Horsley's rationale for choosing Phlex over ViewComponent: with Phlex there is one Ruby file per component that ...
short_description (empty) Keep a component's view and logic in a single Ruby file for simplicity and maintainability.
create Prefer atomic components over slots takeaway
kind (empty) takeaway
name (empty) Prefer atomic components over slots
slug (empty) prefer-atomic-components-over-slots
attrs (empty) {"type" => "recommendation"}
description (empty) Design preference behind Ruby UI: avoid a slots-based API (as popularized by ViewComponent and Web Components) and in...
short_description (empty) Ruby UI favors many small composable components instead of a slots API.
create How does Phlex integrate with Turbo? question
kind (empty) question
name (empty) How does Phlex integrate with Turbo?
slug (empty) how-does-phlex-integrate-with-turbo
attrs (empty) {"answer_summary" => "Phlex implements Rails' 'renderable' interface (from the ViewComponent team), so all Turbo help...
description (empty) Audience question on Phlex + Turbo interop. Joel Drapper answers that Rails has an abstraction called 'renderable' — ...
short_description (empty) Audience asks how Phlex components interact with Turbo and the new Hotwire stack.
create Why does Ruby UI avoid slots? question
kind (empty) question
name (empty) Why does Ruby UI avoid slots?
slug (empty) why-does-ruby-ui-avoid-slots
attrs (empty) {"answer_summary" => "Slots aren't common in JavaScript and tie micro-components to a single parent, preventing reuse...
description (empty) Audience question noting that Ruby UI favors many small atomic components rather than the common slots-based approach...
short_description (empty) Audience asks why Ruby UI uses many atomic components instead of ViewComponent-style slots.
create How do pure front-end developers react to Ruby views? question
kind (empty) question
name (empty) How do pure front-end developers react to Ruby views?
slug (empty) how-do-pure-front-end-developers-react-to-ruby-views
attrs (empty) {"answer_summary" => "Ruby is approachable; Phlex gives clear errors, and an upcoming validator will ship literal sch...
description (empty) Audience question: when pure front-end (HTML/CSS/JS) developers encounter a UI written in Ruby with Phlex, how do the...
short_description (empty) Audience asks how HTML/CSS/JS developers handle UIs written in Ruby.
create How does Ruby UI integrate with CSS and JavaScript? question
kind (empty) question
name (empty) How does Ruby UI integrate with CSS and JavaScript?
slug (empty) how-does-ruby-ui-integrate-with-css-and-javascript
attrs (empty) {"answer_summary" => "Tied to Stimulus (for now) and Tailwind; not tied to Active Support, so works in Sinatra too; u...
description (empty) Audience question about how Ruby UI integrates with CSS and JavaScript — whether it depends on the Rails asset pipeli...
short_description (empty) Audience asks whether Ruby UI depends on Tailwind, Stimulus, or the Rails asset pipeline.
create How do you test rendered Phlex components? question
kind (empty) question
name (empty) How do you test rendered Phlex components?
slug (empty) how-do-you-test-rendered-phlex-components
attrs (empty) {"answer_summary" => "Today: render to string and query with Nokogiri/Capybara (a helper is documented). Future: comp...
description (empty) Audience question about automated testing of Phlex-rendered views — e.g. feature specs in RSpec — without having to w...
short_description (empty) Audience asks how to write automated tests / feature specs against Phlex output.

Edges (59)

update Seth HorsleyauthoredBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Seth Horsley gave this talk at wroclove.rb 2025 — his first conference talk.
update Building Beautiful UIs with Ruby A Rails-Native Approachpresented_atwroclove.rb 2025
context (empty) Talk delivered at wroclove.rb 2025.
create Seth Horsleyattendedwroclove.rb 2025
context (empty) Spoke at and attended the conference.
relation (empty) attended
source_node_id (empty) bb9d1de8-88ba-4492-bfb3-4944b512b5ec
target_node_id (empty) 4a9688cf-482e-48ac-a0b5-de88900bdb2b
update Joel Drapperattendedwroclove.rb 2025
context Traveled to Wrocław to give the opening talk and stay for the after-party. Co-presented a segment of Seth's talk on Phlex's accordion-of-complexity and benchmarks.
create Stephen Margheimattendedwroclove.rb 2025
context (empty) Part of the after-hours Friday-night crew mentioned in the talk's opening and closing story.
relation (empty) attended
source_node_id (empty) f8314bba-5263-4bd3-9174-6613ee5fef9e
target_node_id (empty) 4a9688cf-482e-48ac-a0b5-de88900bdb2b
create Seth Horsleyworks_atStatesert
attrs (empty) {"role" => "Owner"}
context (empty) Seth identifies himself as the owner of Statesert during the talk.
relation (empty) works_at
source_node_id (empty) bb9d1de8-88ba-4492-bfb3-4944b512b5ec
target_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
create Building Beautiful UIs with Ruby A Rails-Native Approachaboutshadcn/ui
context (empty) Ruby UI is explicitly modeled after shadcn/ui.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) 98f802ea-0535-4c58-8a89-f31d1ed8d323
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutTurbo
context (empty) Q&A covers Phlex's integration with Turbo via the renderable interface.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) 0071d9d0-23d6-4880-af20-5c3369e78423
create MERN Stackrelated_toMongoDB
context (empty) The 'M' of the MERN stack.
relation (empty) related_to
source_node_id (empty) 4cd9262e-8c3a-4f25-86d3-5f3020db6052
target_node_id (empty) 0f6bafb9-3c05-4d6b-9374-bbeffd67d7d7
create Seth Horsleyworks_onRuby UI
attrs (empty) {"role" => "maintainer"}
context (empty) Co-maintains the Phlex-based Ruby UI component library.
relation (empty) works_on
source_node_id (empty) bb9d1de8-88ba-4492-bfb3-4944b512b5ec
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
update Joel Drapperworks_onPhlex
context Creator of Phlex; used a Phlex Button component to demo Literal::Properties. Creator of Phlex; explained its design and benchmarks on stage.
create Ruby UIusesPhlex
context (empty) Ruby UI is a component library for Phlex.
relation (empty) uses
source_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Ruby UIusesTailwind CSS
context (empty) Ruby UI is built on Tailwind, mirroring shadcn/ui; ships a Tailwind config to copy into the host app.
relation (empty) uses
source_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
target_node_id (empty) ec73c2f6-5a41-41a5-8bc3-17addcf6fa0f
create Ruby UIusesStimulus
context (empty) Ruby UI components rely on Stimulus controllers for interactive behavior.
relation (empty) uses
source_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
target_node_id (empty) 87cb1332-bd03-4cc9-a0b1-c8c83aae8051
create Ruby UIusesfloating-ui
context (empty) Ruby UI pulls in floating-ui for positioning in a few components.
relation (empty) uses
source_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
target_node_id (empty) 66b33e49-891f-4c9a-9163-a6ef4a2af616
create StatesertusesRuby on Rails
context (empty) Migrated backend from the MERN stack to Ruby on Rails ~6 years before the talk.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 7aac705a-0987-49f2-b665-9d4e08a6acee
create StatesertusesPostgreSQL
context (empty) Migrated data from MongoDB to PostgreSQL ~4 years before the talk.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 46fc2697-69fc-436b-ac82-250ba4370273
create StatesertusesPhlex
context (empty) Uses Phlex as the front-end view layer after migrating away from React.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create StatesertusesRuby UI
context (empty) Uses the Ruby UI component library.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
create StatesertusesMongoDB
attrs (empty) {"status" => "former"}
context (empty) Original datastore in the MERN era; since migrated away from.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 0f6bafb9-3c05-4d6b-9374-bbeffd67d7d7
create StatesertusesExpress.js
attrs (empty) {"status" => "former"}
context (empty) Part of the original MERN stack.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 435384fc-f0bc-4539-918a-0d9896d5a23b
create StatesertusesReact
attrs (empty) {"status" => "former"}
context (empty) Statesert originally used React on the front end before migrating to Phlex/Ruby UI.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 5026a4fc-0c6e-49d7-bb7d-29be23b72b24
create StatesertusesNode.js
attrs (empty) {"status" => "former"}
context (empty) Part of the original MERN stack.
relation (empty) uses
source_node_id (empty) 78a197e6-d5a4-43b2-bd3f-f0fec22b9f6c
target_node_id (empty) 9aeec77e-7dee-4054-85fe-541434a0d272
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutPhlex
context (empty) Central subject of the talk — adopting Phlex for Rails view rendering.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutRuby UI
context (empty) Talk showcases Ruby UI as a shadcn/ui-style component library for Phlex.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutViewComponent
context (empty) Evaluated and rejected as a view-layer option due to split .rb/.html files and maintainer direction.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) aaa7fac1-54d6-4dde-8805-bbc7219cd58a
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutMERN Stack
context (empty) Origin story: migrating Statesert off the MERN stack.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) 4cd9262e-8c3a-4f25-86d3-5f3020db6052
create Building Beautiful UIs with Ruby A Rails-Native ApproachaboutAccordion of Complexity
context (empty) Joel Drapper presents Phlex's accordion-of-complexity for a table component.
relation (empty) about
source_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
target_node_id (empty) fb07dfa3-8cc3-4771-9946-54c856e9f78d
create MERN Stackrelated_toExpress.js
context (empty) The 'E' of the MERN stack.
relation (empty) related_to
source_node_id (empty) 4cd9262e-8c3a-4f25-86d3-5f3020db6052
target_node_id (empty) 435384fc-f0bc-4539-918a-0d9896d5a23b
create MERN Stackrelated_toReact
context (empty) The 'R' of the MERN stack.
relation (empty) related_to
source_node_id (empty) 4cd9262e-8c3a-4f25-86d3-5f3020db6052
target_node_id (empty) 5026a4fc-0c6e-49d7-bb7d-29be23b72b24
create MERN Stackrelated_toNode.js
context (empty) The 'N' of the MERN stack.
relation (empty) related_to
source_node_id (empty) 4cd9262e-8c3a-4f25-86d3-5f3020db6052
target_node_id (empty) 9aeec77e-7dee-4054-85fe-541434a0d272
create Ruby UIrelated_toshadcn/ui
context (empty) Ruby UI adapts shadcn/ui's copy-paste/CLI-ejection model to the Phlex+Ruby world.
relation (empty) related_to
source_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
target_node_id (empty) 98f802ea-0535-4c58-8a89-f31d1ed8d323
create Phlexrelated_toTurbo
context (empty) Phlex implements Rails' renderable interface so all Turbo helpers work; experimental support for frame-scoped selecti...
relation (empty) related_to
source_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
target_node_id (empty) 0071d9d0-23d6-4880-af20-5c3369e78423
create Phlexrelated_toViewComponent
context (empty) ViewComponent team pioneered the 'renderable' abstraction that Phlex implements to get Turbo interop for free.
relation (empty) related_to
source_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
target_node_id (empty) aaa7fac1-54d6-4dde-8805-bbc7219cd58a
create Phlex is only faster than ERB at scalefrom_talkBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Joel Drapper's on-stage correction of a well-known Phlex-vs-ERB benchmark.
relation (empty) from_talk
source_node_id (empty) 2b7d605a-755a-43ce-921b-43814030689f
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create Phlex is only faster than ERB at scaleaboutPhlex
context (empty) Concerns the performance characteristics of Phlex vs ActionView/ERB.
relation (empty) about
source_node_id (empty) 2b7d605a-755a-43ce-921b-43814030689f
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Phlex is only faster than ERB at scaleaboutPartial Rendering Overhead
context (empty) Phlex's advantage grows with the number of partials/components because ActionView partial lookup dominates.
relation (empty) about
source_node_id (empty) 2b7d605a-755a-43ce-921b-43814030689f
target_node_id (empty) 41125b40-39b1-4cc2-ac91-6245659c7667
create One file rules them allfrom_talkBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Seth's reason for preferring Phlex over ViewComponent.
relation (empty) from_talk
source_node_id (empty) a3b61087-ac59-49fe-828f-8bf8c45dcbbf
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create One file rules them allaboutPhlex
context (empty) Describes Phlex's single-file component style.
relation (empty) about
source_node_id (empty) a3b61087-ac59-49fe-828f-8bf8c45dcbbf
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Prefer atomic components over slotsfrom_talkBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Articulated in Q&A on why Ruby UI doesn't adopt slots.
relation (empty) from_talk
source_node_id (empty) 02d46291-a913-4fde-9fb0-80eacd447506
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create Prefer atomic components over slotsaboutRuby UI
context (empty) Ruby UI's core API design choice.
relation (empty) about
source_node_id (empty) 02d46291-a913-4fde-9fb0-80eacd447506
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
create Prefer atomic components over slotsaboutViewComponent Slots
context (empty) Explicit counterpoint — avoids the slots approach used by ViewComponent.
relation (empty) about
source_node_id (empty) 02d46291-a913-4fde-9fb0-80eacd447506
target_node_id (empty) 8bc10077-07ca-4096-b040-6d648cb8d66a
create How does Phlex integrate with Turbo?asked_atBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Audience Q&A question.
relation (empty) asked_at
source_node_id (empty) 1f907bd1-70b2-479c-a6d9-e6496ca394b2
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create How does Phlex integrate with Turbo?aboutPhlex
context (empty) Topic: Phlex behavior in the Turbo ecosystem.
relation (empty) about
source_node_id (empty) 1f907bd1-70b2-479c-a6d9-e6496ca394b2
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create How does Phlex integrate with Turbo?aboutTurbo
context (empty) Topic: Turbo integration.
relation (empty) about
source_node_id (empty) 1f907bd1-70b2-479c-a6d9-e6496ca394b2
target_node_id (empty) 0071d9d0-23d6-4880-af20-5c3369e78423
create How does Phlex integrate with Turbo?aboutTurbo Frames
context (empty) Selective-rendering feature can render only the requested Turbo Frame.
relation (empty) about
source_node_id (empty) 1f907bd1-70b2-479c-a6d9-e6496ca394b2
target_node_id (empty) 5aa85333-18b5-41a5-b233-a4d142706977
create Why does Ruby UI avoid slots?asked_atBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Audience Q&A.
relation (empty) asked_at
source_node_id (empty) a8d091e1-cdf5-4dad-a9e7-151e586c53c4
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create Why does Ruby UI avoid slots?aboutRuby UI
context (empty) About Ruby UI's API philosophy.
relation (empty) about
source_node_id (empty) a8d091e1-cdf5-4dad-a9e7-151e586c53c4
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
create Why does Ruby UI avoid slots?aboutViewComponent Slots
context (empty) Contrasts with the slots pattern used by ViewComponent.
relation (empty) about
source_node_id (empty) a8d091e1-cdf5-4dad-a9e7-151e586c53c4
target_node_id (empty) 8bc10077-07ca-4096-b040-6d648cb8d66a
create How do pure front-end developers react to Ruby views?asked_atBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Audience Q&A.
relation (empty) asked_at
source_node_id (empty) 856b55f7-a949-4cdf-9f11-09c85de6139c
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create How do pure front-end developers react to Ruby views?aboutPhlex
context (empty) Developer-experience / error-message behavior of Phlex.
relation (empty) about
source_node_id (empty) 856b55f7-a949-4cdf-9f11-09c85de6139c
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create How does Ruby UI integrate with CSS and JavaScript?asked_atBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Audience Q&A.
relation (empty) asked_at
source_node_id (empty) 186e3eb9-7b9c-4110-ae87-0678d0c64760
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create How does Ruby UI integrate with CSS and JavaScript?aboutRuby UI
context (empty) Covers Ruby UI's dependencies on Tailwind, Stimulus and floating-ui.
relation (empty) about
source_node_id (empty) 186e3eb9-7b9c-4110-ae87-0678d0c64760
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad
create How does Ruby UI integrate with CSS and JavaScript?aboutTailwind CSS
context (empty) Ruby UI copies over a Tailwind configuration into the host app.
relation (empty) about
source_node_id (empty) 186e3eb9-7b9c-4110-ae87-0678d0c64760
target_node_id (empty) ec73c2f6-5a41-41a5-8bc3-17addcf6fa0f
create How does Ruby UI integrate with CSS and JavaScript?aboutStimulus
context (empty) Ruby UI currently uses Stimulus controllers for component behavior.
relation (empty) about
source_node_id (empty) 186e3eb9-7b9c-4110-ae87-0678d0c64760
target_node_id (empty) 87cb1332-bd03-4cc9-a0b1-c8c83aae8051
create How do you test rendered Phlex components?asked_atBuilding Beautiful UIs with Ruby A Rails-Native Approach
context (empty) Audience Q&A on testing Phlex-rendered UI.
relation (empty) asked_at
source_node_id (empty) ae35dd6e-a29e-4549-845e-91a487186202
target_node_id (empty) b8575937-2814-458b-a167-8c29ca456c11
create How do you test rendered Phlex components?aboutPhlex
context (empty) Testing story for Phlex.
relation (empty) about
source_node_id (empty) ae35dd6e-a29e-4549-845e-91a487186202
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Seth HorsleyrecommendsPhlex
context (empty) Recommends Phlex over ERB/ActionView and ViewComponent for Rails view layers.
relation (empty) recommends
source_node_id (empty) bb9d1de8-88ba-4492-bfb3-4944b512b5ec
target_node_id (empty) 6bb19a01-47fc-4521-83c9-874cd58c606a
create Seth HorsleyrecommendsRuby UI
context (empty) Promotes Ruby UI as a Phlex-based component library throughout the talk.
relation (empty) recommends
source_node_id (empty) bb9d1de8-88ba-4492-bfb3-4944b512b5ec
target_node_id (empty) 7641be31-d6e5-4647-b2d4-a0075d2f66ad

Read set

128 nodes

takeaway Read the Ruby standard library search_nodes tool Phlex search_nodes tool Lookbook search_nodes tool ViewComponent search_nodes tool Deface search_nodes concept Partial Rendering Overhead search_nodes talk Extracting logic from templates with Hanami Views search_nodes tool Cells search_nodes tool acts_as_api search_nodes talk Better ActiveRecord IRB Output Gem Lightning Talk search_nodes tool TTY toolkit search_nodes tool Active Admin search_nodes talk Building Beautiful UIs with Ruby A Rails-Native Approach search_nodes+get_node_edges talk Component Driven UI with ViewComponent search_nodes talk Building Rails SPAs in Frontend Ruby with Glimmer DSL for Web search_nodes tool React Native search_nodes tool Ember.js search_nodes person Seth Horsley search_nodes+get_node_edges tool ChatGPT search_nodes takeaway Name Things To Find Their Properties search_nodes concept AI Agent search_nodes concept Retrieval Augmented Generation search_nodes tool langchainrb search_nodes company SpaceX search_nodes concept xkcd Dependency / Nebraska Problem search_nodes concept GraphQL max_depth search_nodes tool Speaker Deck search_nodes person Joel Drapper search_nodes tool RealtimeBoard search_nodes concept Prompt Alchemy search_nodes takeaway ViewComponent Checklist search_nodes concept ViewComponent Slots search_nodes concept Builder Pattern for ViewComponents search_nodes question Do you unit test ViewComponents? search_nodes question How do you test ViewComponents and Hotwire flows? search_nodes takeaway Use generic and object-specific ViewComponents together search_nodes tool Ruby on Rails search_nodes concept Cynefin Framework search_nodes event Rails World search_nodes project monolith framework search_nodes resource Woman on Rails search_nodes tool Rack search_nodes tool merb search_nodes takeaway Ruby as a Data Management Language search_nodes tool Discourse search_nodes tool Hotwire search_nodes tool Turbo search_nodes tool Turbo Native search_nodes question What licenses do Turbo Native libraries use? search_nodes tool Turbo Drive search_nodes tool Turbo Laravel search_nodes tool Turbo Frames search_nodes tool Turbo Streams search_nodes tool Strada search_nodes tool Tailwind CSS search_nodes tool cssbundling-rails search_nodes concept CSS-in-JS search_nodes takeaway Adopt CSS-in-JS for modern component-based frontends search_nodes tool Next.js search_nodes tool Preact search_nodes takeaway Don't Start a Design System from Button Components search_nodes tool Webpacker search_nodes tool Stimulus search_nodes question Have you heard of Stimulus? search_nodes tool StimulusReflex search_nodes tool htmx search_nodes takeaway Turbo Frames, Turbo Streams and Stimulus can be used independently search_nodes tool Jumpstart Pro search_nodes tool core-js search_nodes tool Relay search_nodes tool React search_nodes event wroclove.rb 2025 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2018 search_nodes talk Performance Panel wroclove.rb 2024 search_nodes talk It is not so bad, after all search_nodes talk Rewrite with confidence search_nodes person Stephen Margheim search_nodes person Stephen Wolfram search_nodes project Check search_nodes concept UI Component vs Domain Component Split search_nodes concept Optimistic UI search_nodes concept Vector Database search_nodes concept Database Indexes search_nodes question NoSQL vs Postgres for an event store search_nodes tool Metabase search_nodes tool CockroachDB search_nodes tool Litestream search_nodes tool pganalyze search_nodes tool MySQL search_nodes tool MessageDB search_nodes talk Fantastic Databases and Where to Find Them search_nodes concept respond_to Anti-Pattern search_nodes question Is rendering from cached pages with server-side includes possible in Rails? search_nodes tool PagerDuty search_nodes company Anthropic search_nodes company ThoughtWorks search_nodes project Nerds and Threads search_nodes tool Stripe search_nodes company Microsoft search_nodes tool Apollo GraphQL Platform search_nodes tool Apollo GraphQL search_nodes tool GraphQL search_nodes tool Node.js search_nodes tool Fulcro search_nodes tool MobX search_nodes concept esbuild Pipeline search_nodes tool Electron search_nodes tool PostgreSQL search_nodes resource Postgres for Everything search_nodes tool PgBouncer search_nodes talk From PostgreSQL to SQLite in Rails search_nodes concept EXPLAIN / EXPLAIN ANALYZE search_nodes tool Citus search_nodes tool PgHero search_nodes question Is starting with SQLite a lock-in if I later need Postgres? search_nodes takeaway Learn to Read EXPLAIN search_nodes tool SQLite search_nodes tool DBM / SDBM / GDBM search_nodes concept Pre-Compile Engine Assets at Build Time search_nodes tool Standard RB search_nodes concept Rails Engine search_nodes tool Distributed Ruby search_nodes tool rbspy search_nodes

2 edges