Resume Portfolio
Resume Studio 저장소의 템플릿으로 사용자의 포트폴리오를 만든다. 사이트는 이미 다 만들어져 있고 이 스킬의 일은 사실을 옮기는 것이다. 레이아웃을 새로 짜는 대신 content/profile.json 을 정확하게 채우는 데 시간을 쓴다.
현재 폴더에 gallery/ 와 templates/ 가 있으면 그곳이 Resume Studio 다. 없으면 사용자에게 위치를 묻고, 내려받지 않았다면 git clone https://github.com/roadkwonai/resume-studio.git 후 npm install 을 안내한다. 아래 경로는 모두 그 폴더 기준이다.
1. 자료 모으기와 템플릿 고르기
이 둘은 사용자가 할 일이므로 한 번에 요청한다.
갤러리 띄우기. npm run studio 를 백그라운드로 실행한다(첫 실행은 빌드로 몇 분 걸린다). http://localhost:4100 이 응답하면 브라우저로 열어 준다. 사용자가 이미 템플릿을 말했다면 갤러리는 건너뛰어도 된다.
한 메시지로 부탁한다.
- 이력서 파일 경로나 붙여넣은 내용
- 갤러리에서 템플릿을 골라 달라는 말(화면의 "이 템플릿 선택" 버튼이
selection.json에 기록한다) - 있으면: 지원 직무, 사이트 언어(한국어/영어), 프로필 사진, 프로젝트 이미지, GitHub 등의 링크
고민하는 사용자에게는 자료 양에 맞춰 추천한다. 추천 근거는 references/templates.md 에 있다.
사용자가 갤러리에서 골랐다고 하면 selection.json 을 읽어 확인한다. 이 파일은 마지막 클릭만 기록하므로 예전 값일 수 있다. 사용자가 템플릿 이름을 말했다면 그 말이 우선이다.
2. profile.json 작성
references/profile-guide.md 를 읽고, 고른 템플릿의 templates/<id>/content/README.md 를 읽은 뒤 scratchpad 에 profile.json 을 작성한다. 규격은 shared/profile.ts 이다.
출처 없는 내용을 쓰지 않는다. 포트폴리오는 채용 담당자가 사실로 읽는 문서다. 없는 수치, 후기, 기간을 넣으면 사용자가 면접에서 곤란해지고 경력 허위 기재가 될 수 있다. 빈 항목은 화면에서 저절로 사라지므로 비워 두는 편이 언제나 안전하다. 문장을 다듬는 것은 괜찮지만 사실을 늘리면 안 된다. 예를 들어 "결제 시스템 개발"을 "결제 시스템을 개발했습니다"로 쓰는 것은 되고, "수백만 사용자의 결제 시스템"으로 쓰는 것은 안 된다.
공개해도 되는 내용만 옮긴다. 이력서는 회사에 내는 비공개 문서이고 사이트는 누구나 본다. 주민등록번호, 집 주소, 생년월일, 가족 사항, 병역 세부, 연봉은 옮기지 않는다. 전화번호는 사용자가 공개에 동의했을 때만 넣는다.
자료가 둘 이상이거나 내용이 많으면 references/sources.md 를 읽는다. 자료끼리 값이 다를 때와 무엇을 추릴지의 기준이 있다.
작성 후 npm run validate -- <파일> 로 형식을 확인한다.
3. 포트폴리오 생성
npm run new -- <template-id> <slug> <profile.json 경로>
사용자가 템플릿을 말했으면 그 id 를 쓰고, 갤러리 선택을 따를 때만 <template-id> 자리에 selected 를 쓴다. slug 는 사용자 이름의 영문 소문자로 정한다(예: hong-gildong). 그다음:
- 사진, 이미지, 이력서 PDF를
portfolios/<slug>/public/profile/로 복사한다. 원본은 옮기지 말고 복사한다. - 이미지 경로를 profile.json 에
/profile/파일명으로 적는다. - 이력서 PDF를
basics.resumeFile로 내려받게 하면 PDF 전체가 공개된다. 사이트에서 뺀 전화번호나 주소가 PDF에 남아 있는지pdftotext로 확인하고, 있으면 보고에 꼭 적는다. 파일을 대신 고치지는 않는다. content/site.ko.json의 고정 문구를 읽는다. "오픈소스 기여 활동"처럼 이 사람에게 맞지 않는 주장이 있으면 사실에 맞게 고친다.- 문구를 바꾸고 싶을 때도
content/site.ko.json을 고친다. 컴포넌트는 고치지 않는다. 규격에 없는 표현이 꼭 필요한 경우에만 컴포넌트를 고치고 사용자에게 알린다.
4. 검증
npm run verify -- <slug>
형식, 프로덕션 빌드, 템플릿 데모 인물 잔재를 한 번에 검사한다. 통과하면 npm run start -w @resume/portfolio-<slug> 를 백그라운드로 띄워 1440px 과 390px 화면을 실제로 본다. 다시 빌드했다면 이전 서버를 꺼야 한다. 이전 서버는 새 빌드를 제대로 내보내지 못해 500 오류를 낸다. 볼 곳은 긴 회사명이나 프로젝트명의 줄바꿈, 가로 넘침, 비어 보이는 구역, 사진 자리, 대문자로 바뀌어 어색해진 이름(SaaS가 SAAS로 나오는 경우)이다. 내용이 길어 깨지면 템플릿을 고치기 전에 해당 문구를 줄인다(사실은 유지).
마지막으로 profile.json 의 수치와 고유명사를 이력서 원문과 한 번 더 맞춰 본다.
5. 넘기기
사용자에게 알린다.
- 실행 주소와 포트폴리오 경로
- 자료가 없어서 사라진 섹션과 채우면 좋아지는 순서
- 이 템플릿이 표시하지 않는 항목. 각 템플릿의
content/README.md에 적혀 있다. 예를 들어 학력이 안 나오는 템플릿이면 꼭 알린다 - 이력서에서 일부러 뺀 개인정보, 내려받기 PDF에 남아 있는 개인정보
- 자료끼리 달랐던 값과 고른 값, 추리면서 뺀 프로젝트
- 다듬으면서 표현이 바뀐 문장 중 사용자가 확인해야 할 것
배포는 공개 행위이므로 사용자가 요청할 때만 한다. 포트폴리오 폴더는 독립 앱이라 그대로 배포할 수 있다.
portfolios/ 와 PDF, selection.json 은 .gitignore 에 들어 있어 Resume Studio 저장소에 커밋되지 않는다. 사용자의 이력서, 사진, 연락처를 공개 저장소에 올려야 하는 일이 생기면 올라갈 파일 목록을 먼저 보여 주고 확인을 받는다.
수정 요청일 때
이미 만든 포트폴리오면 portfolios/<slug>/content/profile.json 만 고치고 4단계를 다시 한다.
템플릿을 바꾸려면 같은 profile.json 으로 새 slug 를 만든다. 형식이 같아서 내용을 다시 쓸 필요가 없다. 예전 폴더는 사용자가 원할 때까지 지우지 않는다.