본문으로 건너뛰기
5분 AI.
GITHUB TRENDSHIFT #22 딥다이브 · 2026-10-25 분석

uiverse-io/galaxy 딥다이브
— 3,802개 UI 조각을 파일 하나씩 쌓아 둔 복붙용 보관소

문서/자료

빠른 판단

무엇
Uiverse.io의 버튼·카드·로더 등 UI 요소 3,802개를 요소당 HTML 파일 하나로 보관한 복붙용 미러 저장소
이럴 때
호버 효과·로더·토글 같은 CSS/Tailwind 조각을 빠르게 찾아 내 페이지에 붙일 때. 선택자 충돌과 접근성은 직접 검수해야 한다
입력
원하는 UI 종류 폴더의 HTML 파일(마크업 + style 블록 또는 Tailwind 클래스)
결과
복사해 쓸 수 있는 HTML/CSS UI 조각
도입 전 확인
일반 CSS 3,369개·Tailwind 433개가 섞여 있어 Tailwind 조각은 Tailwind 환경 필요. 선택자 충돌과 접근성은 사용자가 검수. 분석 SHA의 마지막 커밋은 2024-09-02
galaxy는 Uiverse.io에 올라온 버튼·카드·로더 같은 UI 요소를 한 요소당 HTML 파일 하나로 보관한 저장소입니다. 빌드 도구도 패키지도 없고, 파일을 열어 <style> 블록과 마크업을 복사해 쓰는 구조입니다. 이 글은 저장소가 어떻게 생겼는지, 어디까지 믿고 가져다 쓸 수 있는지, 그리고 이 단순한 구조에서 무엇을 배울 수 있는지를 파일 근거로 정리합니다. (분석 커밋 adbd2ad 기준)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

라이브러리가 아니라 ‘소스 자료실’ — 설치하지 않고 열어서 가져간다

galaxy는 Uiverse.io 플랫폼에서 승인된 UI 요소를 자동으로 올려 두는 미러 저장소입니다. README는 “3000개 넘는 고유 UI 요소”라고 소개하는데, 분석 커밋에서 실제로 센 .html 파일은 3,802개입니다.

README는 직접 기여(PR)를 받지 않는다고 밝힙니다. 요소는 Uiverse.io에 제출하고 승인되면 이 저장소로 자동 업로드되는 흐름입니다. 커밋 메시지도 전부 Launching a new button to space! 🚀 - https://uiverse.io/… 형태의 봇식 문구입니다(버튼 1,231건, 카드 726건, 로더 718건 등).

핵심 비유

견본 천을 한 장씩 붙여 놓은 스와치 북

옷감 가게의 스와치 북은 천을 사는 곳이 아니라, 마음에 드는 천을 골라 번호를 적어 가는 곳입니다. galaxy의 파일 하나가 천 한 조각이고, 파일 이름이 곧 번호표입니다.

패키지로 설치해 쓰는 Material UI나 Bootstrap과 달리, 여기서는 필요한 조각만 잘라 내 내 프로젝트에 붙입니다. 그래서 의존성은 없지만, 조각마다 품질과 방식이 제각각입니다.

용어 먼저
Uiverse.io
디자이너·개발자가 CSS 또는 Tailwind로 만든 UI 요소를 올리고 미리보기하는 커뮤니티 사이트입니다. 이 저장소는 그 사이트 콘텐츠의 보관본이며, 사이트 자체의 코드는 들어 있지 않습니다.

1-1. 한 파일은 이렇게 생겼다

Buttons 폴더의 첫 파일(Shoh2008_hungry-treefrog-88.html)은 마크업 3줄과 <style> 블록이 전부입니다.

<button>
  Button
</button>
<style>
/* From Uiverse.io by Shoh2008 - Tags: button, jelly */
button {
  padding: 15px 30px;  border: none;  border-radius: 10px;
  transition: 0.5s;    background: #1e1e1e;  color: greenyellow;
}
button:hover { animation: a 0.5s 1 linear; }   /* 젤리처럼 늘었다 줄어드는 효과 */
@keyframes a { 0% { transform: scale(0.7, 1.3); } 25% { ... } 100% { transform: scale(1, 1); } }
</style>

두 가지에 주목하세요. 첫째, 제작자와 태그가 CSS 주석(/* From Uiverse.io by … - Tags: … */)으로 남아 있어 출처를 파일 안에서 확인할 수 있습니다. 둘째, 선택자가 그냥 button이라 이 조각을 다른 페이지에 붙이면 페이지의 모든 버튼에 스타일이 번집니다. 이 점은 4장에서 다시 봅니다.

galaxy는 코드 라이브러리가 아니라 ‘파일명 규칙 하나로 정리된 3천여 개의 독립 견본’이라는 점이 이 저장소를 이해하는 출발점입니다.

추천 독자
화면 효과 아이디어를 빠르게 훑고 싶은 프런트엔드 개발자

호버 애니메이션·로더·토글 스위치를 직접 짜기 전에 비슷한 것을 먼저 찾아보는 용도에 맞습니다. 반대로 접근성이나 일관된 디자인 시스템이 필요한 제품 UI의 기반으로는 맞지 않습니다.

2왜 주목받는가

볼륨, 라이선스, 접근 방식 세 가지가 겹친다

TrendShift에서 이 저장소는 분석 시점 #22로 올라 있었습니다. 트렌딩 이유를 저장소 안 근거로만 설명하면 다음과 같습니다. (순위 자체의 원인은 저장소에서 확인할 수 없어 추정입니다.)

요인근거
규모11개 폴더에 HTML 3,802개. 작성자(파일명 앞부분 기준) 927명
라이선스루트 LICENSE는 MIT, 저작권자 표기 “Uiverse.io” (2023)
즉시성JS 없이 HTML+CSS만 있어 열어서 바로 복사 가능. <script>가 든 파일은 0개
꾸준한 갱신(과거)3,977 커밋, 2023-10-01~2024-09-02. 2023-10 한 달에 2,839 커밋이 몰려 있어 대량 이관 뒤 월 60~150건씩 추가된 모양

비슷한 쓰임의 대안과 견주면 성격이 분명해집니다.

대안형태galaxy와 차이
Bootstrap·MUI설치형 컴포넌트 라이브러리일관성·접근성 보장, 대신 조각 단위 취사선택이 어렵다
shadcn/uiCLI로 소스를 복사복사 방식은 같지만 하나의 디자인 시스템 안에서 맞춰져 있다
CodePen 컬렉션개별 펜 모음galaxy는 그것을 파일 한 개씩 평평하게 내려받아 둔 보관본에 가깝다
주의
이 저장소의 활동은 2024-09-02에서 멈춰 있다

분석 커밋의 마지막 날짜가 2024-09-02이고 2024-09 커밋은 4건뿐입니다. 이후 새 요소가 이 미러에 올라오는지는 확인하지 못했습니다. 최신 요소를 보려면 Uiverse.io 본 사이트를 보는 편이 안전합니다.

3기술 스택 전체 지도

백엔드도 프레임워크도 없다 — 쓰이는 것은 브라우저 표준 문법과 Tailwind 클래스뿐

저장소에는 package.json, 빌드 설정, 테스트가 없습니다. 루트에 있는 것은 11개 폴더와 README.md, LICENSE뿐입니다(파일 확장자 집계: .html 3,802, .md 1, 확장자 없는 LICENSE 1). 그래서 ‘스택’은 파일 안에서 읽어야 합니다.

계층실제로 쓰인 것근거(전수 집계)
백엔드없음서버 코드·스크립트 파일 없음
스타일: 일반 CSSHTML 아래 <style> 블록3,369개 파일(헤더가 CSS 주석 형태)
스타일: Tailwind클래스만 쓰는 마크업, <style> 없음433개 파일(헤더가 HTML 주석 형태, 3,369+433=3,802)
애니메이션@keyframes1,356개 파일
아이콘·그래픽인라인 <svg>1,228개 파일
입력 요소실제 <input> 사용(체크박스·토글 등)974개 파일
최신 CSS:has() 40개, @property 3개, CSS 변수 var(--…) 553개 파일패턴 포함 파일 수
접근성 배려prefers-reduced-motion7개 파일뿐
용어 먼저
Tailwind CSS
스타일을 별도 CSS 파일에 쓰지 않고 class="flex p-4 rounded-lg"처럼 짧은 유틸리티 클래스 이름을 마크업에 직접 붙이는 방식입니다. 이 방식의 조각은 Tailwind가 이미 설치된 프로젝트에서만 제대로 보입니다.

외부 의존은 거의 없습니다. 이미지 src가 https://uiverse.io를 가리키는 것이 29건, 그 밖에 자리표시 이미지(via.placeholder.com)와 피그마 CDN 배경 이미지가 각 1건 있습니다. 즉, 대부분의 조각은 외부 호출 없이 자체 완결됩니다.

4아키텍처 심화 분석

Uiverse.io → 자동 업로드 → 폴더/파일명 규칙 → 사람이 복사해 사용

저장소 내부에는 업로드 자동화 코드가 없습니다(워크플로 파일이나 스크립트가 없고 .git만 있음). 그래서 데이터가 흐르는 모습은 README와 커밋 메시지, 파일명 규칙에서 역으로 추론한 것입니다.

[Uiverse.io 웹사이트] ← 제작자가 요소를 제출·승인 │ (README: 승인되면 자동 업로드) ▼ [galaxy 저장소] 커밋: "Launching a new <종류> to space! 🚀 - <원본 URL>" │ ├─ Buttons/ 1,231 파일 ├─ Cards/ 726 ├─ loaders/ 718 ├─ Toggle-switches/ 260 ├─ Inputs/ Forms/ ... (아래 5장 표) │ ▼ 파일명 = <제작자ID>_<형용사-동물-숫자>.html 예) Shoh2008_hungry-treefrog-88.html │ ▼ [내 프로젝트] 마크업 + <style> 복사 → 선택자 이름 충돌 확인 → 필요하면 클래스명 변경

4-1. 파일 포맷 규약

한 파일은 ‘마크업 → <style>’ 순서이고 헤더 주석에 From Uiverse.io by 제작자 - Tags: 태그, 태그가 들어갑니다. 일부는 Website:·Name: 필드도 갖습니다(예: Forms의 Shamaun-Nabi_sour-fireant-94.html). 이 규칙 덕분에 태그는 간단한 문자열 처리만으로 집계됩니다.

이 집계에서 가장 흔한 태그는 button(1,112), loader(685), card(577), simple(364), animation(346), hover(247) 순이었습니다.

4-2. 복사해 쓸 때의 핵심 위험: 선택자 충돌

Cards의 Tailwind 조각은 클래스가 요소에 붙어 있어 충돌 위험이 낮지만, 일반 CSS 조각 중에는 button, .container처럼 범용 이름을 그대로 쓰는 것이 있습니다. Patterns의 첫 파일은 .container가 전부입니다.

<!-- 붙이기 전에 이름을 바꿔 충돌을 막는 예 -->
<div class="container"></div>
<style>
.container { ... repeating-linear-gradient ... }   /* 이미 .container가 있는 페이지라면 깨진다 */
</style>
<!-- → .galaxy-pattern-stripes 처럼 접두어를 붙여 두 곳 모두 바꿔 준다 -->
비유

이름표 없이 ‘김 대리’라고만 적힌 서류를 한 사무실에 여러 장 모으면 누구 것인지 헷갈리듯, 범용 클래스 이름은 합쳐 쓰는 순간 서로 덮어씁니다.

3,802개가 모두 같은 규칙으로 만들어진 것이 아니라 제작자 927명이 각자 쓴 코드의 모음이므로, 가져온 뒤의 검수 책임은 전적으로 사용자에게 있습니다.

5디렉토리 구조 해부

하위 폴더 없이 종류별 11개 폴더가 전부
galaxy/ ├── README.md 소개·기여 방식(PR 불가)·라이선스 안내 ├── LICENSE MIT, Copyright (c) 2023 Uiverse.io ├── Buttons/ 1,231 버튼 ├── Cards/ 726 카드 ├── loaders/ 718 로딩 애니메이션 (소문자 폴더명) ├── Toggle-switches/ 260 토글 스위치 ├── Inputs/ 226 입력창 ├── Forms/ 180 폼(로그인·가입 등) ├── Checkboxes/ 171 체크박스 ├── Patterns/ 103 배경 패턴 ├── Radio-buttons/ 102 라디오 버튼 ├── Tooltips/ 62 툴팁 └── Notifications/ 23 알림

폴더 합계는 3,802로 파일 총수와 일치합니다. 폴더명 표기가 섞여 있다는 점(loaders만 소문자)도 자동 생성 저장소의 흔적입니다. 폴더별 수치는 커밋 로그의 메시지 분포(button 1,231 / card 726 / loader 718 / switch 260 / input 226 / form 180 / checkbox 171 / pattern 103)와도 같은 값이 나옵니다.

가장 작은 예는 Tooltips의 Tailwind 조각(ahmedyasserdev_wise-newt-71.html)입니다. group/group-hover:block으로 마우스를 올릴 때만 말풍선을 보이게 합니다. 주의할 점으로 이 파일은 dark: 변형 클래스까지 쓰므로, 프로젝트의 다크모드 설정 방식에 따라 다르게 보일 수 있습니다.

반대로 Toggle-switches의 3bdel3ziz-T_honest-deer-30.html은 달·해 SVG, CSS 변수, :has(.circle:checked)로 JS 없이 토글 상태를 표현합니다. 파일 안의 Font Awesome 라이선스 문구가 SVG 안에 텍스트로 섞여 들어가 있는 점도 눈여겨볼 만합니다(복사하면 같이 따라옵니다).

6학습 포인트 (기술별)

‘많은 예제’를 단순 구경이 아니라 비교 학습 재료로 쓰는 법
기술어디서 보나배울 것
CSS 애니메이션loaders/, Buttons/@keyframes, animation-delay로 순차 효과 만들기. 1,356개 파일이 같은 문법의 다른 사용례
JS 없는 상호작용Toggle-switches/, Checkboxes/input:checked + 형제 선택자 + :has()로 상태 표현
CSS 변수Toggle-switches 예제 등--transition, --color-dark처럼 한곳에서 바꾸는 값 설계
Tailwind433개 HTML 주석 헤더 파일같은 모양을 CSS로 쓴 조각과 Tailwind로 쓴 조각을 나란히 비교
SVG 인라인1,228개 파일viewBox, fill, 경로 애니메이션
접근성 감각7개 파일만 prefers-reduced-motion대부분의 조각이 빠뜨린 것이 무엇인지 찾는 연습
직접 볼 포인트

같은 ‘토글’이 폴더 안에서 어떻게 다른가

Toggle-switches의 260개 중 몇 개를 열어 <input type="checkbox">를 숨기고 label로 모양을 그리는 방식, appearance: none으로 입력 자체를 꾸미는 방식을 구분해 보세요. 키보드로 포커스가 가는지, 스크린리더가 상태를 읽는지가 방식마다 달라집니다.

이 저장소에서 가장 값진 학습은 ‘예쁜 결과물’이 아니라, 3,802개의 서로 다른 구현을 비교하며 접근성·충돌·성능 문제를 직접 찾아내는 눈입니다.

코드 품질 편차
오타와 비표준 속성이 그대로 들어 있다

예를 들어 Toggle-switches의 honest-deer-30 파일에는 positon: relative;(position의 오타)가 있고, SVG 안에 라이선스 안내 문구가 텍스트로 섞여 있습니다. 승인 과정에서 문법 오류까지 걸러지지는 않는다는 증거이므로 가져온 코드는 한 번 읽고 정리해 쓰세요.

7하드웨어 / 시스템 요구사항

브라우저와 텍스트 에디터면 충분하다
작업필요한 것
파일 열어서 보기아무 최신 브라우저(HTML 파일 더블클릭). :has() 같은 새 CSS는 구형 브라우저에서 동작하지 않을 수 있음
전체 받기Git. 3,977 커밋 이력이 있어 얕은 클론(--depth 1)이 빠름
Tailwind 조각 보기Tailwind CSS가 설정된 프로젝트(433개 파일 대상)
GPU·서버불필요

파일 크기는 중앙값이 약 1.5KB로 가볍습니다. 가장 큰 파일은 약 185KB(Cards의 Smit-Prajapati_stupid-bullfrog-39.html)에 달해, 전체를 한 페이지에 모아 미리보기를 만들면 무거워질 수 있습니다.

8직접 해볼 수 있는 실습 과제

설치 없이 파일 읽기와 작은 스크립트로 시작한다
초급

8-1. 버튼 하나를 내 페이지에 안전하게 붙이기 ★

Buttons에서 마음에 드는 파일 하나를 골라 새 HTML에 붙이고, 이미 있는 <button>이 같이 변하는지 확인합니다. 그다음 클래스 이름을 붙여 선택자를 좁힙니다.

<!-- before -->
button { padding: 15px 30px; ... }
/* after: 범위를 좁힌다 */
.jelly-btn { padding: 15px 30px; ... }
<button class="jelly-btn">Button</button>
초급

8-2. 헤더 주석으로 작성자·태그 집계표 만들기 ★★

모든 파일에는 From Uiverse.io by 헤더가 있습니다(3,802/3,802). 이를 정규식으로 읽어 작성자별·태그별 개수 표를 만드는 짧은 파이썬 스크립트를 작성해 보세요. 이 글의 수치(작성자 927명, 태그 상위 목록)를 직접 재현해 보면 됩니다.

import glob, re, collections
tags = collections.Counter()
for f in glob.glob("*/*.html"):
    m = re.search(r"Tags: ([^*]*?)(?:\*/|-->)", open(f, errors="ignore").read())
    if m:
        tags.update(t.strip().lower() for t in m.group(1).split(","))
print(tags.most_common(10))
중급

8-3. 로더 5개를 한 화면에서 비교하기 ★★★

loaders에서 5개를 골라 서로 안 겹치도록 클래스 접두어를 붙이고 한 페이지에 나란히 둡니다. 각각 prefers-reduced-motion에서 애니메이션을 멈추는 규칙을 직접 추가해 보세요(7개 파일만 이 배려를 갖고 있습니다).

고급

8-4. 가벼운 미리보기 갤러리 만들기 ★★★★

폴더 하나(예: Tooltips, 62개)를 읽어 각 파일을 <iframe srcdoc>에 넣는 정적 갤러리를 만듭니다. 3,802개 전체를 한 번에 그리면 느려지므로 폴더별 페이지 분할과 지연 로딩을 고민해 보세요. Tailwind 조각(HTML 주석 헤더)은 갤러리 쪽에 Tailwind를 포함해야 보입니다.

9관련 기술 심화 학습 로드맵

조각 수집에서 디자인 시스템으로 올라가는 4주 코스
주차주제할 일
1주CSS 기본기Buttons·Cards 30개 읽기, 선택자 범위와 상속 정리
2주애니메이션loaders 20개 분해: @keyframes, 타이밍 함수, 지연 시간 패턴
3주Tailwind 비교CSS 조각 하나를 Tailwind로 다시 쓰고 반대로도 해 보기
4주컴포넌트화·접근성마음에 든 조각 3개를 접두어·CSS 변수·키보드 조작을 갖춘 컴포넌트로 정리

10핵심 키워드 사전

이 저장소를 읽다 만나는 말
용어뜻
Uiverse.ioUI 조각을 올리고 미리보는 커뮤니티 사이트. 이 저장소의 원본
미러(mirror) 저장소다른 곳의 콘텐츠를 자동으로 복사해 둔 저장소
@keyframes시간에 따른 스타일 변화를 정의하는 CSS 문법
:has()“이 요소가 특정 자손을 가졌을 때” 스타일을 주는 선택자. 체크 상태 표현에 자주 쓰임
선택자 충돌서로 다른 코드가 같은 클래스/태그 이름으로 스타일을 덮어쓰는 문제
Tailwind 유틸리티 클래스px-4, rounded-lg 같은 짧은 스타일 클래스
prefers-reduced-motion사용자가 “움직임을 줄여 달라”고 설정했는지 알려 주는 미디어 쿼리
MIT 라이선스복사·수정·재배포를 폭넓게 허용하고 저작권 고지를 요구하는 라이선스

11참고 링크

원본 플랫폼과 이 글이 근거로 삼은 파일
라이선스 사용 팁
MIT이지만 출처 표기를 권장한다

README는 모든 요소가 MIT라고 밝히면서, 의무는 아니지만 원작자와 Uiverse.io에 크레딧을 달아 달라고 요청합니다. 파일 안의 From Uiverse.io by … 주석을 지우지 않고 가져가는 것이 가장 쉬운 방법입니다. 다만 927명이 각자 올린 코드를 한 MIT 표기로 묶어 둔 구조이므로, 상업 제품에 대량 도입한다면 원본 사이트의 약관도 확인하세요.