법률 문제로 상담이 필요하시거나, 강의를 의뢰하시려면 신청하세요.
법률 상담 — 조성원 변호사가 사건 경위를 직접 검토한 뒤 가능한 대응을 안내합니다. 긴급한 경우 063-451-6300 으로 전화하셔서 상담일정을 더 빠르게 확정하실 수 있습니다.
강의 의뢰 — 기관·학교·단체·기업 등 대상과 주제에 맞추어 강의를 진행합니다. 일정과 내용은 강의 신청 페이지에서 알려 주시면 조율해 드립니다.
AI 자율마스터 과정 3기 · 2차 강의 2부 (19:00 ~ 23:00)
주강사 조성원 · 주최·주관 변호사 조성원 법률사무소 부설 조변의 지식연구소
"1차 때 만든 내 랜딩페이지가, 오늘 밤 내 도메인 주소로 인터넷에 떠 있고, 방문자가 남긴 문의가 데이터베이스에 쌓인다." (3교시에서 구글 로그인 🅱️을 고르는 분은 "문의" 대신 "회원"이 쌓입니다.)
| 교시 | 시간(안) | 내용 | 형태 |
|---|---|---|---|
| 1교시 | 19:00~19:50 | 개발~배포 전 과정 이론 (git·서버·DB·배포·서비스 매칭) | 이론 + 시연 |
| 2교시 | 20:00~20:50 | 실습 1 — 클로드 코드 CLI에 GitHub·Vercel·Supabase·가비아 연결 | 안내 10분 + 실습 40분 |
| 3교시 | 21:00~21:50 | 실습 2 — 백엔드 붙이고 배포하고 도메인 연결 | 안내 10분 + 실습 40분 |
| 4교시 | 22:00~22:50 | 전체 보강 — AI·챗봇·에이전트 구별, 클로드 3형제, 컨텍스트와 맥락 관리 | 이론 + 짧은 시연 |
| Q&A·공지 | 22:50~23:00 | 질의응답 + 과제·설문 안내 | 자유 |
| (보너스, 시간 여유 시) | — | 채널스 텔레그램 봇으로 개발 지시 체험 | 시연 |
진행 원칙
복사 코드 블록은 그대로 복사해서 클로드 코드 CLI에 붙여넣으면 됩니다. [대괄호] 부분만 본인 것으로 바꾸세요.2·3교시 실습에서 나올 모든 용어와 등장인물을 미리 소개하는 시간. "완벽한 이해"가 아니라 "아, 그 단어 아까 들었다" 상태를 만드는 것이 목표. 더 깊은 내용은 부록 B(배경지식 한눈 정리)와 과제로 넘긴다.
"개발한다"는 것은 결국 어딘가에서 코드를 만들고 고치는 일. 그 "어딘가"의 선택지:
| 도구 | 성격 | 우리 강의에서 |
|---|---|---|
| VS Code (Visual Studio Code) | 코드를 눈으로 보고 직접 고치는 편집기 | 결과 확인용 (1차에서 배움) |
| 클로드 코드 CLI (Command Line Interface) | 말로 시키면 코드를 만들어주는 에이전트 | ⭐ 메인 도구 |
| 클로드 앱의 코드 기능 | 폰·웹에서 CLI 세션에 이어 붙는 원격 통로 | 소개만 (4교시 라항) |
| 클로드 채널스 봇 (Channels) | 텔레그램으로 CLI에 지시 | 보너스 시연 |
| 타 통합 에이전트 (오픈클로·헤르메스 등) | 여러 AI·메신저를 묶는 상위 시스템 | 이름만 소개 |
핵심: 도구는 여럿이지만 일하는 놈은 하나(클로드 코드 CLI). 나머지는 그에게 닿는 통로다.
최종.zip, 진짜최종.zip, 진짜진짜최종_수정2.zip… 폴더 복사로 버전을 관리했다. 어디서 뭐가 바뀌었는지 아무도 모르고, 잘못 덮어쓰면 복구 불가. git은 이 문제를 "모든 변경의 역사를 자동 기록"으로 해결했다.| 용어 | 영어 원어 | 뜻 | 비유 |
|---|---|---|---|
| 레포지토리(레포) | repository | 프로젝트 하나의 저장소 | 서류 캐비닛 한 칸 |
| 커밋 | commit | 현재 상태를 기록으로 남기기 | 게임 세이브 |
| 푸시 | push | 내 기록(커밋)을 GitHub에 올리기 | 세이브 파일을 클라우드에 업로드 |
| 브랜치 | branch | 본편을 건드리지 않는 실험용 갈래 | 평행우주 |
| 머지 | merge | 실험이 성공하면 본편에 합치기 | 평행우주 합체 |
SELECT * FROM inquiries = "inquiries(문의) 표에서 전부 꺼내와". 오늘 여러분이 직접 쓸 일은 없다 — 클로드가 대신 쓴다. 다만 클로드가 화면에 이런 문장을 흘릴 때 "아, 장부에서 데이터 꺼내는 말이구나" 하고 알아보면 충분.| 구분 | 예시 | 성격 |
|---|---|---|
| 로컬 스토리지(local, 내 컴퓨터 안) | 내 하드디스크의 폴더, 바탕화면, 다운로드 폴더 | 나만 접근 가능. 컴퓨터를 끄면 남들은 아예 접근 불가 |
| 클라우드 스토리지(cloud, 다른 곳의 창고) | 구글 드라이브·아이클라우드 (일상용) / Supabase Storage·Amazon S3 (서비스용) | 인터넷만 되면 어디서든 24시간 접근 가능 |
localhost:3000 같은 주소에서 localhost(로컬호스트)는 "내 컴퓨터 자신"을 가리키는 약속이다. 그래서 그 주소를 친구에게 보내도 친구 화면에는 안 뜬다 — 친구의 "localhost"는 친구 자신의 컴퓨터이기 때문. 남에게 보여주려면 반드시 배포가 필요하다.코드 수정 → 커밋(세이브) → 푸시(GitHub에 업로드) → 자동 배포(Vercel이 감지해서 알아서 올림)
| 서비스 | 역할 한 줄 | 비유 | 오늘 하는 일 |
|---|---|---|---|
| git | 내 컴퓨터의 코드 기록 장치 | 게임 세이브 | 클로드가 알아서 사용 |
| GitHub | 코드 클라우드 저장소 | 세이브 파일 클라우드 | 내 랜딩페이지 코드 보관 |
| Vercel(버셀) | 코드를 받아 실제 사이트로 만들어주는 배포 플랫폼 | 자동 출판사 | ⭐ 사이트를 인터넷에 올림 |
| Supabase(수파베이스) | DB + 스토리지를 통째로 빌려주는 서비스 | 장부 + 창고 임대업 | 문의·회원 데이터 저장 |
| 가비아(Gabia) | 도메인 등록대행(주소 파는 곳) | 부동산 등기소 | 내이름.com 구매·연결 |
| Cloudflare(클라우드플레어) | DNS·보안·CDN 관리소 (오늘은 참고만) | 주소 안내소 + 경비실 | (선택) 도메인 관리 이관 |
76.76.21.21)라는 숫자 주소를 갖는다. 사람이 외우기 힘드니 내이름.com 같은 이름 = 도메인(domain)을 쓴다.내이름.com으로 찾아오는 사람은 Vercel 서버로 보내시오"라고 한 줄 적는 일이다.🟠 클라우드플레어 조금 더 알기 — 오늘 직접 쓰지는 않지만, 여러분이 이미 가입했고 앞으로 반드시 다시 만나게 될 서비스라 조금 더 소개한다 (공식 문서 기준):
오늘 2·3교시에 할 일을 한 장으로:
[2교시 — 연결] 클로드 코드 CLI ──① gh 로그인──→ GitHub 클로드 코드 CLI ──② vercel 로그인──→ Vercel 클로드 코드 CLI ──③ 토큰 전달──→ Supabase 가비아 ──④ 도메인 확인──→ (3교시에서 연결) [3교시 — 배포] 내 랜딩페이지 + 문의폼(백엔드) → GitHub에 푸시 → Vercel 자동 배포 → 가비아 도메인 연결 → 🎉 https://내이름.com 완성
강사의 실제 사무소 홈페이지가 오늘 배우는 구조(GitHub + Vercel + Supabase + 가비아) 그대로 돌아가고 있다. 화면을 하나씩 열어 보여드립니다:
https://lawalarmcho.kr 접속 → "여러분(클라이언트)이 지금 보는 이 화면이 프론트엔드. 아래로 내리면 나오는 상담 문의 폼이, 오늘 3교시에 여러분이 만들 문의 폼의 실전 버전이다."lawalarmcho-website 화면 → "이 사이트의 코드 전체가 여기 산다. 여러분이 2교시에 만드는 레포지토리와 똑같은 물건이다."inquiries 표의 어른 버전." 후기에 첨부된 사진 파일은 창고(Storage)에 들어가고 표에는 위치표만 적힌다 — 1교시 스토리지 설명 그대로.lawalarmcho.kr은 가비아에서 구입·관리. 네임서버는 가비아 것을 그대로 두고, DNS 관리툴에 레코드 몇 줄만 추가한 형태: A 레코드(Address record)로 lawalarmcho.kr → Vercel 서버 IP, CNAME(Canonical Name)으로 www.lawalarmcho.kr·lectures.lawalarmcho.kr(강의 서브도메인) → Vercel. "3교시 Step 4에서 나오는 두 가지 연결 방식 중 레코드 방식의 실물이 바로 이것."한 줄 정리: "오늘 여러분이 만드는 뼈대(GitHub + Vercel + Supabase + 가비아)에 살을 붙인 것이 이 실제 사무소 홈페이지다. 뼈대는 완전히 같다."
① 여러분이 브라우저에서 하는 일 (로그인·토큰 발급 — 딱 최소한만) ② 클로드 코드 CLI에 붙여넣는 말 (복사 블록 그대로) ③ 완료 확인 (클로드에게 확인시키기)
클로드가 도구 설치·설정·연결을 전부 대신합니다. 중간에 "브라우저에서 ○○을 눌러주세요"라고 하면 그때만 직접 누르면 됩니다.
오늘 여러 개의 토큰(token)·키(key)를 발급받습니다. 토큰 = 내 계정에 들어갈 수 있는 비밀 열쇠입니다.
.env — environment 변수 파일, "환경설정 비밀 수첩")에 보관하고 GitHub에 올라가지 않게 처리해줍니다1차 과제로 만든 내 랜딩페이지 폴더에서 클로드 코드 CLI를 실행한다. (VS Code에서 폴더 열기 → 터미널 열기 → claude — 1차에서 배운 그대로)
실행했으면 첫 인사로 이것부터:
여기는 내가 만든 랜딩페이지 프로젝트 폴더야. 폴더 안의 파일들을 먼저 읽고, 이 랜딩페이지가 어떤 구조인지 나에게 아주 쉽게 3줄로 설명해줘. 나는 개발 지식이 거의 없어. 오늘 이 페이지에 백엔드 기능(문의 저장 또는 구글 로그인 중 하나)을 붙이고 인터넷에 배포할 예정이야.
① 여러분이 준비할 것: GitHub 아이디·비밀번호 (이미 가입 완료 상태). 브라우저에서 github.com 에 로그인만 미리 해둔다.
② 클로드에게 — git 저장소 만들기:
이 폴더를 git 저장소로 만들고 첫 커밋까지 해줘. git이 설치 안 되어 있으면 설치부터 진행해줘. 각 단계마다 지금 무엇을 왜 하는지 한 줄씩 아주 쉽게 설명해줘.
②-보너스. 지난 시간에 이미 git에 올려본 분은 이걸로 (새로 만들지 말고 상태 점검부터):
이 폴더는 예전에 git 저장소로 만들어서 쓰던 곳이야. 처음부터 다시 만들지 말고, 지금 상태부터 점검해줘: 1. 이 폴더가 git 저장소가 맞는지, 마지막 커밋이 언제였는지 확인해줘. 2. 그 뒤에 수정했는데 아직 커밋 안 된 파일이 있으면, 무엇이 바뀌었는지 쉽게 설명해주고 커밋해줘. 3. GitHub 레포지토리와 이미 연결되어 있는지도 확인해서, 연결되어 있으면 알려주고, 연결이 안 되어 있거나 로그인이 풀려 있으면 그 부분만 이어서 진행해줘. 각 단계마다 지금 무엇을 왜 하는지 한 줄씩 아주 쉽게 설명해줘.
③ 클로드에게 — GitHub 로그인 (gh CLI):
GitHub CLI(gh)를 설치하고 로그인(gh auth login)을 진행해줘. 로그인 방식은 브라우저 인증으로 해줘. 내가 직접 해야 하는 일(브라우저에서 코드 입력, 승인 버튼 등)이 나오면 그때마다 멈추고, 무엇을 어떻게 눌러야 하는지 하나씩 알려줘.
③-보너스. 지난 시간에 이미 gh 설치·로그인을 해본 분은 이걸로 (다시 설치하지 말고 상태 확인부터):
GitHub CLI(gh)는 예전에 설치해서 로그인까지 해뒀던 것 같아. 다시 설치하지 말고 먼저 확인해줘: 1. gh가 설치되어 있는지, 어떤 계정으로 로그인되어 있는지 확인해서 알려줘. 2. 로그인이 살아 있으면 그대로 다음 단계로 넘어가면 된다고 알려줘. 3. 로그인이 풀려 있거나 문제가 있으면, 그 부분만 브라우저 인증 방식으로 다시 진행해줘. 내가 직접 해야 하는 일이 나오면 그때마다 멈추고 하나씩 알려줘.
터미널에 8자리 일회용 코드(예: XXXX-XXXX)가 뜨고 브라우저가 열립니다. GitHub 화면에 그 코드를 입력하고 Authorize(승인) 버튼을 누르면 끝. 이것이 오늘 처음 해보는 "기기 인증" — 비밀번호를 터미널에 치지 않고도 안전하게 로그인하는 표준 방식입니다.
④ 완료 확인:
GitHub 로그인이 잘 되었는지 확인하고, 이 랜딩페이지를 올릴 새 레포지토리를 GitHub 내 계정에 비공개(private)로 만들어서, 지금까지의 코드를 푸시해줘. 끝나면 내가 브라우저에서 확인할 수 있는 레포지토리 주소를 알려줘.
④-보너스. 지난 시간에 이미 레포지토리를 만들어 올려본 분은 이걸로 (새 레포지토리를 또 만들지 말 것):
이 프로젝트는 예전에 GitHub 레포지토리에 올려둔 적이 있어. 새 레포지토리를 만들지 말고 이렇게 진행해줘: 1. 이 폴더가 어느 레포지토리와 연결되어 있는지 확인해서 알려줘. 2. 지금까지의 변경사항을 그 레포지토리에 푸시해줘. 3. 끝나면 내가 브라우저에서 확인할 수 있는 레포지토리 주소를 알려줘.
→ 브라우저로 내 레포 주소에 접속해 내 코드가 GitHub에 올라간 것을 눈으로 확인 (첫 번째 작은 성공 🎉)
① 여러분이 준비할 것: 없음. (Vercel 가입 완료 상태 — GitHub 연동 가입이므로 GitHub 로그인만 되어 있으면 됨)
② 클로드에게:
Vercel CLI를 설치하고 로그인(vercel login)을 진행해줘. 로그인 과정에서 브라우저 승인 등 내가 직접 해야 할 일이 생기면 그때마다 멈추고 알려줘. 로그인이 끝나면 정상 연결되었는지 확인해서 알려줘.
②-보너스. 과제 중에 이미 Vercel CLI를 설치·로그인해본 분은 이걸로 (다시 설치하지 말고 상태 확인부터):
Vercel CLI는 예전에 설치해서 로그인까지 해뒀던 것 같아. 다시 설치하지 말고 먼저 확인해줘: 1. Vercel CLI가 설치되어 있는지, 어떤 계정으로 로그인되어 있는지 확인해서 알려줘. 2. 로그인이 살아 있으면 그대로 다음 단계로 넘어가면 된다고 알려줘. 3. 로그인이 풀려 있거나 문제가 있으면, 그 부분만 다시 진행해줘. 브라우저 승인 등 내가 직접 해야 할 일이 생기면 그때마다 멈추고 알려줘.
브라우저가 열리고 Vercel 로그인/승인 화면이 뜹니다. GitHub로 로그인 → 승인 클릭이면 끝.
① 여러분이 브라우저에서 할 일 (강사가 화면으로 같이 진행):
New project 클릭 → 프로젝트 이름(예: my-landing) 입력 → Database Password 설정 (⚠️ 자동 생성된 것을 복사해 안전한 곳에 보관 — 옵시디언 비공개 노트 등) → Region은 Northeast Asia (Seoul) 선택 → Create new projectGenerate new token → 이름(예: claude-cli) 입력 → 생성된 토큰을 복사 (⚠️ 이 화면을 벗어나면 다시 볼 수 없음 — 지금 바로 다음 단계로)② 클로드에게 — 토큰 건네주기 (이 토큰은 오늘 3교시까지 모든 실습을 마친 뒤 Supabase 화면에서 Revoke — 폐기 — 해도 됩니다. 필요할 때 새로 발급하면 그만):
Supabase CLI를 설치하고 로그인해줘. 내 Access Token은 이거야: [여기에 방금 복사한 토큰 붙여넣기] 이 토큰이 코드 파일이나 GitHub에 절대 올라가지 않도록 안전하게 보관해줘. 로그인이 되면 내 Supabase 프로젝트 목록을 보여줘.
③ 클로드에게 — 프로젝트 열쇠 2개 가져오기:
내 Supabase 프로젝트(my-landing)의 Project URL과 공개용 키(anon key — 새 프로젝트에서는 publishable key라는 이름일 수 있어)를 확인해서, 이 프로젝트 폴더의 .env 파일에 저장해줘. .env가 git에 올라가지 않도록 .gitignore 처리도 확인해줘. 그리고 URL과 anon key가 각각 무슨 역할인지 한 줄씩 쉽게 설명해줘.
| 이름 | 영어 원어 | 성격 | 취급 |
|---|---|---|---|
| Project URL | Uniform Resource Locator (인터넷 주소) | 내 DB의 인터넷 주소 | 공개되어도 됨 |
| anon key (새 이름: publishable) | anonymous key (익명 키) | 방문자용 출입증 (제한된 권한) | 웹페이지에 넣어도 됨 |
| service_role key (새 이름: secret) | service role key (서비스 관리자 키) | 관리자 마스터키 | ❌ 절대 웹페이지·GitHub에 넣으면 안 됨 (오늘은 사용 안 함) |
(대시보드에서 보는 위치: 프로젝트 → Settings → API Keys / URL은 Settings → Data API. 여기서 API = Application Programming Interface, 프로그램끼리 대화하는 창구)
참고: 새로 만든 프로젝트에서는 위 두 키가 publishable key / secret key라는 새 이름으로 보일 수 있습니다 — 역할은 각각 anon key / service_role key와 같습니다.
① 여러분이 브라우저에서 할 일:
.com 기준 연 2만 원 안팎, 가급적 영문)프로젝트명.vercel.app)로 오늘 실습 전부 가능. 도메인 연결만 나중에 하면 된다.② 클로드에게 (수업 흐름 유지용):
나는 가비아에서 [내도메인.com] 도메인을 가지고 있어. 다음 교시에 Vercel로 배포한 사이트에 이 도메인을 연결할 예정이야. 지금은 연결하지 말고, 이따가 무엇을 하게 될지 전체 순서만 3줄로 미리 설명해줘.
vercel login 완료.env에 보관*.vercel.app 주소 / 도메인 → 내 주소.Step마다 "클로드에게 말하기 → 기다리며 화면 구경 → 브라우저로 결과 확인"의 반복. 수강생마다 속도 차이가 크게 나는 교시이므로, 빠른 분은 Step 5(운영 루틴)까지, 늦은 분은 Step 3(무료 주소 배포)까지만 가도 오늘은 성공입니다.
| 선택 | 기능 | 이런 분께 | 난이도 |
|---|---|---|---|
| 🅰️ 문의 폼 + DB 저장 | 방문자가 남긴 문의가 내 DB(장부)에 쌓임 | 사업·사무실 홍보용 페이지 (⭐ 기본 추천 — 오늘 완주 쉬움) | 브라우저 추가 작업 없음 |
| 🅱️ 구글 가입·로그인 | 방문자가 구글 계정으로 내 사이트에 회원가입·로그인 | 회원제 서비스·커뮤니티를 꿈꾸는 분 | 구글 쪽 열쇠 발급이 추가로 필요 (시간 더 걸림 — 못 끝내면 과제로) |
두 기능 모두 Supabase가 뒤에서 일하는 백엔드라는 점은 같다: 🅰️는 DB(장부)를, 🅱️는 Auth(Authentication, 인증 — 회원 명부)를 쓴다.
내 랜딩페이지에 "문의하기" 기능을 추가해줘. 요구사항: 1. 페이지 하단에 이름, 연락처, 문의 내용을 입력하는 폼을 만들어줘. 디자인은 지금 페이지 분위기에 맞춰줘. 2. 방문자가 제출하면 그 내용이 내 Supabase 데이터베이스에 저장되게 해줘. 필요한 테이블(inquiries)은 네가 직접 만들어줘. 3. 제출이 완료되면 "문의가 접수되었습니다"라는 안내가 뜨게 해줘. 4. 저장에는 .env에 보관한 Project URL과 anon key만 사용하고, 누구나 글을 쓸 수는 있지만 다른 사람의 문의 내용은 읽을 수 없도록 안전하게 설정해줘. 다 만들면 내 컴퓨터에서 미리보기로 확인하는 방법을 알려줘.
→ 클로드가 테이블 생성·폼 코드 작성·연결까지 진행. 로컬 미리보기(localhost — 내 컴퓨터 자신)에서 직접 문의를 하나 제출해본다.
🅰️ 확인 — DB에 진짜 쌓였나 (2가지 방법 모두 시연):
방금 내가 테스트로 제출한 문의가 Supabase 데이터베이스에 실제로 저장되었는지 확인해서, 저장된 내용을 표로 보여줘.
+ 브라우저: Supabase 대시보드 → 내 프로젝트 → Table Editor → inquiries 테이블 → 방금 데이터가 보인다 → "데이터베이스에 쌓인다"를 눈으로 확인하는 순간 🎉
② 클로드에게 먼저 (구글 쪽에서 받아올 열쇠가 무엇인지부터 안내받는다):
내 랜딩페이지에 방문자가 "구글 계정으로 로그인" 할 수 있는 기능을 추가하고 싶어. Supabase Auth의 구글 로그인을 사용해줘. 요구사항: 1. 페이지에 "구글로 로그인" 버튼을 만들고, 로그인하면 "○○님, 환영합니다"와 로그아웃 버튼이 보이게 해줘. 2. 이 기능에는 구글 클라우드 콘솔에서 발급받는 열쇠(클라이언트 ID와 클라이언트 보안 비밀번호)가 필요한 걸로 알아. 내가 구글과 Supabase의 어느 화면에서 무엇을 발급받고 어디에 붙여넣어야 하는지, 지금 단계별로 하나씩 안내해줘. 특히 Supabase가 알려주는 리디렉션 주소(콜백 URL)를 구글 쪽 어디에 넣는지 정확히 알려줘. 3. 코드 쪽 작업은 네가 전부 해줘. 나는 브라우저에서 발급·붙여넣기만 할게. 다 만들면 내 컴퓨터에서 미리보기로 확인하는 방법을 알려줘.
① 여러분이 브라우저에서 할 일 (클로드 안내에 따라 — 막히면 보조강사님을 바로 부르세요):
https://…supabase.co/auth/v1/callback 형태)를 붙여넣기 — 이것이 핵심. ("승인된 자바스크립트 원본"에는 내 사이트 주소를 넣어두면 좋지만, 비워도 로그인은 동작한다) → 만들기 → 클라이언트 ID / 클라이언트 보안 비밀번호 복사🅱️ 확인 — 회원 명부에 진짜 올라갔나: 로컬 미리보기에서 내 구글 계정으로 직접 로그인해본다. 그리고:
방금 내가 구글 계정으로 로그인했어. 내 Supabase의 회원 명부(Auth 사용자 목록)에 내 계정이 실제로 등록되었는지 확인해서 보여줘.
+ 브라우저: Supabase 대시보드 → Authentication → Users → 방금 로그인한 내 구글 계정이 보인다 → "내 사이트에 회원이 생겼다"를 눈으로 확인하는 순간 🎉
구글 열쇠 발급은 화면이 낯설어 처음엔 10분을 넘기기 쉽습니다. 로그인 버튼까지만 만들어졌다면 일단 Step 2로 넘어가 배포부터 완주하고, 열쇠 발급은 강의 후 과제로 마무리해도 됩니다 (클로드에게 "아까 하던 구글 로그인 설정 이어서 하자"라고 하면 됩니다).
지금까지 작업한 내용을 알기 쉬운 설명과 함께 커밋하고 GitHub에 푸시해줘. 단, .env 같은 비밀 정보가 절대 함께 올라가지 않는지 푸시 전에 다시 한 번 점검해줘.
이 프로젝트를 Vercel에 배포해줘. 진행 순서: 1. 이 폴더를 내 Vercel 계정의 새 프로젝트로 연결해줘. 2. .env에 있는 Supabase 관련 환경변수들을 Vercel 프로젝트 환경변수로도 등록해줘. 3. 이 Vercel 프로젝트를 내 GitHub 레포지토리와 연결해서(vercel git connect 또는 대시보드 연결), 앞으로 GitHub에 푸시하면 자동으로 배포되게 설정해줘. 4. 프로덕션 배포까지 진행하고, 완성된 사이트 주소(https://...vercel.app)를 알려줘. 중간에 선택지가 나오면 초보자에게 가장 무난한 기본값으로 진행하고, 내가 직접 해야 할 일이 생기면 멈추고 알려줘.
→ 배포 완료되면 각자 자기 *.vercel.app 주소를 휴대폰으로 접속 → 옆 사람과 주소 교환해서:
🅱️ 선택자 추가 확인 — 배포 주소에서 로그인이 이상하면 (로그인 후 localhost로 돌아오는 등):
배포된 실제 주소에서 구글 로그인을 하면 이상하게 동작해. Supabase의 사이트 URL과 리디렉션 허용 목록 설정을 배포 주소 기준으로 점검해서, 내가 대시보드에서 바꿔야 할 값이 있으면 정확히 알려줘.
+ 자동 배포(CI/CD) 체험 (시간 되면):
랜딩페이지 제목 문구를 [바꾸고 싶은 문구]로 수정하고, 커밋·푸시해줘. 푸시하면 Vercel이 자동으로 다시 배포하는지 배포 상태를 확인해서 알려줘.
→ 1~2분 뒤 사이트 새로고침 → 바뀌어 있음 → "이게 CI/CD(Continuous Integration/Continuous Deployment)입니다. 수정→푸시만 하면 배포는 자동."
② 클로드에게 먼저:
Vercel에 배포된 내 사이트에 내 도메인 [내도메인.com]을 연결하고 싶어. Vercel 쪽에 도메인을 추가하고, 가비아(도메인 등록대행 업체) 쪽에서 내가 직접 설정해야 하는 값을 화면에 정확히 표로 정리해서 보여줘. 나는 기존 설정을 건드리지 않도록 네임서버 변경이 아니라 DNS 레코드(A/CNAME) 추가 방식으로 진행하고 싶어. www가 붙은 주소도 함께 연결되게 해줘.
→ 클로드가 Vercel에 도메인을 추가하면, 가비아에서 설정해야 할 값을 알려준다. 방식은 두 가지 — 오늘은 레코드 방식이 기본이다:
ns1.vercel-dns.com / ns2.vercel-dns.com — 더 간단해 보이지만, 이 도메인으로 이메일 등 다른 서비스를 이미 쓰고 있다면 그 연결이 끊길 수 있다. 오늘 새로 산 도메인일 때만 선택.① 여러분이 가비아에서 할 일 (강사가 화면으로 같이 진행):
③ 클로드에게 — 연결 확인:
방금 가비아에서 네임서버(또는 DNS 레코드) 설정을 마쳤어. 내 도메인 [내도메인.com]이 Vercel 사이트로 제대로 연결되는지 확인해줘. 아직이라면 DNS 전파라는 게 무엇이고 보통 얼마나 기다려야 하는지 쉽게 설명해줘. 연결이 확인되면 https 자물쇠(보안 인증서)까지 정상인지도 확인해줘.
전화번호부(DNS)는 전 세계에 복사본이 퍼져 있어서, 새 주소가 모든 복사본에 반영되기까지 몇 분~몇 시간이 걸립니다(전파, propagation). 각 복사본에는 "이 정보를 얼마 동안 믿고 쓰라"는 유효기간(TTL, Time To Live)이 있어서 그 시간만큼 옛 정보가 남아 있을 수 있습니다. 강의 중 안 뜨면 집에 가서 다시 열어보면 떠 있습니다. 인증서(HTTPS 자물쇠)는 연결 확인 후 Vercel이 자동 발급.
앞으로 사이트를 고치고 싶을 때의 전체 루틴은 단 한 문장:
랜딩페이지에서 [고치고 싶은 내용]을 수정하고, 커밋·푸시해서 실제 사이트에 반영까지 해줘. 반영이 끝나면 알려줘.
+ 쌓인 데이터를 보고 싶을 때 (🅰️ 문의 폼 선택자):
내 사이트에 지금까지 접수된 문의를 모두 조회해서 최신순 표로 보여주고, 눈에 띄는 특징이 있으면 한 줄로 요약해줘.
(🅱️ 구글 로그인 선택자):
내 사이트에 지금까지 가입한 회원(구글 로그인 사용자) 목록을 최신 가입순 표로 보여주고, 총 몇 명인지 알려줘.
오늘 만든 "입력 페이지(프론트) + 저장되는 장부(DB) + 24시간 켜져 있는 곳(배포)" — 이 삼각형이 여러분이 앞으로 만들 모든 자동화 시스템의 골격입니다. 예약 접수, 직원 업무일지, 동호회 회비 관리, 고객 상담 접수… 전부 이 골격에 살만 바꾼 것입니다. 그리고 그 살은, 오늘 보셨듯 클로드에게 말만 하면 됩니다.
*.vercel.app 주소로 인터넷에 떠 있다 (휴대폰으로 확인)오늘 하루 종일 클로드 코드 CLI로 실습을 달렸으니, 마지막으로 "내가 오늘 쓴 이게 도대체 뭐였나"를 개념으로 정리하는 시간. 이 정리가 있어야 집에 가서도 혼자 응용할 수 있다. 개념 설명 + 즉석 시연으로 가볍게, 하루의 마무리로 진행.
일상에서는 셋을 뭉뚱그려 "AI"라고 부르지만, 오늘 여러분이 하루 종일 부린 것이 정확히 무엇이었는지 여기서 갈라보자:
| 구분 | 정의 | 비유 | 예시 |
|---|---|---|---|
| 단순 AI(Artificial Intelligence, 인공지능) | 1회 질의응답. 연속성 없음 — 방금 한 말을 기억 못 함 | 자판기 — 동전 넣으면 음료 하나. 아까 뭘 뽑았는지 모름 | 번역기, 사진 속 글자 인식 |
| AI 챗봇(chatbot) | 대화의 연속성 있음 — 한 대화 안에서는 앞의 말을 기억 | 전화 상담원 — 통화 중에는 맥락을 이어감. 끊으면 리셋 | 클로드 웹 채팅, ChatGPT 채팅 |
| AI 에이전트(agent, 대리인) | 목표를 주면 도구를 사용해 스스로 여러 단계를 실행 — 파일을 읽고, 명령을 실행하고, 결과를 보고, 실패하면 다시 시도 | 비서 — "출장 준비해줘" 한 마디에 항공권 검색→예약→일정표 작성까지 | 클로드 코드 CLI |
AI는 원래 한 번 대답하면 다 잊어버리는 존재다(단순 AI). 그런데 챗봇은 어떻게 연속 대화가 될까? 비밀은 의외로 단순하다:
핵심 문장: 챗봇은 "말"만 하고, 에이전트는 "일"을 한다. 그 차이는 손발(도구)이 있느냐다. 오늘 여러분이 배포까지 해낸 것도, 클로드가 챗봇이 아니라 에이전트였기 때문.
위 표는 이해를 위해 셋으로 딱 잘라 나눴지만, 현실은 칼로 자르듯 나뉘지 않는다. 실제로는 "그 AI에게 도구(손발)가 몇 개나 붙어 있느냐"의 스펙트럼이기 때문이다.
| 채팅 (Chat) | 워크 (Cowork, 코워크) | 코드 (Claude Code) | |
|---|---|---|---|
| 주 용도 | 질문·상담·글쓰기 | 문서·표·보고서·파일 정리 등 사무 작업 | 개발·자동화·컴퓨터 작업 전반 |
| 작업 공간 | 대화창 | 데스크탑 앱 안의 격리된 작업 공간 | 내 컴퓨터의 폴더 |
| 결과물 | 대화 속 답변 | 문서·표·산출물 파일 | 실제 파일·실행되는 시스템 |
| 오늘 2부에서 | — | — | ⭐ 이걸로 전부 진행했음 |
두 쌍의 관계만 정리하면 헷갈리지 않는다:
① 워크 ↔ 코드 = 형제 사이 (공식 문서 기준)
② 앱·웹의 코드 ↔ 클로드 코드 CLI = 같은 물건, 다른 문 (공식 문서 기준)
전제 그림: 본체(내 컴퓨터의 클로드 코드)는 집에 있고, 나는 밖에 있다. 밖에서 본체를 부리는 공식 통로가 여러 개 있는데, 구별 기준은 딱 세 가지 — "하던 일을 이어가느냐 / 새 일을 시키느냐 / 내 컴퓨터가 켜져 있느냐."
공식 문서의 비교표를 쉽게 옮기면 (Claude Code 공식 문서 기준):
| 통로 | 시키는 방법 | 클로드가 실제로 일하는 곳 | 준비물 | 이럴 때 |
|---|---|---|---|---|
| 리모트 컨트롤(Remote Control) | 폰 앱·claude.ai/code에서 지금 돌아가고 있는 세션에 접속해 조종 | 내 컴퓨터 (CLI·VS Code) | 터미널에서 /remote-control 한 줄 | 하던 작업을 밖에서 이어가기 |
| 디스패치(Dispatch) | 폰의 클로드 앱에서 새 작업을 메시지로 던짐 → 내 컴퓨터의 데스크탑 앱에 작업 세션이 자동으로 생김 | 내 컴퓨터 (데스크탑 앱) | 폰 앱 ↔ 데스크탑 앱 짝짓기(페어링) 1회 + 데스크탑 앱 켜두기 | 밖에서 새 일 맡기기 (준비 최소) |
| 채널스(Channels) | 텔레그램·디스코드 메시지로 지시 (오픈클로·헤르메스 같은 통합 에이전트도 같은 자리) | 내 컴퓨터 (CLI) | 채널 플러그인 설치 — 1차에서 설정한 것 | 평소 쓰는 메신저로 심부름 시키기 |
| (참고) 클라우드 세션 | claude.ai/code에서 작업 시작 | 앤트로픽의 클라우드 서버 | 없음 | 내 컴퓨터가 꺼져 있어도 일해야 할 때 |
⭐ 공통점 겸 주의점: 위 셋(리모트·디스패치·채널스)은 전부 일하는 곳이 내 컴퓨터다 — 그래서 내 컴퓨터가 켜져 있어야 작동한다. 컴퓨터를 끄고도 시키고 싶으면 클라우드 세션(넷째 줄)뿐이다. 그리고 넷 다 결국 다항에서 본 대로 "본체는 하나, 리모컨이 여러 개"인 구조다.
🔍 심화 비교 — 리모트 컨트롤 vs 디스패치, 가장 헷갈리는 두 형제 (공식 문서 기준)
둘 다 "폰으로 내 컴퓨터의 클로드를 부린다"는 점이 같아서 제일 헷갈린다. 결정적 차이 하나만 기억하면 된다 — "세션(작업 대화)을 누가, 언제 만드느냐."
| 🕹️ 리모트 컨트롤 | 📨 디스패치 | |
|---|---|---|
| 본체 프로그램 | 터미널의 CLI (또는 VS Code) | 데스크탑 앱 (워크 탭) |
| 사전 준비 | 나가기 전 터미널에서 /remote-control을 미리 켜둬야 함 | 데스크탑 앱만 켜져 있으면 됨 (폰과 페어링 자동) |
| ✅ 할 수 있는 것 | 하던 대화·작업을 그대로 이어감 / 터미널·폰·브라우저 여러 기기에서 동시 조종(대화 실시간 동기화) / 내 컴퓨터의 파일·MCP·스킬 전부 사용, @ 입력으로 내 파일 자동완성 / 폰에서 사진·파일을 보내면 내 컴퓨터로 전달됨 / 잠깐 끊겨도 자동 재접속 / 완료·질문 시 푸시 알림 | 미리 세션 없이 폰에서 새 일 시작 / 클로드가 일 종류를 보고 사무 작업이냐 개발 작업이냐 스스로 배정 / 대화 하나가 계속 이어져 지난 심부름들의 맥락을 기억 / 완료·승인 필요 시 푸시 알림 |
| ❌ 할 수 없는 것 | 켜둔 세션이 없으면 밖에서 새로 시작 불가 / 터미널을 닫으면 세션 종료 / 컴퓨터가 인터넷과 10분 이상 끊기면 종료 / 일부 터미널 전용 명령은 폰에서 사용 불가 | 터미널에서 하던 기존 세션 이어받기 불가 (그건 리모트 컨트롤의 몫) / 심부름 대화는 1개 고정 — 여러 스레드로 나누거나 새로 만들 수 없음 / Pro·Max 요금제 전용 / 데스크탑 앱이 꺼지거나 컴퓨터가 잠들면 중단 |
| 장점 한 줄 | 세밀한 조종 — 운전대를 계속 잡고 가는 느낌 | 간편한 위임 — 비서에게 문자 한 통 보내는 느낌 |
| 단점 한 줄 | 미리 켜두는 걸 잊으면 밖에서 방법이 없음 | 진행 중 세부 개입이 어렵고, 대화 통로가 하나뿐 |
🧠 암기 비유: 리모트 컨트롤 = 집에서 틀어놓고 나온 방송을 밖에서 이어보는 것 / 디스패치 = 문자 한 통 보내면 집에 있는 일꾼이 알아서 움직이는 것.
각 통로 맛보기 — 복사해서 그대로 써보는 세트 (⏱️ 교시 내에는 ①만 함께 실습하고, ②~④는 시연으로 본 뒤 집에서 직접 해보세요):
① 리모트 컨트롤 — 지금 이 세션을 폰으로 이어가기. 먼저 터미널(클로드 코드 안)에서:
/remote-control
→ 대화에 세션 주소(URL)가 표시되고, 입력창 아래에 /rc active 표시가 켜진다. 폰에서 접속하는 방법은 3가지 (공식 문서 기준 — 아무거나 편한 것으로):
/remote-control을 한 번 더 실행하면 세션 주소 + QR 코드가 있는 상태 패널이 열린다 → 폰 카메라로 스캔 (참고: claude remote-control 서버 모드에서는 스페이스바로 QR 표시/숨김)💡 "요즘은 명령어 없이도 되던데?"의 정체: 클로드 코드에서 /config → Enable Remote Control for all sessions를 켜두면(데스크탑 앱은 Settings → Claude Code → Enable remote control by default), 모든 세션이 자동으로 원격 등록되어 명령어를 칠 필요조차 없다. 폰 앱 Code 탭에 항상 떠 있게 된다.
폰에서 세션에 들어갔으면:
지금까지 하던 랜딩페이지 작업을 폰에서 이어서 할게. 현재 상태를 3줄로 요약해주고, 사이트 하단에 "휴대폰에서 수정했습니다"라는 문구를 잠깐 넣었다가 확인 후 다시 빼줘. 끝나면 알림 보내줘.
(💡 "끝나면 알림 보내줘"라고 부탁하면 작업이 끝날 때 폰으로 푸시 알림이 온다 — 공식 기능. 단 미리 폰 클로드 앱에 로그인·알림 허용을 해두고, 클로드 코드에서 /config → Push when Claude decides를 켜두어야 한다)
② 디스패치 — 폰에서 새 일 던지기 (데스크탑 앱이 켜져 있어야 함). 폰 클로드 앱에서 새 작업으로:
내 컴퓨터의 랜딩페이지 프로젝트 폴더를 열어서, 지금까지 접수된 문의(또는 가입 회원)를 조회하고 "오늘의 현황.md" 파일로 알기 쉽게 정리해줘.
③ 채널스 — 1차에서 만든 텔레그램 봇에게 카톡 하듯:
랜딩페이지 사이트의 대표 문구를 "OOO에 오신 것을 환영합니다"로 바꾸고, 커밋·푸시해서 실제 사이트 반영까지 한 다음 결과를 알려줘.
④ 두 기능 비교 체험 — 같은 부탁을 두 방식으로 던져보면 차이가 몸으로 느껴진다:
🕹️ 리모트 컨트롤로 (미리 켜둔 세션에서 — 이미 맥락을 알고 있는 비서):
아까 하던 그 작업 이어서 — 방금 배포한 내 사이트 주소를 다시 알려주고, 방문자 입장에서 첫 화면 문구가 자연스러운지 검토해서 수정안을 제안해줘.
→ "아까 그 작업"이라고만 해도 알아듣는다. 세션이 이어지고 있기 때문.
📨 디스패치로 (새로 던지는 심부름 — 처음 듣는 일꾼이므로 대상부터 짚어줘야 함):
내 컴퓨터의 랜딩페이지 프로젝트 폴더(폴더 이름: [내 폴더명])를 열어서, 배포된 사이트 주소를 확인해 알려주고, 방문자 입장에서 첫 화면 문구가 자연스러운지 검토해서 수정안을 제안해줘.
→ 같은 부탁인데 폴더가 어디인지부터 알려줘야 한다. 미리 켜둔 세션이 없어도 되는 대신, 맥락은 내가 채워줘야 한다는 것 — 이것이 두 기능의 차이를 한 번에 보여준다.
구별 요령 (한 줄 암기):
공식 문서: 리모트 컨트롤 https://code.claude.com/docs/en/remote-control · 디스패치 https://support.claude.com/en/articles/13947068 · 데스크탑 앱의 디스패치 세션 https://code.claude.com/docs/en/desktop
왜 서브에이전트·워크플로우가 내 책상(메인 세션의 컨텍스트)을 지켜주나?
🧪 직접 확인 실험 — 같은 일을 세 방식으로 시키고 책상 크기를 재본다 (강사 화면 시연 또는 각자 실습)
책상이 얼마나 찼는지 보는 계기판이 /context 명령이다. 각 단계 전후로 실행해서 숫자를 비교한다:
/context
실험 순서 — ① 방식(직접)이 책상을 가장 많이 채우므로, 순서대로 하고 단계마다 /context 숫자를 적어두면 차이가 한눈에 보인다:
(실험 주제는 아무거나 좋다 — 아래는 누구나 할 수 있는 "제주도 여행 계획" 예시. 폴더에 파일이 없어도 인터넷 검색만으로 가능하다.)
① 메인 세션에서 직접 (비교 기준 — 책상이 많이 찬다):
서브에이전트나 워크플로우를 쓰지 말고, 네가 이 세션에서 직접 인터넷 검색을 하면서 "제주도 2박 3일 가족여행"에 관해 다음 5가지를 모두 조사해서 정리해줘: 1. 항공권·렌터카 (대략적인 가격대와 예약 팁) 2. 숙소 (가족 여행에 좋은 지역과 형태) 3. 맛집 (현지인 추천 위주 5곳) 4. 관광 코스 (2박 3일 동선 예시) 5. 예상 총경비 (4인 가족 기준)
→ 끝나면 /context 실행 → 컨텍스트가 크게 늘어난 것 확인 (검색해서 읽은 페이지 내용이 전부 내 책상에 올라왔기 때문)
② 서브에이전트 5개를 동시에 (책상이 거의 안 찬다):
이번에는 같은 조사를 서브에이전트 5개를 동시에 띄워서 해줘. "제주도 2박 3일 가족여행"에 관해 각 서브에이전트가 하나씩 맡아 인터넷 검색으로 조사하게 하고, 너는 결과 보고만 받아서 종합해줘: 1. 항공권·렌터카 2. 숙소 3. 맛집 (현지인 추천 위주) 4. 관광 코스 (2박 3일 동선) 5. 예상 총경비 (4인 가족 기준) 각 서브에이전트의 결과를 5줄 이내로 요약해서 보고해줘.
→ 끝나면 /context 실행 → ①과 같은 양의 조사인데 내 책상은 조금만 늘어난 것 확인 (조수 5명이 각자 자기 책상에서 검색·읽기를 했고, 나에게는 요약 보고만 왔기 때문). 처리 속도도 5명이 동시에 일해서 더 빠르다.
③ 워크플로우로 (조수 + 작업 순서표):
워크플로우를 사용해서 "제주도 2박 3일 가족여행 계획"을 만들어줘. 순서는 이렇게: 1단계 — 에이전트 4개가 각각 (일정·동선 / 비용 / 맛집·숙소 후기 / 비 오는 날 대안 코스) 관점에서 병렬로 인터넷 조사 2단계 — 1단계 결과를 검증 에이전트가 재검증 (추천 장소가 지금도 영업 중인지, 가격 정보가 최신인지) 3단계 — 검증을 통과한 정보만 모아 하루 단위 일정표가 있는 최종 여행 계획서로 정리 최종 계획서만 나에게 보여줘.
→ 끝나면 /context 실행 → 4+1명의 조수가 조사·검증까지 했는데 내 책상에는 최종 계획서 하나만 도착한 것 확인. 특히 2단계(검증)처럼 조수의 결과를 다른 조수가 다시 확인하는 단계를 끼워 넣을 수 있는 것이 워크플로우의 힘이다.
"오래 갈 세션일수록, 무거운 조사·검토는 조수(서브에이전트·워크플로우)에게 시키고 내 책상은 지휘용으로 아껴라." — /context가 60~70%를 넘어가면 컴팩트가 가까워졌다는 신호다.
/compact를 실행하면, 대화가 요약된 뒤 그대로 이어지는 모습을 시연으로 확인한다.영어로는 둘 다 context 한 단어다. 그런데 방금 마항과 지금 바항에서는 서로 다른 각도로 쓰이고 있어서, 여기서 딱 갈라두면 평생 안 헷갈린다. 책상 비유로 가르면:
| 마항의 "컨텍스트" | 바항의 "맥락" | |
|---|---|---|
| 가리키는 것 | 책상의 크기와 차 있는 정도 — 클로드가 지금 들고 있는 대화·파일의 총량 | 책상 위에 올려주는 서류의 내용 — 내 요청을 제대로 이해시키는 배경 정보 |
| 관심사 | 양(量) — 얼마나 찼나, 넘치지 않나 | 질(質) — 일에 필요한 정보가 책상에 올라가 있나 |
| 내가 할 일 | 아끼고 비우기 — 컴팩트·서브에이전트·워크플로우 | 채워주기 — 참고 글·스크린샷·노트·폴더 지정 |
| 부족하면 생기는 일 | 느려지고, 한도가 차고, 앞 내용을 흘림 | 엉뚱한 결과물 — "내 맘을 몰라주네" |
왜 같은 단어를 쓰냐면 — 내가 준 맥락(서류)도 결국 컨텍스트(책상) 위에 올라가는 내용물이기 때문이다. 그래서 둘은 모순이 아니라 한 쌍이다: 일에 필요한 맥락(질)은 확실히 채워주되, 불필요한 부피(양)는 조수에게 넘겨 책상을 아낀다. 이 두 감각을 동시에 굴리는 것이 AI를 잘 쓰는 사람의 컨텍스트 관리다.
작업일지.md에 정리해줘" → 다음 세션에서 "작업일지.md 읽고 이어서 해줘"| 🌍 전역 CLAUDE.md | 📁 프로젝트 CLAUDE.md | |
|---|---|---|
| 위치 | 내 홈의 .claude 폴더 (~/.claude/CLAUDE.md) — 컴퓨터에 하나 | 각 작업 폴더 안 — 프로젝트마다 하나씩 |
| 적용 범위 | ★어느 폴더에서 클로드 코드를 켜든 항상 적용 | ★그 폴더(또는 그 하위 폴더)에서 클로드 코드를 켰을 때만 적용 |
| 담을 내용 | 나에 대한 것, 늘 지킬 규칙 — "항상 한국어로 답해줘", "파일을 지우기 전엔 꼭 물어봐줘", "나는 개발 초보니까 쉽게 설명해줘" | 그 프로젝트에 대한 것 — "이 사이트의 배포는 Vercel로 한다", "디자인 색은 ○○ 계열 유지", "auth 관련 코드는 수정 금지" |
| 비유 | 현관에 붙인 우리 집 공통 규칙 | 각 방문에 붙인 이 방 전용 규칙 |
claude를 실행할 때는 물론, 데스크탑 앱의 Code 탭, VS Code 확장에서 세션을 열 때도 똑같이 읽는다 — 전부 같은 클로드 코드이기 때문(다항의 "같은 물건, 다른 문"). 단, 클로드 웹 채팅(claude.ai의 일반 대화)은 클로드 코드가 아니므로 CLAUDE.md를 읽지 않는다.| 클로드 코드를 켠 폴더의 상황 | 자동으로 읽는 것 | 결과 |
|---|---|---|
| 프로젝트 CLAUDE.md가 있는 폴더 | 🌍 전역 + 📁 프로젝트 — 둘 다, 자동으로 (전역 → 프로젝트 순) | 공통 규칙 위에 이 프로젝트 사정까지 아는 상태로 시작 |
| 프로젝트 CLAUDE.md가 없는 폴더 | 🌍 전역 하나만 | 공통 규칙(말투·안전 수칙)은 지키지만, 이 프로젝트가 뭔지는 모르는 상태로 시작 — 매번 말로 설명해줘야 함 |
/memory 명령을 치면 목록이 나온다.내 전역 CLAUDE.md에는 "항상 한국어로 쉽게 설명해줘, 파일 삭제 전에 꼭 확인받아줘"를 넣어주고, 이 프로젝트 폴더의 CLAUDE.md에는 오늘 작업한 내용(어떤 사이트인지, GitHub·Vercel·Supabase 연결 상태, 배포 방법)을 정리해서 만들어줘. 각 파일이 어디에 생겼는지 알려줘.
오늘 밤 집에 가기 전, 마지막으로 이것 하나만 클로드에게 시켜두면 완벽한 마무리:
오늘 이 프로젝트에서 한 일(GitHub 연결, Supabase 백엔드 기능 — 문의 저장 또는 구글 로그인, Vercel 배포, 도메인 연결)과 각 서비스의 역할, 그리고 앞으로 사이트를 수정할 때의 순서를 "작업일지.md" 파일로 아주 쉽게 정리해줘. 다음에 내가 "작업일지 읽고 이어서 하자"라고 하면 바로 이어갈 수 있게.
| 증상 | 원인 | 대처 |
|---|---|---|
gh auth login 브라우저가 안 열림 | 기본 브라우저 미설정 등 | 터미널에 표시된 주소(github.com/login/device)를 브라우저에 직접 입력하고 코드 입력 |
| Supabase 토큰을 복사 못 하고 창을 닫음 | 토큰은 발급 직후 1회만 표시 | 다시 Generate new token 으로 새로 발급 (기존 것은 Revoke — 폐기) |
| (🅰️) 배포는 됐는데 문의 저장이 안 됨 | Vercel에 환경변수 미등록 | "Vercel 프로젝트에 Supabase 환경변수가 등록되어 있는지 확인하고 없으면 등록한 뒤 다시 배포해줘" 라고 클로드에게 |
| 도메인 접속이 안 됨 | DNS 전파 대기 | 정상. 몇 분~몇 시간 대기 (3교시 Step 4 안내 참조) |
| (🅱️) 구글 로그인 버튼을 누르면 오류·경고 화면 | 리디렉션 URI 불일치, 동의 화면 미구성 등 | 구글 클라우드 콘솔의 "승인된 리디렉션 URI"에 Supabase 콜백 주소가 정확히 들어갔는지 확인. 화면을 캡처해 클로드에게 붙여넣으면 원인을 짚어줌 |
(🅱️) 배포 주소에서 로그인 후 localhost로 돌아옴 | Supabase 사이트 URL·리디렉션 허용 목록이 로컬 기준 | 3교시 Step 3의 "🅱️ 선택자 추가 확인" 프롬프트 사용 |
| 한글 도메인·복잡한 설정 | — | 오늘은 영문 도메인 권장. 한글 도메인은 별도 변환(퓨니코드, punycode) 이슈가 있어 강의 후 개별 지원 |
| 뭐가 뭔지 모르는 에러 | — | 에러 전체를 복사해 클로드에게 붙여넣기 + "초보자에게 설명하고 고쳐줘" |
만능 구조 요청 (수업 중 언제든):
방금 뜬 에러야: [에러 메시지 전체 붙여넣기] 나는 개발 초보야. 이게 무슨 뜻인지 한 줄로 설명하고, 네가 직접 고쳐줘. 내가 해야 할 일이 있으면 하나씩 알려줘.
오늘 강의에서 비유로 스친 개념들이 어떤 흐름에서 나온 것인지를 네 영역으로 나눠 한 페이지에 정리했다. 외울 필요 없다 — "아, 이런 흐름이었구나" 정도로 한 번 읽어두면, 앞으로 클로드가 화면에 흘리는 용어들이 훨씬 덜 낯설어진다.
(정렬: 한글 용어 가나다순 → 영어 용어 알파벳순)
| 약어/용어 | 영어 풀네임 | 쉬운 뜻 |
|---|---|---|
| 서버 | server | 응답하는 쪽 — 24시간 켜져 있는 컴퓨터. "시중드는 쪽" |
| 클라이언트 | client | 요청하는 쪽 (브라우저·휴대폰) — "의뢰인·손님"이라는 뜻 |
| .env | environment (variables file) | 환경변수 파일 — 비밀 열쇠 보관 수첩 |
| A 레코드 | Address record | DNS에서 "이 도메인 → 이 IP" 한 줄 |
| AI | Artificial Intelligence | 인공지능 |
| anon key | anonymous key | Supabase의 방문자용(익명) 제한 출입증 |
| API | Application Programming Interface | 프로그램끼리 대화하는 창구 |
| Auth | Authentication | 인증 — "네가 누구인지" 확인하는 회원 명부 기능 |
| CDN | Content Delivery Network | 전 세계에 복사본을 놓아 빠르게 전달하는 망 |
| CI/CD | Continuous Integration / Continuous Deployment | 푸시하면 점검·배포가 자동으로 이어지는 벨트 |
| CLI | Command Line Interface | 명령줄 도구 — 글자로 명령하는 창 |
| CNAME | Canonical Name record | DNS에서 "이 도메인 → 저 이름" 별명 연결 |
| CRUD | Create·Read·Update·Delete | 데이터의 4대 동작 — 생성·조회·수정·삭제 |
| CSS | Cascading Style Sheets | 웹 문서를 꾸미는 스타일 언어 |
| DB | Database | 데이터베이스 — 쌓이고 검색되는 디지털 장부 |
| DNS | Domain Name System | 도메인 이름 → IP 주소 전화번호부 |
| FTP | File Transfer Protocol | 옛날식 파일 손 업로드 방식 |
| gh | GitHub CLI | 터미널에서 GitHub를 다루는 도구 |
| GUI | Graphical User Interface | 그림 화면 — 마우스로 클릭하는 화면 |
| HTML | HyperText Markup Language | 웹 문서의 구조를 적는 언어 |
| HTTP | HyperText Transfer Protocol | 웹 문서를 주고받는 통신 규칙 |
| HTTPS | HyperText Transfer Protocol Secure | HTTP + 암호화 (주소창 자물쇠) |
| IP | Internet Protocol | 인터넷의 숫자 주소 체계 |
| JSON | JavaScript Object Notation | 프로그램끼리 데이터를 주고받는 표기 형식 |
| MCP | Model Context Protocol | AI에 여러 외부 서비스를 표준 방식으로 붙이는 통로 (1부에서 배움) |
| MSA | Microservices Architecture | 큰 서비스를 잘게 쪼개 운영하는 구조 |
| NS | Name Server | 네임서버 — 내 도메인의 DNS 장부를 관리하는 사무소 |
| OAuth | Open Authorization | "구글로 로그인" 같은, 다른 서비스 계정으로 안전하게 로그인하는 표준 |
| OCR | Optical Character Recognition | 사진·스캔 문서 속 글자를 읽어내는 기술 |
| RDB | Relational Database | 관계형 DB — 데이터를 표로 저장 |
| repo | repository | 레포지토리 — 프로젝트 하나의 코드 저장소 |
| S3 | Simple Storage Service | 아마존의 클라우드 파일 창고 (스토리지의 원조) |
| SQL | Structured Query Language | 표에서 데이터를 넣고 꺼내는 언어 |
| SSH | Secure Shell | 다른 컴퓨터의 터미널에 안전하게 접속하는 통로 (1차 과제) |
| TTL | Time To Live | DNS 정보의 유효기간 — 전파가 늦는 이유 |
| UI | User Interface | 사용자와 만나는 화면·메뉴 전반 |
| URL | Uniform Resource Locator | 인터넷 주소 한 줄 |
| VS Code | Visual Studio Code | 마이크로소프트의 무료 코드 편집기 |
질문 있으신가요? 😊 무엇이든 편하게 물어보세요.
오늘 막히셨던 부분, 더 해보고 싶은 것 — 지금 다 풀어 가세요.
오늘 여러분은 반나절 만에 인터넷에 떠 있는 내 사이트까지 만들어냈습니다. 그런데 그것이 가능했던 이유를 잊지 말아 주십시오 — 화려한 배포 버튼이 아니라, 1교시의 다소 지루해 보이던 개념들(서버, DB, DNS, 커밋)을 먼저 지나왔기 때문입니다.
기본이 있는 응용만이 실질적인 활용으로 이어집니다. 원리를 모른 채 복사해 붙인 자동화는, 잘 돌아가는 동안에는 내 것처럼 보이지만 멈추는 순간 남의 것이 됩니다. 에러 한 줄에 전체가 무너지고, 무엇이 무너졌는지 클로드에게 물어볼 말조차 찾지 못하게 됩니다.
부디 "기본 없는 자동화"라는 함정에 빠지지 마십시오. 과제에 기본 지식 정독과 용어 암기가 들어 있는 이유가 바로 이것입니다. AI가 대신 일해주는 시대일수록, 무엇을 시키고 있는지 아는 사람과 모르는 사람의 격차는 오히려 벌어집니다. 기본기를 갖춘 여러분의 응용에는, 이제 한계가 없습니다.
과제 문서 「3기 2차 과제 등 공지」(3기 전용 공간)를 꼭 열어 보세요. 구성은 크게 두 축입니다.
수료 요건 5가지 — ① 1차 강의 참석 ② 2차 강의 참석 ③ 1차 과제 보고 ④ 2차 과제 보고 ⑤ 모든 필수 설문 제출(1·2·4·5번 4종) — 을 모두 충족하신 분께 수료증(PDF)을 이메일로 보내드립니다.
수료증 보유자 추가 혜택 — 본 과제 기한 경과 후, 공통 자료실 일정 기간 접근권이 수료증 보유자에게 부여됩니다.
설문은 수료 요건이자, 다음 기수와 후속 강의를 설계하는 자료입니다. 그리고 그보다 먼저 — 여러분 자신의 성장 과정을 객관적으로 확인할 수 있는 유일한 기초 기록입니다. 강의 전의 나(1번), 강의 직후의 계획(4번), 과제를 완주한 뒤의 나(5번)가 답변으로 남아 있어야, 몇 달 뒤 "내가 어디서 출발해 얼마나 왔는지"를 느낌이 아니라 기록으로 확인할 수 있습니다. 실제로 2기에서는 이 설문 답변들을 기초로 수강생의 「발전 과정」 자료가 만들어지기도 했습니다.
설문지 파일은 공통 자료실의 「설문」 폴더(단톡방 안내 참조)에서 받아 옵시디언으로 작성합니다.
| 설문 | 작성 시점 | 필수 여부 | 제출 방법 |
|---|---|---|---|
| 2. 수업 만족도 조사 | 오늘 강의 직후 | ⭐ 필수 | 운영진 제출 (익명 가능) |
| 3. 수강생 자체 평가 | 오늘 강의 직후 | 선택 | 본인 보관 (제출 의무 없음) |
| 4. 복습·적용 마스터 계획 | 오늘 밤 ~ 내일 아침 | ⭐ 필수 | 별도 .md로 단톡방 제출 + 본인 사본 보관 |
| 5. 과제 완료 후 회고 | 2차 과제 완료 후 (~8. 28.) | ⭐ 필수 | 과제 보고서와 함께 .md 두 파일 제출 |
복습·적용 마스터 계획 설문지 (3기, 홍길동).md / 2차 과제 보고시 설문지 (3기, 홍길동).md기억이 생생한 2일 내에 2·3·4번을 끝내는 것을 강력히 권합니다. 셋 합쳐 40분이면 충분합니다.
2일 이내에 여러분의 도메인 주소가 하나둘 단톡방에 올라오기를 기다리겠습니다. 처음 뜬 내 사이트의 주소만큼 확실한 수료증은 없습니다.
1차부터 오늘까지 긴 시간 함께해 주셔서 감사합니다. 막히는 것은 실력이 부족해서가 아니라 배우고 있다는 증거입니다.
막히면 언제든, 에러 메시지를 통째로 복사해 클로드에게, 그리고 단톡방에 물어보세요. 여러분은 이미 만들 줄 아는 사람입니다. 💪
끝으로 고백 하나 드립니다. 이 강의를 기획하고 총괄하며 오늘 2부를 진행한 저 역시, 클로드 코드 CLI 설치 하나를 넘지 못해 밤늦도록 끙끙대던 시간과 시기가 있었습니다. 지금 여러분이 서 있는 그 막막한 자리에, 저도 똑같이 서 있었습니다. 그래서 누구보다 확신을 갖고 말씀드립니다.
지금 끙끙대는 이 시간은 결코 사라지지 않습니다. 바로 이 시간이 여러분의 성장과 미래를 가장 크게 밀어 올리는 힘이 될 것입니다.
— 주강사 조성원 · 변호사 조성원 법률사무소 부설 조변의 지식연구소
법률 문제로 상담이 필요하시거나, 강의를 의뢰하시려면 신청하세요.
법률 상담 — 조성원 변호사가 사건 경위를 직접 검토한 뒤 가능한 대응을 안내합니다. 긴급한 경우 063-451-6300 으로 전화하셔서 상담일정을 더 빠르게 확정하실 수 있습니다.
강의 의뢰 — 기관·학교·단체·기업 등 대상과 주제에 맞추어 강의를 진행합니다. 일정과 내용은 강의 신청 페이지에서 알려 주시면 조율해 드립니다.
이 사이트는 방문 분석을 위해 Google Analytics와 Microsoft Clarity 쿠키를 사용합니다. 의뢰인 입력 정보는 마스킹되어 외부로 전송되지 않으며, 거부해도 모든 기능을 그대로 사용할 수 있습니다.