Maquina Components: Rails 애플리케이션을 위한 실용적인 UI 컴포넌트 라이브러리

Maquina Components: Opinionated Ul for Rails Applications

작성자
HackerNews
발행일
2025년 12월 16일

핵심 요약

  • 1 Rails의 UI 컴포넌트 부재를 해결하기 위해 ERB 파셜, Tailwind CSS, Stimulus 기반의 Maquina Components가 소개되었습니다.
  • 2 ViewComponent나 Phlex 대신 'Rails 방식'에 부합하는 ERB 파셜을 사용하여 팀의 도입 부담을 줄이고 즉각적인 이해를 목표로 합니다.
  • 3 생산 환경에서 추출된 12가지 컴포넌트를 제공하며, 작은 단위의 파셜을 조합하여 애플리케이션별 UI를 구축하는 구성 가능성을 강조합니다.

도입

Rails는 데이터베이스 마이그레이션, 라우팅 등 대부분의 영역에 대한 강력한 의견을 제시하지만, 사용자 인터페이스 구축에 있어서는 개발자에게 자율성을 부여합니다. 프레임워크는 importmaps, Stimulus, Turbo와 같은 훌륭한 기본 요소를 제공하지만, 버튼, 카드, 데이터 테이블과 같은 기본 컴포넌트는 제공하지 않아 개발자들이 매번 이를 재구축해야 하는 비효율성이 존재했습니다. 이러한 간극을 메우기 위해 저자는 'Maquina Components'를 개발하여, 본인의 애플리케이션 구축 방식에 맞는 실용적인 UI 컴포넌트 솔루션을 제시합니다.

Maquina Components는 shadcn/ui에서 영감을 받아 실제 Rails 애플리케이션에서 사용되던 컴포넌트들을 통합하여 탄생했습니다. 초기 프로젝트별 일관성 부족 문제를 해결하기 위해 가장 많이 사용되는 요소들을 추출, 일관된 API와 스타일링을 갖춘 라이브러리로 발전시켰습니다.

기술적 선택

  • 기반 기술: ERB 파셜, Tailwind CSS, Stimulus 컨트롤러(인터랙티브 요소), 순수 CSS(정적 컴포넌트)를 활용합니다.

  • 대안 고려: ViewComponent 및 Phlex와 같은 Ruby 기반 컴포넌트 라이브러리 대신 ERB 파셜을 선택했습니다. 이는 ‘Rails 방식’에 대한 친숙도를 유지하고 팀의 도입 부담을 줄여 즉각적인 이해를 가능하게 하기 위함입니다.

포함된 컴포넌트

생산 애플리케이션에서 추출된 12가지 컴포넌트를 제공하며, 모든 컴포넌트는 CSS 변수를 통한 shadcn/ui 테마 컨벤션을 따르며 라이트/다크 모드를 기본 지원합니다.

  • 주요 카테고리: 레이아웃(Sidebar, Header), 콘텐츠(Card, Alert, Badge, Table, Empty State), 내비게이션(Breadcrumbs, Dropdown Menu, Pagination), 인터랙티브(Toggle Group), 폼(Input, Select, Checkbox, Button) 등.

구성 가능성 (Composability)

  • 컴포넌트들은 의도적으로 작게 설계되어 있습니다. 예를 들어, 카드는 여러 개의 파셜로 구성됩니다.

  • 이는 개발자가 작은 파셜들을 조합하여 ProjectCard나 UserTable과 같이 애플리케이션 특화된 더 큰 컴포넌트를 유연하게 구축할 수 있도록 지원하며, 추상화 계층에 대한 완전한 소유권을 제공합니다.

Rails 프론트엔드 환경 내 포지셔닝

Rails 프론트엔드 개발에는 ViewComponent/Phlex, Inertia.js 등 다양한 접근 방식이 존재합니다. Maquina Components는 표준 ERB, 표준 Tailwind, 최소한의 JavaScript를 사용하여 서버 렌더링 Rails 애플리케이션에 새로운 패러다임 학습 없이 컴포넌트를 도입하고자 하는 개발자에게 실용적인 대안을 제시합니다.

결론

Maquina Components는 Rails 애플리케이션에서 UI 컴포넌트 개발의 비효율성을 해소하고 일관성을 제공하기 위한 실용적인 접근 방식입니다. ViewComponent나 Phlex와 같은 Ruby 기반 추상화 대신 ERB 파셜을 선택함으로써 'Rails 방식'에 대한 개발자들의 친숙도를 유지하고 도입 장벽을 낮추는 데 중점을 두었습니다. 작은 단위의 컴포넌트들을 조합하여 유연하게 UI를 구축할 수 있는 구성 가능성을 핵심 가치로 삼으며, Rails 프론트엔드 생태계의 다양한 선택지 속에서 최소한의 의존성과 학습 부담으로 서버 렌더링 UI를 구현하고자 하는 팀에게 매력적인 대안이 될 것입니다. 이 프로젝트는 MIT 라이선스로 공개되어 있으며, 개발자들의 피드백을 통해 지속적으로 발전할 가능성을 내포하고 있습니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!