readme:art.leetekwoo.com

leetekwoo @leetekwoo@hackers.pub

목적

  • 제 웹사이트의 readme를 공유합니다.
    • Github의 Private으로 올라가 있어, readme라도 공유하고 싶었습니다.
    • 현역 개발자 여러분에게 보여드리는 것이 사실 좀 많이 부끄럽습니다😅

readme : art.leetekwoo.com

© ALL RIGHTS RESERVED. LEE TEKWOO

Artwork Unique ID preferences

Versions

  • V0.0.0: 2025.07.02 첫 버전 작성

Artwork System 작품 고유 번호 체계:

코드 파일과는 별개의 파일명과 작품 고유번호의 생성체계를 가리킴.

Artwork ID - 개별 작품 고유 번호

[type]-[year]-[location]-[series_id]-[unique_id]-[sequence].[extension]

  1. type: 약어 사용. 포트폴리오, 전시, 커미션, 스냅사진으로 분류.
    작품의 대분류. Series 연작이란 여러 사진 작품이 동일한 맥락에서 개별 작품군을 가리킴. /src/lib/typesContentType 참조
  • PF: "portfolio"
  • EX:"exhibition"
  • CM:"commission"
  • SN:"snapshot"
  1. series_id (required): 연작의 ID. 고유한 값 Unique ID 사용
  2. unique_id (nullable): 개별 작품의 추가 ID. 고유 값 사용. 작품의 제목, 개별 인덱싱이 부여된 작품에 사용
  3. year (required): 제작 연도. YY 형식으로 작성.
  4. location (nullable): 촬영 장소. 약어 사용 (ex: SEL).
  5. sequence (nullable):
    • Series: 작품이 연작인 경우, 시리즈 내에서의 순서를 가리킴
    • 개별 작품인 경우: 순서에 특별한 의미는 없이 임의로 순서가 결정될 수 있음. 파일 정렬을 위해 추가 가능. (ex: snapshot 카테고리의 경우)

Data Management

상기의 이미지 파일명 기반으로, art.leetekwoo.com에 올라간 작품을 JSON 데이터로 생성

  • 목적: public/img/ 디렉토리의 이미지 파일명을 파싱하여 artworks.jsonseries.json 자동 생성
  • 입력: 이미지 파일명 (Artwork ID 체계 준수)
  • 출력: 구조화된 JSON 데이터 파일
public/img/
├── [type]/
      ├── [series_id]/
      │ ├── [artwork_id].[ext] → artworks.json
      │ └── [artwork_id].[ext] → artworks.json
      └── [series_id]/
      └── [artwork_id].[ext] → artworks.json
  • artworks.json: 개별 작품 메타데이터

    • id, type, seriesId, src, ratio, createdAt
  • series.json: 시리즈별 그룹 정보

    • id, type, title, artworks[]
  • 파일명 파싱을 통한 자동 메타데이터 추출

  • 이미지 비율 자동 감지 (width > height: landscape, width < height: portrait)

  • 시리즈별 자동 그룹핑

  • 중복 데이터 방지 및 유효성 검증


Web Application

  • Typescript + Vite + React (SPA - CSR only)
  • Cloudflare Pages
    • CDN 활용 및 배포 환경 자동화를 위해 사용
    • 로컬에서 생성한 빌드(dist)를 cdn으로 배포
      • 빌드 과정에서 이미지 압축 및 워터마크 삽입
      • LCP 지연이 될 수 있는 이미지 파일은 s-maxage 장기 설정
      • 이외의 번들 파일은 no-cache 적용
  • robots.txtDisallow * 및 Cloudflare AI 크롤링 방지 사용
  • shadcn, tailwindCSS 이외의 외부 패키지 사용 최소화
  • 레이아웃 및 컴포넌트 UI/UX는 별도의 설계 및 계획 과정없이 심미성을 우선적으로 고려.

PS

readme에는 포함되지 않은 간략한 개발 후기입니다.
사적인 얘기이니 넘기셔도 됩니다.

  • 해커스펍에 여러 번 단문으로 공유한 뒤 삭제했습니다. 조금 더 정리하여 공유해야겠다는 생각이었습니다만, 역시 완벽한 준비는 없는 것 같습니다.
    • 개발할 시간이 부족해 틈틈이 시간을 썼습니다.
    • 특별한 기능은 없는 평범한 개인 웹사이트지만, 작품을 분류하고 정리하면서 시간이 걸렸습니다.
    • 그 과정에서 제가 제 권리를 제대로 보호하지 않아 생긴 문제를 발견했습니다. ex) 작품 유실, 표절, 판매 및 유통 추적 불가 (과장된 이야기라고 여겨주셔도 됩니다 😅)
  • 현재는 저도 그저 평범한 사회인이고, 하루하루 열심히 살아갈 뿐입니다.
  • 사진은 정말 좋아하지만 저는 그저 게으른 아마추어이고 보는 것이 더 좋습니다.
  • 이 웹사이트는 인터넷상에 과거를 돌아보기 위한 작은 집을 짓는다-고 생각하며 개발했습니다.

긴 글 읽어주셔서 감사합니다.
오늘도 좋은 하루되시길 바라며..

6

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01986ec9-e8ca-7882-bfe3-266dd5592b0e on your instance and reply to it.