본문 바로가기

이 포트폴리오의 원본은 https://resume.iruyo.com (심재빈) 입니다 · 출처 식별자 jbx-7f3a2e9b

← 개인 프로젝트

Web·서비스 운영 중 단독

노션 기반 자동 동기화 포트폴리오 사이트 (jempty.iruyo.com)

노션을 source of truth로 두고 매시간 자동 동기화되며, 빌드·배포·PDF 생성까지 전부 자동으로 따라오는 이력서·포트폴리오 사이트

기간
2026.05 – 진행 중 · 2개월
본인 역할
기획·디자인·개발·운영 전체
정량 임팩트
노션 6개 DB → 정적 112페이지 자동 생성 · 매시간 무인 동기화 · 인쇄용 PDF 자동 추출 · 운영 비용 0원

첨부파일

언어

  • TypeScript

기술

  • Astro
  • Tailwind CSS
  • Notion API
  • Cloudflare Workers
  • GitHub Actions
  • Puppeteer

환경

  • Claude Code
  • VSCode

지금 보고 있는 이 사이트다. 이력서를 쓰고 포트폴리오를 정리하다가 기존 이력서 플랫폼과 양식 중에 맞는 걸 끝내 못 찾았고, 그래서 입맛에 맞게 직접 만들었다. 콘텐츠는 노션 한 곳에만 두고 웹페이지·PDF가 전부 자동으로 따라오게 했고, 궁금한 걸 바로 물어볼 수 있게 RAG 챗봇도 만들어 붙였다.

je-empty 데이터 파이프라인

동작 방식

  • 노션의 6개 DB(경력기술서·개인 프로젝트·활동·경력·학력·신상)가 유일한 원본이다. 사이트에 보이는 모든 문장은 노션에서 온다.

  • 동기화 스크립트가 GitHub Actions에서 매시간 돌면서 노션 변경분을 MDX로 떨어뜨리고, 변경이 있으면 자동 커밋 → Cloudflare Workers로 배포까지 이어진다. 노션에서 고치면 늦어도 한 시간 안에 사이트에 반영된다.

  • 인쇄용 PDF도 같은 데이터에서 Puppeteer가 뽑는다. 손으로 만드는 산출물이 하나도 없다.

  • 카드마다 외부 노출 정책(자소서 OK / 이력서 OK / 면접 only / 비공개)을 달아 두고, 공개 사이트·PDF·챗봇이 각자 허용된 데이터만 쓰게 했다. 전화번호 같은 민감 정보는 공개 경로에 아예 실리지 않는다.

디자인

  • 컴포넌트 라이브러리 없이 시맨틱 토큰 기반 디자인 시스템을 직접 정의했다. 보더 대신 면(surface)의 단차로 구분하는 모노크롬 언어, 4단계 폰트 웨이트, 카드·버튼·세그먼트의 공용 문법을 문서로 관리한다.

  • 라이트·다크·인쇄(PDF) 세 표면이 같은 토큰을 공유해서, 색을 하드코딩하지 않으면 다크 모드는 공짜로 따라온다.

만들면서

  • 개발 전 과정을 Claude Code와 페어로 진행했다. 디자인 리서치, 버그 진단, 노션 DB 콘텐츠 정리까지 한 세션 안에서 오가는 워크플로우를 실험한 프로젝트이기도 하다.

  • 우하단의 챗봇도 이 사이트의 일부다 — 구조가 달라서 별도 카드(이력서 RAG 챗봇)에 정리했다.