JJ Creative 교육연구소 · HRD×AI 라운지 실전 02 · 2026-10-08

Codex 데스크톱 앱으로
«신입 온보딩 체크리스트» 처음부터 끝까지
기획 → PRD → 개발 → 테스트 → GitHub → Firebase → Cloudflare 배포, 말로만

«바이브 01~04»에서 GitHub·Vercel·장부·열쇠를 개념으로 익혔다면, 이번엔 처음부터 끝까지 실제로 만듭니다. 도구는 OpenAI의 Codex 데스크톱 앱, 주제는 HRD 담당자가 매년 엑셀로 씨름하는 신입사원 30일 온보딩 체크리스트입니다. 제가 한 일은 Codex에게 말한 것, 그리고 Codex가 «사람이 눌러 주세요»라고 할 때 버튼 두 번 누른 것이 전부입니다. GitHub 저장소 만들기, Firebase 장부와 로그인, Cloudflare 배포까지 Codex가 직접 했습니다. 외부 서비스가 연결만 돼 있으면, AI가 거기까지 손을 뻗는다 — 이 장면을 보여 드리려고 2026년 10월 8일 오후 한 번에 찍었습니다.

읽는 법
① ~ ⑥여섯 단계기획 → PRD → 개발 → 테스트 → 저장·배포 → 실제 주소.
📷 실제 화면Codex 대화 그대로제 개인 대화 목록과 계정 정보는 잘라내거나 가렸습니다.
💬 Codex에게 말하기제가 넣은 문장 그대로복사해서 주제만 바꿔 쓰세요.
완성품 먼저

«온보딩 30» — 신입은 자기 할 일, 멘토는 우리 부서, HRD는 전체

한 앱에 들어가지만 로그인한 사람에 따라 보이는 화면이 다릅니다. 화면 속 이름은 모두 가상의 닉네임입니다.

온보딩 30 HRD 담당자 화면 — 조회 중인 신입사원 3명, 전체 진행률 50%, 기한이 지난 항목 1개, 부서별 진행 상황 표
HRD 담당자 — 전체 진행률, 기한 지난 항목, 부서별 진행률이 한눈에. 기획 단계에서 «가장 큰 불편»이라고 말한 바로 그 화면입니다.
신입사원 화면 — 나의 온보딩, 구름새 님의 첫 한 달 진행률 50%, 정보보안 교육 이수 3일 지남 표시와 완료 버튼
신입사원 — 내 할 일과 마감일. 기한이 지나면 빨간 딱지, «완료»를 누르면 바로 반영.
영업팀 멘토 화면 — 우리 부서 온보딩, 신입사원 2명, 진행률 37.5%, 기한 지난 항목 1개
부서 멘토 — 자기 부서 신입만. 면담 항목은 멘토가 «확인»을 눌러야 완료됩니다.
작업실
Codex 앱내 컴퓨터 폴더에서 기획·코딩·테스트
→
창고
GitHub비공개 저장소 생성·업로드를 Codex가
→
장부·출입증
Firebase체크리스트 데이터와 로그인
→
가게
Cloudflare Pagesonboarding-30-jjc.pages.dev 로 배포
«바이브 01» 지도의 다른 길

1~4편은 GitHub → Vercel → Supabase 길로 설명했습니다. 이번 편은 같은 역할을 Cloudflare(가게)와 Firebase(장부+로그인)로 바꿔 갑니다. 이름만 다를 뿐 지도는 같습니다. 웹 버전 Claude Code로 Supabase·Vercel 길을 가는 편은 «실전 01»입니다.

준비물

Codex 앱 + 연결해 둔 계정 셋

준비물쉬운 말이번 실습에서는
Codex 데스크톱 앱내 컴퓨터 폴더에서 일하는 OpenAI의 코딩 AI(ChatGPT 유료 요금제)GPT-6 Astra, «전체 액세스» 모드
GitHub창고 — 명령 도구(gh)가 로그인돼 있으면 Codex가 저장소를 직접 만듦미리 로그인돼 있었음
Firebase구글의 장부+로그인 서비스 — 명령 도구(firebase)로 프로젝트까지 생성도중에 재로그인 1번
Cloudflare가게 — 명령 도구(wrangler)로 배포도중에 승인 1번
«연결돼 있다»는 말의 뜻

각 서비스에는 컴퓨터용 명령 도구가 있습니다(gh·firebase·wrangler). 한 번 로그인해 두면, Codex는 그 도구를 대신 실행해서 사람이 웹 화면에서 누르던 일을 대화 한 줄로 처리합니다. 설치·로그인은 Codex에게 «GitHub·Firebase·Cloudflare 명령 도구가 준비돼 있는지 확인하고 없으면 설치해줘»라고 시작하면 됩니다.

① 기획

새 프로젝트 → 폴더 신뢰 → «코드 쓰지 말고 질문부터»

Codex 프로젝트 만들기 창 — 이름 신입 온보딩 체크리스트, 소스 폴더 onboarding-checklist
입력창 위 프로젝트 선택 → 새 프로젝트. 이름을 적고, 빈 폴더를 하나 만들어 «소스 폴더»로 고릅니다.
이 폴더를 신뢰할까요 확인 창 — 폴더 신뢰 버튼에 빨간 네모
«이 폴더를 신뢰할까요?» — Codex가 이 폴더의 파일을 읽고 고치고 실행해도 되는지 묻습니다. 빈 새 폴더라서 안심하고 폴더 신뢰.
Codex 입력창에 기획 요청 문장을 넣은 화면
첫 마디는 «아직 코드는 쓰지 말고, 질문 5개 이내로». 처음부터 «만들어줘»라고 하면 AI가 추측으로 빈칸을 채웁니다.
Codex가 던진 질문 5개 — 누가 사용하나요, 30일 동안 챙길 일, 마감일은 누가 정하나요, 완료 확인 방법, 첫 버전의 가장 큰 불편
Codex의 질문 5개. 누가 쓰는지, 무엇을 챙기는지, 완료는 누가 확인하는지 — 교육 담당자가 답할 수 있는 질문들입니다.
Codex가 정리한 기획 초안 — 사용자별 표와 첫 버전에 꼭 필요한 기능 목록
제 답을 받은 뒤의 정리. 핵심을 «HRD가 부서별 진행률과 지연 항목을 한눈에»로 잡고, 첫 버전 기능과 나중 기능을 나눴습니다.
요령 답할 때 «개인정보는 최소로, 이름은 닉네임으로»를 덧붙였더니, 이후 PRD·화면·테스트 데이터까지 끝까지 지켰습니다. 처음에 말한 원칙이 마지막까지 갑니다.
② 설계

PRD — «개발자에게 넘겨도 될 수준»의 요구사항 문서

PRD는 «누가 어떤 문제를 해결하려고 무엇을 만들고, 어떻게 완성을 확인할지» 적은 문서입니다. 사람 개발자에게 맡길 때도, AI에게 맡길 때도 이 문서가 기준이 됩니다.

Codex 화면 오른쪽에 열린 PRD.md — 신입 온보딩 체크리스트 PRD 제목, 목적과 성공 기준
Codex가 폴더에 만든 PRD.md(278줄)가 오른쪽 창에 바로 열립니다. 목적, 사용자와 권한, 화면 목록, 데이터 구조, 첫 버전 범위, 완료 기준까지 12장.
PRD가 «모르는 것»을 남겨 둔 점이 좋았습니다

Codex는 로그인 방식·마감일·운영 기본값 세 가지를 «개발 전 확인 필요»로 남기고 멋대로 정하지 않았습니다. 저는 다음 요청에서 그 셋을 정해 줬습니다 — 로그인은 이메일·비밀번호(공개 가입 없음, 지금은 가상 계정만), 마감일·운영값은 제안대로.

③ 개발

«만들어줘» 한 번 → Firebase 프로젝트 생성부터 화면까지 21분

개발 요청 문장 — 열린 세 가지 결정, Firebase 프로젝트 새로 만들기, 내가 눌러야 할 설정은 멈추고 알려주기
개발 요청의 핵심 한 줄: «내가 Firebase 화면에서 직접 눌러야 하는 설정이 있으면 멈추고 어디를 누르면 되는지 알려줘».
Codex가 멈추고 안내한 화면 — 로그인 설정 한 가지를 직접 해 주셔야 해서 멈췄습니다, Firebase 로그인 설정 열기, 시작하기·이메일/비밀번호·사용 설정 순서
실제로 Codex가 멈춘 장면. «로그인 설정 한 가지를 직접 해 주셔야 해서 멈췄습니다» — 무료 요금제에선 명령 도구로 켤 수 없는 설정이라 사람 손이 필요했습니다.
Firebase 콘솔 Authentication 로그인 방법 — 이메일/비밀번호 사용 설정 스위치와 저장 버튼에 빨간 네모
Firebase 콘솔 → Authentication → 시작하기 → 이메일/비밀번호 → 스위치 켜고 저장. 이것이 이번 실습에서 제가 누른 버튼 첫 번째입니다.
Codex 첫 버전 완성 메시지 — 가상 계정 6개, 역할별 접근 제한, 한국어 모바일 화면, 검사 54개와 빌드 통과, 계정 파일 Git 제외
«첫 버전을 완성했습니다» — 가상 계정 6개, 역할별 접근 제한, 한국어·휴대폰 화면, 검사 54개 통과, 계정 파일은 GitHub에 올라가지 않게 처리.
그 21분 동안 Codex가 한 일쉬운 말
Firebase 프로젝트·웹앱 생성장부를 넣을 책장을 새로 삼(«onboarding-30-…»)
Firestore(서울) 생성, 접근 규칙 작성장부를 만들고 «신입은 본인만, 멘토는 자기 부서만, HRD는 전체» 규칙을 걸음
가상 계정 6개 생성HRD 1·멘토 2·신입 3 — 가짜 이메일(…@onboarding.test)
화면 3종 구현신입·멘토·HRD 화면, 휴대폰 크기 대응
권한 검사 21개 + 화면 검사«신입이 남의 체크리스트를 고칠 수 있나?» 같은 공격을 스스로 시험
④ 테스트

사람이 한 번 더 — 세 역할로 직접 들어가 보기

Codex가 검사를 통과했다고 해도, 마지막 확인은 사람이 합니다. 내 컴퓨터에서만 열리는 주소(127.0.0.1:5173)로 HRD·멘토·신입 가상 계정에 차례로 로그인해 봤습니다. 맨 위 «완성품 먼저»의 세 화면이 그 결과입니다.

  1. HRD로 — 부서 선택에 따라 진행률이 바뀌는지, 기한 지난 항목이 빨갛게 뜨는지
  2. 신입사원으로 — 남의 체크리스트가 보이지 않는지, «완료»가 바로 반영되는지
  3. 멘토로 — 다른 부서 신입이 보이지 않는지, 면담 «확인» 버튼이 멘토에게만 있는지
  4. 휴대폰 크기로 — 글자·버튼이 잘리지 않는지 (Codex가 이 단계에서 스스로 한 곳을 고쳤습니다)
가상 계정 파일 다루기

테스트 계정의 이메일·비밀번호는 Codex가 test-accounts.md에 적어 줬습니다. 이 파일은 «GitHub에 절대 올리지 마»라고 처음부터 말해 둔 덕분에, 업로드 대상에서 빠져 있었습니다(아래 GitHub 화면 파일 목록에 없습니다). 화면 캡처·강의 슬라이드에도 이 파일은 띄우지 마세요.

⑤ 저장·배포

«배포하자» 한 번 → GitHub 비공개 저장소 + Cloudflare Pages

이 장면이 이 글의 핵심입니다. 저는 GitHub 웹에서 저장소를 만들지도, Cloudflare 화면에서 프로젝트를 만들지도 않았습니다. 모두 Codex가 했습니다.

배포 요청 문장 — GitHub 비공개 저장소, 계정 파일과 비밀 값 제외, 업로드 전 점검, Cloudflare Pages, Firebase 허용 도메인
배포 요청. «올리기 전에 키나 비밀번호가 섞였는지 한 번 더 점검해줘»를 꼭 넣었습니다(«바이브 04»).
Codex가 멈춘 화면 — 업로드 전 검사에서 비밀번호·키 패턴이 발견되지 않음, 다만 wrangler whoami 가 인증되지 않음을 반환해 멈췄습니다
또 한 번 멈춤. 비밀 값 검사는 통과했지만 «Cloudflare 로그인이 안 보여 멈췄습니다». 제 터미널에선 로그인돼 있었는데 Codex 실행 환경에선 안 보였던 것 — Codex가 새 인증 절차를 열었습니다.
Cloudflare 승인 화면 — Wrangler wants to access your account, 권한 4개, Authorize 버튼에 빨간 네모
«Wrangler가 계정에 접근하려 합니다» — Authorize. 이번 실습에서 제가 누른 두 번째이자 마지막 버튼입니다. (내가 시작한 요청일 때만 승인하세요.)
Codex 진행 메시지 — GitHub 비공개 저장소 생성과 업로드가 완료됐고 Cloudflare Pages 프로젝트도 준비됐습니다
«GitHub 비공개 저장소 생성과 업로드가 완료됐고, Cloudflare Pages 프로젝트도 준비됐습니다» — 사람 손 없이.
Codex 배포 완료 메시지와 오른쪽에 열린 실제 배포 주소 onboarding-30-jjc.pages.dev 로그인 화면
«배포 완료했습니다» — 웹앱 주소와 GitHub 비공개 저장소 링크. 오른쪽 창에 실제 인터넷 주소의 로그인 화면이 떴고, Codex가 그 주소에서 세 역할 로그인까지 스스로 확인했습니다.
GitHub onboarding-checklist 저장소 — Private 표시, 커밋 2개, 파일 목록에 test-accounts.md 없음
Codex가 만든 GitHub 저장소. 이름 옆 Private, 커밋 설명도 Codex가 썼습니다. 파일 목록에 가상 계정 파일이 없는 것도 확인.
Cloudflare Workers & Pages의 onboarding-30-jjc 프로젝트 — Production 배포와 도메인 onboarding-30-jjc.pages.dev
Cloudflare 쪽에도 Codex가 만든 Pages 프로젝트와 Production 배포가 생겼습니다. 무료 주소는 «○○.pages.dev».
걸린 시간·막힌 곳

약 1시간 반, 사람이 누른 버튼 2번

시각은 화면 기록을 바탕으로 한 대략값입니다. 기다리는 동안 저는 다른 일을 했습니다.

17:02
프로젝트 만들기, 기획 질문 5개 → 답변 → 기획 정리
17:15
PRD.md 278줄 완성
17:20
개발 요청 → Firebase 재로그인(만료돼 있었음) → 프로젝트 생성
17:35
Codex 멈춤: «이메일 로그인 켜 주세요» → 콘솔에서 버튼 1번
17:57
첫 버전 완성(검사 54개 통과) → 사람이 세 역할로 테스트
18:30
배포 요청 → Codex 멈춤: «Cloudflare 승인해 주세요» → Authorize 버튼 1번
18:38
GitHub 비공개 저장소 + Cloudflare Pages 배포 완료, 실주소 로그인 확인
막힌 곳왜어떻게 풀었나
Firebase 로그인 만료오래 안 쓴 명령 도구는 로그인이 풀려 있음Codex가 알려 준 대로 재로그인
이메일 로그인 켜기무료 요금제에선 명령 도구로 못 켜는 설정Codex가 멈추고 안내 → 콘솔에서 직접
Cloudflare 로그인이 안 보임Codex 실행 환경이 내 터미널과 설정을 다르게 읽음Codex가 새 승인 절차 → Authorize
세 번 모두 Codex가 «멈추고 알려 줬다»는 것이 중요합니다

처음 요청에 «내가 직접 눌러야 하는 게 있으면 멈추고 알려줘»를 넣어 둔 덕분입니다. 이 한 줄이 없으면 AI가 우회로를 찾다 엉뚱한 설정을 바꾸거나, 결제가 필요한 기능을 켜려 할 수 있습니다(실제로 Codex는 «결제 연결이 필요한 자동 설정은 진행하지 않았다»고 보고했습니다).

Codex에게 말하기

제가 넣은 문장 그대로 — 주제만 바꿔 쓰세요

CX-01 💬 Codex

① 기획 — 질문부터 받기

«온보딩» 자리에 내 주제를
나는 기업 인재개발팀의 HRD 담당자야. 신입사원이 입사 후 30일 동안 해야 할 일을 부서별로 챙기는 «신입 온보딩 체크리스트» 웹앱을 만들고 싶어. 아직 코드는 쓰지 말고, 먼저 기획을 같이 다듬자. 누가 언제 어떻게 쓰는지, 꼭 필요한 기능과 나중에 해도 되는 기능을 나눌 수 있게 나한테 질문을 5개 이내로 해줘. 나는 개발자가 아니라서 쉽게 물어봐 줘.
CX-02 💬 Codex

② PRD — 서비스까지 정해서

기획 답변을 마친 뒤
좋아, 이 기획대로 가자. 이제 개발자에게 넘겨도 될 수준의 PRD(요구사항 문서)를 이 프로젝트 폴더에 PRD.md 파일로 만들어줘.
- 목적, 사용자와 권한, 화면 목록, 데이터 구조, 첫 버전 범위와 나중 범위, 완료 기준을 넣어줘
- 사용할 서비스: 코드 저장은 GitHub 비공개 저장소, 데이터와 로그인은 Firebase, 배포는 Cloudflare Pages
- 실제 개인정보는 넣지 말고 예시 데이터는 가상의 닉네임으로
- 초보자도 읽을 수 있게 쉬운 말로 쓰고, 다 쓰면 핵심만 5줄로 요약해줘
아직 앱 코드는 만들지 마.
CX-03 💬 Codex

③ 개발 — «멈추고 알려줘»를 꼭

PRD를 읽고 열린 결정을 정한 뒤
PRD대로 첫 버전을 만들어줘.
- Firebase 프로젝트는 새로 만들고, 접근 규칙까지 PRD 권한대로 설정해줘
- 체험용 가상 계정만 만들고, 계정 목록은 test-accounts.md 에 적되 GitHub에는 절대 올라가지 않게 해줘
- 화면은 한국어, 휴대폰에서도 보기 좋게
- 내가 직접 눌러야 하는 설정이 있으면 멈추고 어디를 누르면 되는지 알려줘
- 다 만들면 내 컴퓨터에서 먼저 열어 볼 수 있게 주소를 알려줘. 배포는 아직 하지 마.
CX-04 💬 Codex

⑤ 배포 — GitHub와 Cloudflare를 한 번에

직접 테스트해 보고 이상이 없으면
이제 배포하자.
1) GitHub에 비공개(Private) 저장소를 만들어서 올려줘. 계정 파일과 비밀 값은 절대 올리지 말고, 올리기 전에 키나 비밀번호가 섞였는지 한 번 더 점검해줘.
2) Cloudflare Pages로 배포해줘.
3) 배포된 주소에서 로그인 화면이 열리는지 확인하고, Firebase 로그인 허용 도메인에 그 주소를 추가해야 하면 해줘. 내가 직접 눌러야 하는 게 있으면 멈추고 알려줘.
끝나면 배포 주소와 GitHub 저장소 주소를 알려줘.
요령 승인 화면(Authorize)이 뜨면 «내가 방금 Codex에게 시킨 일인지» 확인하고 누르세요. 모르는 요청에서 뜬 승인 화면은 누르지 않습니다.
다음 편

바이브 코딩 실전

편내용
실전 01 · Claude Code(웹)설치 없이 브라우저에서 — «교육 현장 피드백 보드»를 GitHub + Supabase + Vercel로
실전 02 · Codex (지금 글)내 컴퓨터에서 — «신입 온보딩 체크리스트»를 GitHub + Firebase + Cloudflare로
실전 03 · 강의장 실전 키트실시간 퀴즈·순위판·랜덤 조 편성 3종

함께 보면 좋은 기초 편

자료왜 이걸
바이브 01 · 지도작업실·창고·가게·장부 — 이 글의 서비스들이 어디에 있는지
바이브 03 · 장부«신입은 본인만» 같은 접근 규칙(RLS)의 원리
바이브 04 · 열쇠배포 전 비밀 값 점검을 왜 시켰는지
이 글을 만든 방법

2026년 10월 8일 오후 Codex 데스크톱 앱(GPT-6 Astra)에서 처음부터 끝까지 한 번에 진행하며 찍었습니다. 앱 데이터는 모두 가상 닉네임입니다. 화면의 개인 대화 목록·컴퓨터 경로·이메일은 잘라내거나 가렸고, 가상 계정 비밀번호는 싣지 않았습니다. 체험용 배포 주소는 실습 확인 뒤 정리될 수 있습니다.

JJ Creative 교육연구소 · HRD×AI 라운지 실전 02 · 확인일 2026-10-08
전재현 소장 · jjh@jjcreative.co.kr · 010-8448-2354 · jjcreative.co.kr
참고: OpenAI Codex · Firebase 문서 · Cloudflare Pages
이 자료의 활용을 원하시면 문의해 주세요.