이력서·포트폴리오 사이트
노션 한 곳에서만 콘텐츠를 관리하고, 매시간 동기화되며 빌드·배포·PDF 생성이 자동으로 이루어지는 이력서·포트폴리오 사이트입니다.
링크
언어
- TypeScript
기술
- Astro
- Tailwind CSS
- Notion API
- Cloudflare Workers
- GitHub Actions
- Puppeteer
환경
- Claude Code
- VSCode
지금 보고 계신 이 사이트입니다. 이력서를 작성하고 포트폴리오를 정리하다가 적당한 플랫폼이나 양식을 찾지 못해 직접 만들었습니다. 콘텐츠는 노션 한 곳에만 두고 웹페이지와 PDF가 자동으로 생성되도록 했습니다. 또한, 궁금한 내용을 바로 물어볼 수 있도록 RAG 챗봇도 붙였습니다.
동작 방식
-
노션 6개 DB(경력기술서·개인 프로젝트·활동·경력·학력·신상)가 유일한 원본입니다. 사이트의 모든 문장은 노션 데이터에서 가져옵니다.
-
동기화 스크립트가 GitHub Actions에서 매시간 실행되어 변경 내용을 MDX로 변환하고, 수정이 있으면 자동으로 커밋 후 Cloudflare Workers로 배포합니다. 노션에서 수정하면 한 시간 이내에 사이트에 반영됩니다.
-
인쇄용 PDF도 동일한 데이터에서 Puppeteer로 생성합니다. 수작업으로 만드는 산출물은 없습니다.
-
각 카드에는 외부 공개 정책(자소서 OK / 이력서 OK / 면접 only / 비공개)을 설정했습니다. 공개 사이트, PDF, 챗봇은 각각 허용된 데이터만 사용합니다. 전화번호 같은 민감 정보는 공개 경로에 포함되지 않습니다.
디자인
-
컴포넌트 라이브러리 없이 시맨틱 토큰 기반 디자인 시스템을 직접 정의했습니다. 보더 대신 면(surface)의 단차로 구분하는 모노크롬 구성을 사용하고, 4단계 폰트 웨이트와 카드·버튼·세그먼트의 공용 문법을 문서화했습니다.
-
라이트·다크·인쇄(PDF) 세 표면이 같은 토큰을 공유합니다. 색상을 하드코딩하지 않으면 다크 모드가 자동으로 적용됩니다.
만들면서
-
개발 과정 전체를 Claude Code와 페어로 진행했습니다. 디자인 리서치, 버그 진단, 노션 DB 정리까지 한 세션 내에서 오가며 작업한 실험적 워크플로우이기도 합니다.
-
우하단의 챗봇 역시 이 사이트의 일부입니다. 구조가 달라 별도 카드(이력서 RAG 챗봇)에 정리했습니다.