4 회 차 가 이 드

나만의 앱 만들기 시작

처음부터 끝까지 내가 만들고 싶은 앱으로 직접 시작합니다

📅 6/24(수) 오후 14:00~17:00  |  충경 AI Lab실
← 전체 프로그램

오늘은 진짜 내 앱입니다

🎯 오늘의 목표

3회차에서는 테디가 준 소스코드로 배포를 경험했어요. 오늘은 내가 만들고 싶은 앱을 처음부터 직접 만들기 시작합니다. PRD 작성부터 GitHub 세팅, 개발, 배포까지 전 과정을 한 번에!

🛠️ 오늘 사용하는 도구

3회차에 이미 다 설치했어요! Claude 데스크탑, VS Code, GitHub Desktop, Vercel. 오늘은 설치 없이 바로 만들기에 집중합니다.

💡 미리 생각해오면 좋은 것

"만들고 싶은 앱 아이디어" 하나. 아직 없어도 수업 시간에 함께 찾습니다!

💡 좋은 첫 번째 앱의 기준

① 내가 실제로 쓸 것 같다
② 핵심 기능을 3개로 말할 수 있다
③ 결제·AI·회원가입이 핵심이 아니다

이 3가지를 만족하면 충분해요. 완벽한 아이디어를 찾으려 하지 마세요. 만들면서 발전시키는 게 훨씬 빨라요!

Q. 이 3가지 기준이 왜 중요한 거예요?
① 내가 실제로 쓸 것 같다 → 동기 부여와 디버깅(에러를 찾아 고치는 작업) 의지를 결정해요. 막히는 순간에 "이거 진짜 내가 쓸 건데" 싶으면 한 번 더 시도하게 되고, 가상의 아이디어는 막히면 포기하기 쉬워요.

② 핵심 기능을 3개로 말할 수 있다 → 범위(scope)가 명확한지 보는 거예요. 3개로 못 말한다는 건 아직 뭘 만들지 정리가 안 됐다는 신호라서, PRD 단계에서 계속 헤매다 개발 시간을 다 까먹게 돼요.

③ 결제·AI·회원가입이 핵심이 아니다 → 3시간 안에 완성 가능한지를 보는 현실적 필터예요. 이 세 가지는 그 자체로 보안·외부연동·인증 같은 복잡한 시스템이라서, 핵심이 되어버리면 정작 만들고 싶었던 기능은 못 만들고 여기서만 시간을 다 쓰게 돼요.

한 문장으로: 동기(①) + 범위(②) + 난이도(③)가 모두 맞아야, 3시간 안에 "완성"이라는 성취 경험까지 도달할 수 있어요.
Q. 디버깅이 뭐예요?
코드에서 에러나 오작동의 원인을 찾아서 고치는 작업이에요. ("bug(벌레)"가 옛날에 기계 안에 들어가 고장 낸 데서 나온 말이라, 버그=에러, 디버깅=버그를 잡는 것이라는 뜻이 됐어요.) 오늘 수업에서는 화면이 하얗게 나오거나 빌드가 실패하는 상황에서, 에러 메시지를 AI에게 보여주고 같이 원인을 찾아 해결하는 것 자체가 디버깅이에요. 직접 코드를 보고 고치지 않아도 괜찮아요.

이렇게 진행됩니다

14:00 ~ 14:10
📋 오프닝 & 3회차 돌아보기
오늘 전체 흐름 안내
14:10 ~ 14:40
💡 아이디어 선정 + PRD 티키타카
주제 결정 → Chat 탭에서 AI와 대화하며 PRD 완성
📌 아이디어 & PRD →
14:40 ~ 15:00
📄 4종 문서 완성 & 저장
prd.md / claude.md / readme.md / current_status.md 한 번에 생성
📌 4종 문서 만들기 →
15:00 ~ 15:15
☕ 쉬는 시간
15:15 ~ 15:40
📁 GitHub 프로젝트 세팅
Create new repository → Publish → 4종 문서 복사 → 첫 커밋&푸시
📌 프로젝트 세팅 →
15:40 ~ 16:30
⚡ PRD 기반 단계별 개발
VS Code + Claude Code로 Phase별 개발
📌 개발 시작 →
16:30 ~ 16:45
🚀 Vercel 연결 + 1차 배포
GitHub 저장소를 Vercel에 연결 → 배포 완료!
📌 배포하기 →
16:45 ~ 17:00
📌 마무리 & 5회차 안내
과제 안내, 다음 주 예고, 강의 평가
⭐ 강의 평가하기
🎯 오늘의 최소 목표

PRD 완성 + GitHub 세팅 + 개발 시작 + 1차 배포. Supabase는 필요한 사람만 선택적으로 진행해요. 배포 URL만 있어도 오늘은 성공!

STEP 1
💡 아이디어 선정

아이디어가 없으면 앱을 못 만들어요. 아래 3가지 질문으로 빠르게 결정하세요.

1️⃣ 내가 실제로 쓸 앱인가?

"완성되면 매주 1번이라도 쓸 것 같다." → YES면 좋은 선택!

2️⃣ 핵심 기능 3개로 말할 수 있나?

3개로 정리가 안 되면 너무 복잡한 거예요. 범위를 줄이세요.

3️⃣ 결제·회원가입·AI가 핵심이 아닌가?

이런 기능이 핵심이면 완성이 어려워요. 핵심 가치는 다른 데 있어요.

4️⃣ 부대의 중요한 데이터가 밖으로 나가지 않는가?

나 혼자, 내 기기 하나로만 쓰는 거라면(예: 내 개인 캘린더) DB 없이 브라우저 저장(localStorage)만으로 충분해요 — 배포해도 똑같이 잘 작동해요.

여러 사람이 같이 쓰거나 여러 기기에서 봐야 해서 DB(Supabase)가 꼭 필요하다면, 부대 보안과 무관한 가벼운 주제로 정하세요. (예: 동기 생일 알림, 당직 순서표는 OK / 실제 작전·인원·보안 정보가 들어가는 건 안 됨)

아이디어 포착
🔎 군 생활 불편 포착 워크시트

막연히 "앱 아이디어 있으세요?"라고 물으면 가계부, 투두리스트처럼 흔한 것만 떠올라요. 아래 10개 질문에 짧게 답하면서 내 부대 생활 속 진짜 불편함을 감으로 잡아보세요. 문장으로 완벽하게 답할 필요 없어요, 떠오르는 대로 메모만 하면 충분합니다.

🪖 부대 일과 질문 5개

① 하루 중 가장 반복적으로 짜증나는 행정·관리 작업은?
② 정보가 늦게 전달돼서 곤란했던 적은?
③ 물품·인원·시간을 손으로 세거나 외워야 했던 순간은?
④ 같은 걸 매번 다시 확인하거나 물어봐야 했던 일은?
⑤ "이거 누가 정리해주면 좋겠다" 싶었던 작업은?

🛏️ 생활관·병영 생활 질문 5개

① 전우들과 뭔가를 정하거나 나눠야 할 때 헷갈렸던 경험은?
② 당직·작업·청소 같은 순서를 정할 때 불편했던 점은?
③ 혼자 기록하고 싶은데 마땅한 도구가 없었던 건?
④ 전입·전출, 동기들과 관련해서 챙기기 번거로웠던 일은?
⑤ 개인정비시간을 더 잘 쓰고 싶은데 안 됐던 이유는?

💡 감이 안 잡힌다면 — 참고 예시

당직·작업 순서 룰렛 · 보급품 체크리스트 · 점호/PT 기록 · 전입신병 적응 체크리스트 · 동기 생일·기념일 알림 · 개인정비시간 루틴 트래커 — 이런 결의 아이디어들이 보안 걱정 없이 만들기 좋아요.

아이디어 도움 프롬프트 (보안 조건 포함)
나는 군부대에서 [어떤 역할/상황]을 맡고 있고, [어떤 불편함]을 겪어. 조건: 외부 API 연동·로그인은 없어야 해. DB가 필요하면(여러 기기/여러 사람과 공유) 부대 보안과 무관한 가벼운 주제여야 하고, 혼자 쓰는 거면 DB 없이 브라우저 저장(localStorage)만으로 동작해도 돼. 이 조건에 맞는 군 생활 밀착형 웹앱 아이디어 5가지를 추천해줘. 각각 핵심 기능 3개씩, DB가 필요한지 여부도 같이 정리해줘.

⚠️ 80% 마음에 들면 그걸로 시작하세요! 완벽한 아이디어는 없어요. 만들면서 발전시키는 게 훨씬 빨라요.

STEP 2
📄 PRD 작성 + 4종 문서 완성

아이디어가 정해졌으면 Claude Chat 탭에서 PRD를 만들어요. 2회차에서 배운 티키타카 방식 그대로입니다. 이번엔 진짜 내 앱이에요!

2-1. PRD 초안 만들기

1
Claude 데스크탑 Chat 탭 열기
아래 프롬프트로 PRD 초안을 요청하세요. 내 상황을 2~3줄로 간단히 설명하고 마지막에 "PRD 초안을 만들어줘"로 끝내면 됩니다.
PRD 초안 요청 프롬프트
나는 [내 상황]에서 [어떤 문제]가 있어. 이걸 해결하는 [어떤 앱]을 만들고 싶어. PRD 초안을 만들어줘.
2
티키타카로 다듬기 (10~15분)
AI가 만들어준 PRD를 보면서 내 상황에 맞게 수정 요청하세요.

• "이 기능은 필요 없어, 빼줘"
• "이런 기능을 추가하고 싶어"
• "모바일에서 주로 쓸 거야"
• "로그인 없이 사용할 수 있게 해줘"

AI 제안을 다 받아들이지 마세요! 내가 정말 원하는 것만 골라야 앱이 나다워집니다.
3
완성도 검토 요청
3~5번 대화를 주고받았다면 검토를 요청하세요.
검토 요청 프롬프트
지금까지 만든 PRD에서 빠진 핵심 부분이 있다면 최대 3가지만 알려줘. 중요하지 않은 건 말하지 마.

2-2. 4종 문서 한 번에 만들기

PRD가 어느 정도 완성되면 4종 문서를 한 번에 만들어요. 각 파일이 무슨 역할인지 먼저 확인하세요.

📄 prd.md
무엇을 만들지 — 설계도
앱의 설계도. 기능 목록과 개발 단계. Claude Code가 이걸 보고 만들어요.
🤖 claude.md
어떻게 작업할지 — 수행 매뉴얼
Claude Code가 프로젝트를 열 때 가장 먼저 읽는 파일. 규칙과 맥락을 담아요.
📖 readme.md
이 앱이 뭔지 — 소개서
사람이 읽는 소개서. GitHub 저장소 첫 화면에 자동으로 표시돼요.
📊 current_status.md
지금 어디까지 왔는지 — 저장 버튼
개발 현황 파일. 다음 수업에서 "어디까지 했지?" 없이 바로 이어서 시작!
💡 한 줄로 외우기

prd.md = 설계도 (뭘 지을지)
claude.md = 수행 매뉴얼 (어떻게 지을지, 신입 직원 업무 매뉴얼처럼)
readme.md = 소개서 (제품 박스의 소개 라벨처럼, 사람이 보는 것)
current_status.md = 저장 버튼 (게임 세이브 포인트처럼, 다음에 이어서 시작)

Q. 이 파일들 제가 직접 다 써야 하나요?
아니에요. AI에게 "위 4종 문서 만들어줘"라고 요청하면 AI가 PRD 내용을 바탕으로 자동으로 다 작성해줘요. 직접 타이핑할 필요 없어요.
Q. 4개를 꼭 다 만들어야 하나요? 너무 많은 것 같아요.
한 번의 명령으로 AI가 동시에 만들어줘서 실제로는 추가 시간이 거의 안 들어요. 대신 나중에 에러 대응이나 다음 회차 이어가기가 훨씬 편해져요.
Q. .md가 뭔가요? 워드 파일인가요?
마크다운(Markdown)이라는 텍스트 형식이에요. 메모장처럼 그냥 글자로 쓰는 파일인데, 제목·강조 표시를 간단한 기호(#, ** 등)로 표현해요. 워드보다 가볍고 AI가 더 잘 읽어요.
Q. claude.md랑 prd.md가 헷갈려요. 뭐가 다른 거예요?
prd.md = "설계도(무엇을)", claude.md = "수행 매뉴얼(어떻게)"로 구분하면 돼요. prd가 메뉴라면 claude.md는 조리 순서·주방 규칙이에요.
Q. 이 파일들 수정하다가 잘못 건드리면 앱이 망가지나요?
이 파일들은 코드가 아니라 그냥 "지시문/설명 글"이라서 직접 망가뜨릴 위험은 없어요. 다만 내용을 바꾸면 다음에 AI가 그걸 보고 다르게 작업할 수 있으니, 바꾸고 싶으면 AI에게 "이 부분 수정해줘"라고 요청하는 걸 추천해요.
Q. current_status.md는 누가 업데이트해주나요? 제가 매번 써야 하나요?
보통 Phase 하나가 끝날 때마다 "current_status.md 업데이트해줘"라고 AI에게 요청하면 자동으로 갱신해줘요. 직접 쓸 필요 없어요.
🎨 디자인 방향, 지금 정해두면 좋아요

Stripe, Notion, Linear, Apple, Spotify... 평소 보던 앱·사이트 중에 "이런 느낌이면 좋겠다" 하는 게 있나요? 그걸 claude.md에 미리 적어두면, 앞으로 만들 모든 Phase에 똑같은 스타일이 일관되게 적용돼요. 나중에 개발 다 끝나고 디자인을 바꾸려면 모든 화면을 다시 고쳐야 해서 비효율적이에요 — 지금이 가장 좋은 타이밍입니다.

4종 문서 한 번에 만들기 프롬프트 (디자인 방향 포함)
이 프로젝트를 위한 4개 파일을 만들어줘. 1. prd.md — 기능 목록과 개발 단계가 포함된 PRD (개발 단계 세분화) 2. claude.md — Claude Code가 이 프로젝트를 작업할 때 참고할 규칙과 컨텍스트. 디자인은 [Stripe / Notion / Linear 등 원하는 서비스]처럼 [깔끔하고 여백이 넉넉한 / 다크하고 모던한 / 부드럽고 친근한] 느낌으로 만들어달라는 규칙을 포함해줘. 3. readme.md — 이 앱의 소개, 실행 방법, 사용 방법 4. current_status.md — 현재 개발 진행 상황 (아직 시작 안 함, Phase 0 준비 중)
💡 디자인을 "지정"하면 결과가 달라져요

"예쁘게 만들어줘"는 모호해서 AI가 무난한 기본 디자인으로 가요. 대신 "[특정 서비스]처럼"이라고 구체적으로 지정하면, 그 서비스의 색감·여백·폰트 분위기를 참고해서 훨씬 더 또렷한 스타일로 나와요. 꼭 유명 서비스가 아니어도 됩니다 — "군더더기 없이 단정한 느낌", "PT 체조 포스터처럼 또렷한 느낌"처럼 직접 표현해도 똑같이 적용돼요.

1
4개 파일 다운로드
Claude가 4개 파일을 만들어주면 각각 다운로드 버튼을 눌러 받으세요. 잠시 후 프로젝트 폴더에 넣을 거예요.
✅ 여기까지 되면

4개 파일이 내 컴퓨터에 다운로드된 상태. 다음 단계에서 프로젝트 폴더를 만들고 여기에 넣습니다!

STEP 3
📁 GitHub 프로젝트 세팅

GitHub Desktop에서 새 저장소를 만들면 .gitignore 파일이 자동으로 생성돼요. 3회차처럼 기존 폴더를 Add하는 게 아니라 처음부터 새로 만드는 방식이에요.

1
GitHub Desktop에서 새 저장소 만들기
GitHub Desktop → 상단 메뉴 File > New repository 클릭
2
저장소 정보 입력
Name: 영문으로 프로젝트 이름 (예: my-workout-app). 한글 금지!
Description: 간단한 설명 (선택)
Local path: 바탕화면으로 변경 → "Choose..." 클릭 → 바탕화면 선택
"Initialize this repository with a README" 체크 ✅
Git ignore: 드롭다운 클릭 → Node 선택 (기본 .gitignore 자동 생성!)
License: None으로 설정
"Create repository" 클릭
💡 Git ignore에서 Node를 선택하면 node_modules, .env 같은 올리면 안 되는 파일이 자동으로 제외돼요. 나중에 따로 설정할 필요 없어요!
3
GitHub.com에 Publish
상단 "Publish repository" 버튼 클릭 → "Keep this code private" 체크 해제 (Vercel 무료 연결 위해 공개로) → "Publish repository"
4
폴더 열고 4종 문서 복사
GitHub Desktop → Repository > Show in Explorer (또는 Finder) 클릭 → 바탕화면에 생긴 프로젝트 폴더가 열려요.

아까 다운로드한 4개 파일(prd.md, claude.md, readme.md, current_status.md)을 이 폴더 안으로 드래그하세요.
5
첫 커밋 & 푸시
GitHub Desktop으로 돌아오면 4개 파일이 변경 목록에 보여요.
① 왼쪽 아래 Summary: "초기 세팅 완료" 입력
"Commit to main" 클릭
③ 상단 "Push origin" 클릭
⚠️ 목록에 .env.local이 있으면 절대 커밋하지 마세요! .gitignore가 제대로 설정됐는지 확인하세요.
✅ 세팅 완료!

GitHub에 내 프로젝트 저장소가 생겼고, 4종 문서가 올라갔어요. 이제 개발 시작 준비 완료!

STEP 4
⚡ PRD 기반 단계별 개발
🧭 에러가 나면 이 순서로!

① 에러 메시지를 전체 그대로 복사한다 (일부만 X)
② Claude에게 그대로 붙여넣고 묻는다: "이 에러가 났어: [에러 전체] 1)무슨 뜻인지 쉽게 설명해줘 2)원인이 뭔지 알려줘 3)고치는 방법을 알려주고 직접 수정해줘"
③ 고친 후 다시 실행해서 확인한다
④ 안 되면 → "방금 방법으로 안 고쳐졌어. 다른 방법으로 시도해줘"
⑤ 그래도 안 되면 → 강사 호출 (강사는 정답을 주는 사람이 아니라, AI에게 더 잘 묻도록 같이 봐주는 사람이에요!)

1
VS Code로 프로젝트 폴더 열기
VS Code → 파일 > 폴더 열기 → 방금 만든 프로젝트 폴더 선택.
왼쪽에 4개 파일이 보이면 성공!
2
Claude Code 연결
터미널 방식: VS Code 상단 → 터미널 → 새 터미널 → claude 입력 → Enter

확장팩 방식: 왼쪽 Claude 아이콘 클릭
3
파일 확인 요청
Claude가 내 프로젝트를 제대로 이해했는지 먼저 확인해요.
파일 확인 프롬프트
이 폴더의 claude.md, prd.md, current_status.md를 읽고, 프로젝트 현황을 간단하게 정리해줘
4
Phase 0부터 단계별 개발 시작!
개발 시작 프롬프트
이 PRD를 기반으로 앱을 만들어줘. Phase 0부터 단계별로 진행하자. 먼저 Phase 0이 뭔지 알려주고, 진행해줘.
권한 허용 창이 뜨면 "항상 허용" 선택. 중간에 멈추면 "계속해줘" 입력!
5
Phase가 끝날 때마다 커밋 & 푸시
GitHub Desktop → 변경 파일 확인 → Summary에 "Phase 1 완료" 입력 → Commit → Push origin

커밋은 버전 저장, 푸시는 GitHub에 올리기예요. Phase가 끝날 때마다 꼭 푸시하세요!
6
current_status.md 업데이트
Phase가 끝날 때마다 현황 파일도 업데이트해두세요. 다음 수업에서 바로 이어서 시작할 수 있어요!
현황 업데이트 프롬프트
current_status.md를 업데이트해줘. Phase 1 완료했고, 다음에 할 것은 [할 내용]이야.
🎯 오늘 개발 목표

Phase 2~3까지! 기본 UI가 보이는 단계까지 가는 게 목표예요. 남은 부분은 과제와 5회차에 이어서 합니다.

STEP 5
🚀 Vercel 연결 + 1차 배포

3회차에서 한 번 해봤죠? 이번엔 내 앱으로 다시 합니다!

1
Vercel 대시보드에서 새 프로젝트 추가
vercel.com"Add New... > Project" → 목록에서 내 새 저장소 → "Import"
2
배포 설정 & Deploy
① Framework Preset: Other 선택
② 나머지 그대로
"Deploy" 클릭 → 30초~1분 대기
⚠️ 저장소가 목록에 안 보이면 "Adjust GitHub App Permissions" → All repositories → Save
3
🎉 내 앱 URL 확인!
폭죽이 터지면 성공! Dashboard에서 내 URL 확인 → 클릭해서 열기 → 휴대폰으로도 접속해보세요!

이후로는 커밋&푸시만 하면 자동으로 새 버전이 배포됩니다. Vercel을 다시 건드릴 필요 없어요!
🎉 1차 배포 완료!

내가 만든 앱에 진짜 URL이 생겼어요. 이제 개발할 때마다 커밋&푸시만 하면 자동 배포됩니다!

🗄️ Supabase: 데이터를 서버에 저장하기

❌ 지금 상태
브라우저에만 저장
다른 기기에서 안 보임
다른 사람이 쓰면 따로 저장
✅ Supabase 연결 후
서버에 안전하게 저장
어디서든 접속 가능
여러 사람이 함께 사용

⚠️ 혼자 쓰는 기록 앱이라면 없어도 충분해요. "여러 사람이 함께 쓰거나, 어디서 접속해도 데이터가 보여야 한다"면 아래를 따라하세요.

S-STEP 1
🔐 Supabase 가입
1
접속 & GitHub으로 가입
https://supabase.com
"Start your project""Continue with GitHub" → "Authorize supabase" 초록 버튼 클릭 → 자동 연결!
S-STEP 2
📦 새 프로젝트 만들기
1
"New project" 클릭 후 정보 입력
Project name: 영문으로 자유롭게 (예: my-app-db)
Database Password: 안전한 비밀번호 → 반드시 메모장에 저장!
Region: Northeast Asia (Seoul) 선택
Pricing Plan: Free 선택
⑤ "Create new project" → 1~2분 대기
⚠️ Database Password는 나중에 볼 수 없어요. 반드시 따로 저장!
S-STEP 3
🔑 연결 정보 복사
1
Settings > API로 이동
왼쪽 메뉴 하단 ⚙️ Settings"API" 탭 클릭
2
두 가지 정보 복사 → 메모장에 저장
Project URL 복사 → 메모장에 붙여넣기
https://xxxxxxxxxxxxxx.supabase.co

anon public 키 복사 → 메모장에 추가
eyJhbGciOiJIUzI1NiIsInR5...
⚠️ "service_role" 키는 절대 복사하지 마세요! "anon public"만 사용합니다.
✅ 메모장에 이렇게 저장해두세요

Project URL: https://xxxxxx.supabase.co
anon key: eyJhbGciOiJIUz...

S-STEP 4
🗂️ 테이블 만들기
1
Claude에게 테이블 구조 요청
테이블 생성 SQL 요청
내 앱(prd.md 참고)에 필요한 Supabase 테이블 구조를 설계해줘. Supabase SQL Editor에 바로 붙여넣을 수 있는 SQL 코드로 만들어줘.
Q. SQL 코드가 뭐예요?
데이터베이스에 "이런 표(테이블)를 만들어줘"라고 지시하는 명령어 코드예요. Supabase는 엑셀처럼 표 형태로 데이터를 저장하는데, 이 표를 손으로 클릭클릭 만들 수도 있지만 SQL이라는 "데이터베이스 전용 명령어 언어"로 한 번에 만드는 게 훨씬 빨라요.

예를 들어 할 일 목록 앱이라면 이런 코드가 나와요:
create table todos ( id uuid primary key default gen_random_uuid(), title text, is_done boolean default false, created_at timestamp default now() ); 한국어로 풀면: "todos라는 표를 만들어줘. 컬럼은 id(고유번호), title(할일 내용), is_done(완료 여부), created_at(생성 시간)으로 해줘"라는 뜻이에요.

직접 짤 필요는 없어요. Claude에게 요청하면 AI가 코드를 통째로 만들어주고, 그 코드를 복사해서 SQL Editor에 붙여넣고 Run만 누르면 표가 자동으로 만들어집니다.
2
SQL Editor에서 실행
Supabase 왼쪽 메뉴 → "SQL Editor""New query" → Claude가 만든 SQL 붙여넣기 → "Run" (Ctrl+Enter)
"Success" 표시 → "Table editor"에서 테이블 확인!
⚠️ 오류가 나면 에러 메시지를 그대로 복사해서 Claude에게 "이 에러가 났어. 고쳐줘."
S-STEP 5
🔌 앱에 Supabase 연결 (안전하게!)

🚨 API 키를 코드에 직접 넣으면 절대 안 돼요! GitHub에 올라가는 순간 전 세계에 공개됩니다. 반드시 .env.local 파일에 따로 보관하세요.

1
.env.local 파일 만들기
Claude에게 요청하면 자동으로 만들어줘요.
.env.local 생성 요청
프로젝트 루트에 .env.local 파일을 만들어줘. 아래 두 값을 넣어줘. VITE_SUPABASE_URL=여기에_Project_URL_붙여넣기 VITE_SUPABASE_ANON_KEY=여기에_anon_key_붙여넣기 그리고 .gitignore에 .env.local이 포함되어 있는지 확인하고, 없으면 추가해줘.
파일이 만들어지면 VS Code에서 직접 열어서 "여기에_Project_URL_붙여넣기" 자리에 메모해둔 실제 값을 넣으세요.
2
앱 코드에 Supabase 연결 요청
Supabase 연결 프롬프트
내 앱에 Supabase를 연결해줘. API 키는 .env.local에 이미 저장해뒀어. VITE_SUPABASE_URL과 VITE_SUPABASE_ANON_KEY 환경변수를 사용해서 기존 localStorage 코드를 Supabase 코드로 교체해줘. 키를 코드에 직접 넣지 말고, 환경변수로 불러와서 사용해줘.
3
동작 확인
앱에서 데이터 입력 → Supabase Table editor에서 Refresh → 데이터가 보이면 성공!
4
푸시 전 .env.local 확인
GitHub Desktop 변경 파일 목록에 .env.local이 없어야 정상이에요!
✅ .env.local이 목록에 없으면 → 안전하게 커밋&푸시
🚨 .env.local이 목록에 있으면 → 절대 커밋하지 마세요! 강사 호출!
5
Vercel 환경변수 설정 (배포용 필수!)
.env.local은 내 컴퓨터에서만 작동해요. Vercel 배포 앱에도 같은 값을 등록해야 해요.

① Vercel 대시보드 → 프로젝트 → "Settings""Environment Variables"
"Add New"로 두 가지 추가:

Key: VITE_SUPABASE_URL
Value: [Project URL]

Key: VITE_SUPABASE_ANON_KEY
Value: [anon key]

"Save"Deployments → 최근 배포 → "Redeploy"
🎉 Supabase 연결 완료!

API 키는 안전하게 보관되고, 어디서 접속해도 데이터가 보이는 진짜 앱이 됐어요!

참고 자료
📋 트러블슈팅 에러 사전

에러가 나면 당황하지 마세요. 아래에서 내 상황과 비슷한 항목을 찾아 해결 프롬프트를 복사해서 Claude에게 그대로 물어보세요.

📁 GitHub Desktop

"저장소가 인식되지 않음" / 파일 목록이 안 보임

원인: 폴더 안에 .git 폴더가 없거나 잘못된 폴더를 열었을 가능성. 확인: 숨김 파일 표시 후 .git 폴더 존재 확인.

Push 시 충돌/거부 메시지

원인: 원격(GitHub)에 내 컴퓨터에 없는 변경이 있음. 해결: "Fetch origin" 먼저 클릭 → 다시 "Push origin".

GitHub 에러 해결 프롬프트
GitHub Desktop에서 이 에러가 났어: [에러 문구 그대로] 지금 상황: [무엇을 하려다가 났는지] 원인이 뭔지 알려주고, 어떤 버튼을 누르면 되는지 순서대로 알려줘.

🚀 Vercel 배포

"Build failed"

원인: 코드 문법 오류, 빠진 파일 등. 해결: Deployments → 실패한 배포 클릭 → 로그의 빨간 줄(Error)을 그대로 복사.

배포는 성공했는데 화면이 하얗게 나옴

원인: 메인 파일이 index.html이 아니거나 경로 문제. 해결: "메인 파일을 index.html로 바꿔줘" 요청 후 재커밋&푸시.

환경변수 추가했는데 적용이 안 됨

원인: 저장만 하고 재배포를 안 함. 해결: Settings에서 저장 → Deployments → 최근 배포 → "Redeploy" 필수.

Vercel 빌드 에러 해결 프롬프트
Vercel 배포 로그에서 이 에러가 났어: [로그의 빨간 줄 그대로 붙여넣기] 원인이 뭔지 쉽게 설명해주고, 코드를 직접 고쳐줘.

💻 Claude Code / 터미널

"claude: command not found" 등 명령어 인식 안 됨

원인: 설치가 안 됐거나, 새 터미널을 안 열었음. 해결: 터미널을 새로 열고 다시 시도 → 안 되면 3회차 설치 단계 재확인.

권한 허용 창에서 멈춰 있음

원인: 허용 여부를 묻는 창이 떴는데 응답을 안 함. 해결: "항상 허용(Always Allow)" 선택.

응답 없이 한참 멈춤

원인: 실제로는 작업 중일 가능성이 높음(특히 Phase가 클 때). 해결: 1~2분 더 기다린 후 "지금 진행 상황 알려줘"로 확인. 그래도 멈춰 있으면 "지금까지 한 작업 알려주고, 멈춘 부분부터 다시 진행해줘".

범용 에러 대응 프롬프트 (어떤 에러든 1차로 써보기)
이 에러가 났어: [에러 메시지 전체 그대로] 1) 무슨 뜻인지 쉽게 설명해줘 2) 원인이 뭔지 알려줘 3) 고치는 방법을 알려주고 직접 수정해줘

🗄️ Supabase (선택 진행자만)

SQL 실행 시 "Success" 대신 에러

원인: 테이블 이름 중복, 문법 오류 등. 해결: 에러 메시지를 그대로 복사해 Claude에게 "이 에러가 났어. 고쳐줘."

데이터 입력했는데 Table editor에 안 보임

원인: .env.local 키가 잘못 들어갔거나 Refresh 안 함. 해결: 먼저 Table editor에서 새로고침 → 안 보이면 .env.local의 URL/key 값을 다시 확인.

🎯 기억하세요

모든 에러를 직접 이해하지 않아도 괜찮아요. 위에서 비슷한 카테고리를 찾아 해당 프롬프트를 복사해서 Claude에게 그대로 물어보면 됩니다. 실제 디버깅은 AI가 해줘요 — 여러분은 방향만 잡아주면 충분해요.

막히면 확인하세요

아이디어를 못 정하겠어요
Claude에게 "나는 [이런 사람]이야. 만들면 실제로 쓸 것 같은 작은 앱 아이디어 5가지 추천해줘"라고 물어보세요. 그중에 60% 이상 마음에 드는 게 있으면 그걸로 시작해요.
PRD 티키타카를 얼마나 해야 하나요?
3~5번 주고받으면 충분해요. 핵심 기능이 3개 정도 명확하게 정해졌다면 검토 요청하고 4종 문서 만들기로 넘어가세요. 완벽한 PRD는 없어요. 개발하면서 계속 수정됩니다.
Create new repository와 Add local repository의 차이가 뭔가요?
Create new repository는 GitHub Desktop이 새 폴더를 만들고 .gitignore도 자동 생성해줘요. 오늘처럼 처음 시작할 때 써요. Add local repository는 이미 있는 폴더를 Git 저장소로 등록하는 거예요. 3회차에서 기존 앱 폴더를 올릴 때 썼던 방식이에요.
Phase가 너무 오래 걸려요
각 Phase는 5~10분씩 걸려요. AI가 코드 만드는 동안 다음 Phase에서 추가하고 싶은 기능을 PRD에 메모해두세요. 기다리는 시간을 활용하는 게 핵심이에요!
배포했는데 화면이 하얗게 나와요
폴더에 index.html 파일이 있는지 확인하세요. 메인 파일이 index.html이어야 해요. Claude에게 "메인 파일을 index.html로 바꿔줘"라고 요청하고 다시 커밋&푸시하세요.
Supabase .env.local이 GitHub Desktop 목록에 보여요
절대 커밋하지 마세요! .gitignore 파일을 열어서 .env.local이 포함되어 있는지 확인하세요. 없으면 Claude에게 "gitignore에 .env.local을 추가해줘"라고 요청하세요.

오늘의 과제 & 체크리스트

📝 이번 주 과제

개발 계속 이어가기 (Phase 3~4 목표)

개발 → 커밋&푸시 → URL 확인 사이클을 반복하세요. Phase가 끝날 때마다 current_status.md도 업데이트해두면 5회차에 바로 이어서 시작할 수 있어요!

막히는 부분은 메모해두고 5회차에 함께 해결해요.

오늘 배운 것 체크리스트

더 해보고 싶다면

🔥 도전 프롬프트 — 다음 Phase 진행
지금 Phase까지 잘 작동해. 다음 Phase를 진행해줘. 시작 전에 어떤 걸 추가하는지 먼저 알려줘.
🔥 도전 프롬프트 — 디자인 개선
앱 디자인을 더 깔끔하고 모바일에서 보기 좋게 개선해줘. 색상과 폰트도 통일감 있게 바꿔줘.

⭐ 4회차 강의 평가

오늘 수업은 어떠셨나요? 솔직한 피드백이 다음 수업을 더 좋게 만듭니다. 1분이면 충분해요!

강의 평가하러 가기 →

자주 묻는 질문

3회차랑 오늘이 어떻게 달라요?
3회차는 테디가 준 소스코드로 배포 환경을 만드는 게 목적이었어요. 오늘은 내가 만들고 싶은 앱을 처음부터 직접 만드는 거예요. PRD 작성부터 개발, 배포까지 전 과정을 내 아이디어로 진행합니다.
current_status.md는 언제 업데이트해요?
Phase가 끝날 때마다 업데이트하는 게 좋아요. "Phase 1 완료, 다음은 Phase 2 (UI 개선)"처럼 기록해두면, 다음 수업에서 Claude에게 이 파일을 읽히면 바로 이어서 작업할 수 있어요. 중간에 수업이 끊겨도 걱정 없어요!
Supabase는 꼭 해야 하나요?
아니요, 선택이에요. 혼자 쓰는 기록 앱이면 없어도 충분합니다. "여러 사람이 함께 쓰거나, 어디서 접속해도 데이터가 보여야 한다"면 연결하세요. 모르겠으면 강사에게 물어보세요!
다음 시간에는 뭘 하나요?
5회차(7/22 수)에는 오늘 만든 앱을 더 발전시킵니다. 피드백을 받아서 기능을 개선하고, 사용성을 높이는 작업을 해요. 오늘 못 끝낸 부분도 5회차에 이어서 합니다!
수업 외 시간에도 개발할 수 있나요?
물론이요! Claude Pro 계정으로 언제든 가능해요. 개발 → 커밋&푸시 → URL 확인 사이클을 반복하면서 앱을 발전시켜보세요. 많이 할수록 실력이 늘어요!