TL;DR
- Postgres Schema Gallery가 Temporal, Miniflux, Listmonk, Matrix Synapse, Sourcegraph, Cal.com, GitLab CE의 실제 PostgreSQL 스키마를 문서화·리뷰하고 회전형 3D 탐색기로 제공함.
- 일곱 제품은 각각 38개, 16개, 16개, 137개, 180개, 121개, 1,429개 테이블로 구성되며, GitLab CE가 규모 스트레스 테스트 역할을 함.
products.json의 저장소·고정 커밋·스키마 파일·라이선스를 바탕으로 스키마 추출, 리뷰, 문서화, 탐색기 영상 녹화, GitHub Pages 배포를 자동화함.- WebGL 브라우저에서는 실시간 3D 미니어처를 렌더링하고, 미지원 브라우저에서는 녹화 영상과 평면 스키마 맵을 대체 표시함.
- 새 제품은 PostgreSQL 스키마 유형과 메타데이터를 담은
products.json항목을 풀 리퀘스트로 추가하며, 스키마는 각 프로젝트의 라이선스를 유지함.
갤러리
- Postgres Schema Gallery 저장소는 잘 알려진 오픈소스 제품의 실제 PostgreSQL 스키마를 문서화하고 리뷰한 결과를 회전형 3D 탐색기로 제공함.
- 첫 버전에는 다음 일곱 제품이 포함됨.
- Temporal: 38개 테이블
- Miniflux: 16개 테이블
- Listmonk: 16개 테이블
- Matrix Synapse: 137개 테이블
- Sourcegraph: 180개 테이블
- Cal.com: 121개 테이블
- GitLab CE: 1,429개 테이블
- 각 섬네일은 해당 제품의 스키마 맵이며, 선택하면 회전 가능한 전체 탐색기로 열림.
- 첫 화면은 일곱 스키마를 모두 실시간으로 천천히 회전하는 미니어처로 표시하고, 각 카드에서 전체 탐색기와 리뷰 결과가 담긴 문서를 열 수 있음.
구축 방식
- 저장소 내부에는 별도의 제3자 산출물이 포함되지 않으며,
products.json이 각 제품의 저장소, 고정 커밋, 스키마 파일, 라이선스를 지정함. main에 푸시될 때마다 워크플로가 지정된 커밋에서 파일을 가져오고, 필요한 경우 평문 SQL로 변환함.- Miniflux는 Go 마이그레이션 문자열에서 변환함.
- Cal.com은 Prisma 스키마에서 변환함.
- 워크플로가 리뷰어를 라이브러리로 실행하고, 제품별 문서 폴더를 생성하며, 각 탐색기가 회전하는 3초 클립과 가로형 애니메이션 배너를 기록하고, 첫 화면을 렌더링한 뒤
site/를 GitHub Pages에 배포함. - 첫 화면의 미니어처는 브라우저에서 WebGL로 실시간 렌더링됨.
- WebGL을 지원하지 않는 브라우저에서는 각 제품의 녹화 클립을 대신 표시하고, 포스터 이미지로 평면 스키마 맵을 사용함.
- 해당 브라우저에서 WebGL을 켜는 위치와 확장 프로그램을 끈 비공개 창이 가장 빠른 테스트 방법이라는 안내도 함께 표시함.
- 도메인 정보는 다음 우선순위로 결정됨.
products/<slug>/narratives.json에 직접 작성된 정보가 있으면 사용함. 현재 Temporal, Miniflux, Listmonk가 해당됨.- 없으면 빌드 과정에서 테이블 이름 접두사로 테이블을 그룹화하고, 카드에
domains by table prefix를 표시함. - 이를 통해 접두사 기반 그룹을 리뷰 판단으로 오인하지 않게 함.
npm ci로 의존성을 설치하고,npm test로 매니페스트·추출·접두사 도메인·첫 화면을 검사함.node build/index.ts로 네트워크가 필요한 전체 빌드를 실행해site/에 결과를 생성함.- 배너 생성에는
ffmpeg와 Playwright가 필요함. --only temporal --no-banner옵션으로 Temporal만 빌드하고 배너를 생략할 수 있음.- Node.js 24 이상이 필요하며, 리뷰어는
products.json에 지정된 태그로.cache/reviewer/에 복제됨.
제품 추가
- 새 제품은 다음 정보를 포함한 항목을
products.json에 추가하는 풀 리퀘스트로 제안함. slug: 제품 식별자name: 제품명homepage: 제품 홈페이지 URLrepo: GitHub 저장소 경로commit: 40자리 커밋 해시ref: 버전 또는 참조 이름license: 라이선스blurb: 제품 설명과 스키마의 주목할 만한 특징을 담은 한두 문장source: 스키마 소스 유형과 파일 경로domains:prefix또는curatedsource.kind는 다음 세 유형 중 하나임.sql: 파일을 지정된 순서로 이어 붙임.go-raw-strings: 마이그레이션을 담은 백틱 문자열이 포함된 Go 파일 하나를 사용함.prisma:schema.prisma파일 하나를 사용함.- 가능하면 실제 도메인을 담은
products/<slug>/narratives.json도 추가하고domains를curated로 설정함. narratives.json의 형식은 Temporal 항목을 참고함.- 지원 대상은 PostgreSQL로 한정됨.
라이선스
- 갤러리 코드와 텍스트의 라이선스는 MIT임.
- 각 스키마는 해당 프로젝트의 라이선스를 그대로 유지함.
- 프로젝트별 라이선스 목록은
NOTICE.md에 기록됨.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요