본문 바로가기

개발자 생활

요즘 웹 개발 3편 — 키트는 많이 써 봤는데, 한 결이 안 보였던 시절

반응형

부제: Semantic·Elastic·MUI를 돌다 Tailwind·shadcn까지

1·2편은 경계상태·계약이었다. 오늘은 화면.

용어

  • Semantic UI / Elastic UI / MUI: 완성도 높은 컴포넌트·테마를 한 번에 쓰는 UI 키트 계열.
  • Tailwind CSS: 유틸리티 클래스로 스타일을 조합하는 프레임워크. 팀끼리 같은 말로 간격·색을 말하기 좋다는 면에서 협업에 도움이 될 수 있다.
  • Radix UI: 접근성·키보드 동작 위주의 헤드리스 프리미티브.
  • shadcn/ui: Radix 등을 바탕으로 컴포넌트 소스를 프로젝트에 복사해 가져가 쓰는 흔한 패턴.
  • CVA(class-variance-authority): 버튼 variant/size처럼 조합 규칙을 정리하는 유틸.

1) 여러 키트를 돌아다닌 이유

키트 혼재 vs 일관 스택

외부용 제품이 아니면 디자인·기획 지원을 사실상 못 받는 경우가 많았다. 그래서 완성도 높은 키트여러 가지 도입했다. 개발자 입장에선 필요한 기능을 빨리 주려는 목적이 컸다.

결과적으로 일관성·완성도가 떨어져 보인다피드백도 있었다. 키트 탓이라기보다 조건에 가깝게 기억한다.

잠깐 개념: UI 키트가 해 주는 것

버튼·다이얼로그 같은 반복 UI접근성 기본값을 빨리 준다. 반면 제품 전체가 한 브랜드처럼 보이게 만드는 건 팀 합의·커스터마이징이 필요하다.


2) “안 맞았다”보다 철학 혼재·MUI 통일 후회

안 맞다기보다, 키트마다 디자인 철학이 비슷하기도 다르기도 해서 한 결이 안 보일 수 있었다. 돌이켜 보면 MUI만 일관되게 썼으면 나았겠다는 생각도 든다. 예전에 Semantic UI, Elastic UI, MUI순회했던 시절이 있었다.

커스텀 컴포넌트를 제법 만들어야 했고, 그때마다 키트만으로는 아쉬움이 있었다.


3) shadcn — 내부 조사는 해 뒀고, 프로젝트가 없어 미뤘다

아쉬움을 줄일 수 있겠다는 쪽으로 기술 조사를 해 둔 적이 있다. 도입 시기는 불명확했고 밀 만한 프로젝트가 없어 미뤘다. 지금 학습용 베이스에서 처음 제대로 붙인다.

잠깐 개념: shadcn이 다른 점

npm에 완성 테마 하나만 있는 형태보다, 소스를 내 레포로 가져와 고치기 쉽다는 설명이 흔하다.


4) Tailwind — 스타일시트 이슈 + 협업

유틸리티 클래스 조립

스타일 시트 이슈로 써 봤다. 기획 지원은 없었어도 협업 차원에서 필요하다고 느꼈다.


5) 지금 레포에 깔린 것

tailwindcss ^4.2.2, @tailwindcss/postcss, Radix 계열, CVA, clsx, tailwind-merge, lucide-react, **components.json**.


6) 트레이드오프

헤드리스 컴포넌트 뼈대

지원이 부족한 현실에서 속도와 일관성 사이를 어떻게 잡을지가 늘 문제였다. 지금은 다른 무게중심을 시험 중이다.


4편은 JPA·Snowflake·MyBatis·FlywayPostgres·Drizzle이다.


참고/더 읽기

반응형