목차
- 00이 책은 무엇을 약속하는가
- 01설치, 한 시간이면 끝난다
- 02첫 대화, 그리고 권한 창
- 03AI에도 종류가 있다
- 04챗봇과 무엇이 다른가
- 05작업 공간 만들기, CLAUDE.md와 Skill 🔒
- 06지도, 왜 코드보다 설계가 먼저인가 🔒
- 07무엇을 만들고, 무엇을 안 만들까 🔒
- 08모으고, 견주고, 갈림길을 고른다 🔒
- 09PRD, 설계 문서로 굳히기 🔒
- 10화면 시안 고르기, 웹 넷 앱 넷 🔒
- 11PRD 고쳐 쓰기, 왜 바뀌었는지 남긴다 🔒
- 12지도, 오늘 진짜로 만드는 것은 설계 문서 🔒
- 13설계 문서 완성하기, 이것만 보고 만들 수 있게 🔒
- 14만들 자리, 개발 환경과 빈 화면 🔒
- 15웹 첫 화면, 네 바퀴 — 문서 먼저 화면 나중 🔒
- 16웹 둘째 화면과 간판 시안 🔒
- 17앱을 내 폰에 띄우기 🔒
- 18앱 화면과 간판, 문서대로 하나씩 🔒
- 19갈림길, 저장되게 만들기 또는 화면 더 🔒
- 20GitHub 가입, 열쇠부터 만든다
- 21Supabase, 데이터를 둘 창고 만들기
- 22웹과 앱을 창고에 잇기 🔒
- 23설계 문서 고쳐 쓰기, 누가 만들어도 똑같이 🔒
- 24올리기 전에, Vercel 가입
- 25인터넷에 올리기, GitHub 창고와 Vercel 주소 🔒
- 26빠진 것 마저 만들기, 한 바퀴에 하나씩 🔒
- 27메뉴 더하기, 문서에 없던 것을 넣는 순서 🔒
- 28앱 회원 로그인, 이메일로 받은 코드 🔒
- 29구글 플레이에 올리기, 비공개 테스트까지 🔒
Supabase 가입 방법 · 웹 · 앱 만들기용
Supabase, 데이터를 둘 창고 만들기
Supabase 가입 방법과 프로젝트 만들기 — 웹과 앱이 같은 데이터를 보려면 창고가 하나 있어야 한다. Supabase가 무엇인지, 가입해서 주소와 열쇠를 받아 오는 법.
21.1 웹과 앱이 서로 모르는 이유
지금 웹과 앱은 각자 가짜 데이터 파일을 한 벌씩 들고 있습니다(15장·18장).
- 웹 폴더 안에 한 벌 — 사장님 화면이 읽는다
- 앱 폴더 안에 한 벌 — 손님 폰이 읽는다
손님이 폰에서 신청을 누르면 폰 안의 파일에만 적힙니다. 사장님 웹은 자기 파일을 읽으니 그 신청을 모릅니다. 그리고 둘 다 새로고침하면 처음으로 돌아갑니다. 칠판에 적은 것이니까요(16장).
둘이 같은 걸 보려면 방법은 하나입니다. 둘 다 들여다볼 수 있는 공책을 하나 두고, 거기에 적고 거기서 읽는 것.

📖 데이터베이스(database) — 데이터 창고
데이터를 정리해서 오래 보관해 두는 곳. 가게 장부나 도서관 서가와 같습니다. 칸이 정해진 표에 한 줄씩 적어 두고, 필요할 때 꺼내 봅니다. 화면을 껐다 켜도, 폰을 바꿔도 장부는 그대로 남아 있습니다.
이 책에서는 쉽게 창고라고 부릅니다. 9장에서 본 데이터(화면 뒤에서 기억해 두는 내용 전부)가 여기에 담깁니다.
21.2 Supabase는 무엇인가
창고를 내 컴퓨터에 둘 수도 있습니다. 그런데 그러면 폰이 내 컴퓨터를 찾아와야 합니다. 17장에서 겪은 와이파이 문제가 또 생깁니다. 그리고 내 컴퓨터를 끄면 창고도 닫힙니다.
그래서 창고를 인터넷에 하나 빌립니다. 인터넷에 있으면 폰이든 컴퓨터든 그냥 붙습니다. 그 창고를 빌려주는 서비스가 Supabase입니다.
📖 Supabase(수파베이스)
인터넷에 데이터 창고를 빌려주는 서비스. 가입하면 내 창고가 하나 생기고, 웹과 앱이 주소와 열쇠만 있으면 거기에 붙어서 읽고 씁니다. 무료로 시작할 수 있습니다.
창고를 직접 짓고 관리하는 대신 창고 임대 회사를 쓰는 것과 같습니다. 청소·경비· 전기는 임대 회사가 맡고, 우리는 물건만 넣고 꺼냅니다.
수업에서 Claude는 이렇게 설명합니다.
“웹이랑 앱이 같은 데이터를 보려면 둘 다 들여다볼 공용 창고가 하나 있어야 합니다. 그 창고를 인터넷에 하나 빌리는 거예요. 공짜입니다.”
왜 가입까지 시키나
가입이 번거로워 보이지만 오히려 쉬운 길입니다. 내 컴퓨터에 창고를 두면 와이파이· 주소·방화벽 같은 문제가 줄줄이 따라옵니다. 인터넷 창고는 가입 10분이면 끝납니다.
들어갈 때는 20장에서 만든 GitHub 계정을 씁니다. 새 아이디와 비밀번호를 만들지 않습니다. GitHub 계정이 아직 없으면 20장부터 하고 오세요.
오늘 쓰지 않는 기능
Supabase에는 기능이 많습니다. 오늘은 창고에 표를 만들고, 읽고, 쓰는 것만 씁니다.
| 안 쓴다 | 왜 |
|---|---|
| 실시간 알림(구독) | 실패하는 곳이 는다. 화면에 들어올 때 다시 읽는 것으로 충분하다 |
| 창고 안의 계산 기능 | 오늘 수준엔 과하다 |
| 로그인 기능 | 로그인은 3단계에서 다룬다 |
| 별도 서버 | 웹도 앱도 창고에 직접 붙는다 |
21.3 가입하기 — 한 번에 하나씩
아래 문장을 Claude에 입력하세요. (참고 16-①)
지금은 웹이랑 앱이 각자 가짜 데이터를 들고 있는 것 같아.
둘이 같은 데이터를 보게 하고 싶어. 어떻게 하면 되는지 알려줘.
Claude가 21.1~21.2절의 이야기를 짧게 하고, 가입하자고 합니다. 아래 문장을 Claude에 입력하세요. (참고 16-②)
가입할게. 뭘 눌러야 하는지 하나씩 알려줘. 한 번에 하나씩만.
Claude는 절차를 한꺼번에 늘어놓지 않습니다. 한 줄 말하고, 됐다는 답을 받고, 다음 줄로 갑니다. 영어 화면이라 버튼 글씨를 그대로 불러 줍니다. 10분쯤 걸립니다.
| 번호 | Claude가 말하는 것 | 우리 답 |
|---|---|---|
| 1 | supabase.com 을 열고 오른쪽 위 Start your project 를 눌러 주세요 | 열었어 |
| 2 | Continue with GitHub 를 눌러 주세요 | 눌렀어 |
| 3 | GitHub 로그인 화면이 뜨면 Continue with Google 로 로그인해 주세요(20장). 이미 로그인돼 있으면 이 줄은 건너뜁니다 | 했어 |
| 4 | Authorize supabase 가 나오면 눌러 주세요. Supabase가 GitHub 계정으로 들어가도 되는지 묻는 겁니다 | 됐어 |
| 5 | New project 를 누르고, 이름은 아무거나 넣어 주세요 | 했어 |
| 6 | Database password 칸 아래 Generate a password 를 누르고, 옆의 Copy 로 복사해 꼭 어디 적어 두세요 | 적었어 |
| 7 | ★ Region 을 열고 목록을 아래로 내려 Northeast Asia (Seoul) 을 꼭 골라 주세요. 맨 위 Asia-Pacific 이 아닙니다 | 골랐어 |
| — | 그 아래 Security 칸은 그대로 둡니다 | |
| 8 | 맨 아래 Create new project 를 누르면 2분쯤 걸립니다. 기다려 주세요 | 됐어 |



2~4번 — 왜 GitHub으로 들어가나
이메일로 따로 가입해도 됩니다. 그런데 그러면 나중에 GitHub과 Vercel에 또 가입하고, 아이디와 비밀번호가 세 벌이 됩니다. GitHub 계정 하나로 세 곳에 들어가면 기억할 게 한 벌입니다. 3단계에서 Vercel이 GitHub에서 코드를 가져가고 Supabase 주소를 읽을 때도, 같은 계정끼리라 잇기가 쉽습니다.
4번의 Authorize 는 처음 한 번만 나옵니다. “Supabase가 내 GitHub 이름과 이메일을 봐도 되나요?” 라는 확인입니다. 코드를 가져가는 권한이 아닙니다.
6번 — 비밀번호는 적어 두기만
여기서 정하는 비밀번호는 창고 관리자용입니다. 오늘은 쓸 일이 없습니다. 그래도 나중에 필요할 수 있으니 어딘가 적어 둡니다. 까먹어도 괜찮습니다. 설정 화면에서 다시 정할 수 있습니다.
7번 — 지역은 되돌릴 수 없다
⚠️ 지역은 만든 뒤에 못 바꿉니다
창고가 어느 나라의 컴퓨터에 놓일지 고르는 칸입니다. 한 번 만들면 바꿀 수 없습니다. 바꾸려면 창고를 새로 만들어야 합니다.
목록 맨 위에는 Asia-Pacific 처럼 넓은 지역이 먼저 나오고 「추천」 딱지가 붙어 있습니다. 그걸 고르면 서울이 아닌 곳에 놓일 수 있습니다. 목록을 내려서 Northeast Asia (Seoul) 을 직접 고릅니다.
멀리 잡으면(미국 등) 폰에서 신청을 누르고 웹에 뜨기까지 눈에 띄게 느려집니다. 22장의 “누르면 바로 뜬다” 가 살지 않습니다. 그래서 여기만은 Claude가 확인하고 넘어갑니다 — Northeast Asia (Seoul).
8번 뒤에 — 창고는 일주일 안 쓰면 잠든다
만들기를 누르고 기다리는 동안 Claude가 한 가지를 말해 둡니다.
“이 창고는 일주일 넘게 안 들어가면 잠자기로 들어갑니다. 다음 작업 전에 한 번 열어보시면 됩니다.”
무료 창고는 7일 동안 아무도 안 쓰면 스스로 멈춥니다. 멈춘 창고는 깨우는 데 몇 분이 걸립니다. 다시 열었을 때 “어제까지 됐는데 안 돼요” 가 되지 않게, 작업 전에 supabase.com 에 한 번 들어가 보면 됩니다.
💡 되돌릴 수 없는 것과 조용히 멈추는 것
가입 절차 중 대부분은 틀려도 나중에 고칠 수 있습니다. 이름은 바꾸면 되고, 비밀번호는 다시 정하면 됩니다. 그런데 두 가지는 다릅니다.
지역은 되돌릴 수 없습니다. 잠자기는 아무 경고 없이 조용히 일어납니다. 강사가 준비하면서 따로 적어 둔 두 가지이고, 그래서 PRD 10장 「만들 때 지킬 것」 에도 들어가 있습니다. 틀리면 비싼 것만 확인하고, 나머지는 빨리 지나갑니다.
21.4 주소와 열쇠 받아 오기
창고가 만들어졌습니다. 이제 웹과 앱이 이 창고를 찾아오고 들어올 수 있게 두 가지를 받아 옵니다. 아래 문장을 Claude에 입력하세요. (참고 16-③)
가입 끝났어. 이제 뭘 복사해서 주면 돼?
“왼쪽 아래 톱니바퀴(Project Settings) → API Keys 를 눌러 주세요.
Publishable key옆 복사 버튼을 눌러 저한테 붙여 주세요. 맨 위 초록 Connect 를 누르면 나오는https://….supabase.co주소도 같이요.”

| 받아 오는 것 | 무엇 | 비유 |
|---|---|---|
| Project URL | 내 창고의 인터넷 주소 | 창고의 번지수 |
| Publishable key | 웹과 앱이 창고에 말을 거는 데 쓰는 키. 예전 이름은 anon public | 창고 초인종 |
📖 API 키(key) — 초인종과 진짜 열쇠
프로그램이 창고에 들어갈 때 내미는 긴 암호 글씨. Supabase는 두 종류를 줍니다.
Publishable key — 누구나 누를 수 있는 초인종입니다. 앱에 넣어 손님 폰에 들어가도 괜찮게 만들어져 있습니다. 초인종을 눌러도 문을 여는 건 창고의 규칙이 정합니다. 예전에는
anon public이라고 불렀습니다.Secret key — 모든 문을 여는 진짜 열쇠입니다(예전 이름
service_role). 이건 앱에 넣으면 안 됩니다. 오늘은 쓰지 않습니다.
“이거 남한테 보여도 돼요?” 라고 물으면 Claude는 이렇게 답합니다.
“이건 보여도 되는 열쇠예요. 문을 여는 열쇠가 아니라 초인종에 가깝습니다. 진짜 열쇠(Secret key)는 안 씁니다.”
붙여 주면 Claude가 웹 폴더와 앱 폴더에 적어 둡니다. 우리에게 파일을 만들라고 하지 않습니다.
📖 .env(닷엔브) 파일 — 설정 쪽지
주소와 열쇠처럼 프로그램 바깥에서 넣어 주는 설정값을 모아 두는 작은 파일. 이름이 점(
.)으로 시작해서 탐색기에서는 잘 안 보입니다.코드 안에 주소를 직접 박지 않고 이 쪽지에 따로 적어 두면, 나중에 창고가 바뀌어도 쪽지만 바꾸면 됩니다.
Claude가 이렇게 말하고 멈춥니다.
“창고가 생겼습니다. 이제 담을 칸을 만듭니다. 17단계 상자를 붙여넣어 주세요.”
21.5 가입 중에 하지 않는 것
| 안 한다 | 왜 |
|---|---|
| 이메일로 따로 가입 | 나중에 GitHub · Vercel 까지 계정이 세 벌이 된다. GitHub 하나로 묶는다 |
| Secret key 복사 | 모든 문을 여는 열쇠. 앱에 들어가면 안 된다 |
| 요금제 고르기 | 무료로 충분하다. 요금 이야기는 꺼내지 않는다 |
| 화면 캡처를 보고 알아서 찾기 | Claude가 한 줄씩 말로 안내한다 |
21.6 정리
- 웹과 앱이 같은 걸 보려면 둘 다 들여다볼 창고 하나가 필요하다
- 창고를 인터넷에 빌려주는 서비스가 Supabase. 무료로 시작한다
- GitHub 계정으로 들어간다(나중에 Vercel도 같은 계정). 한 번에 한 줄씩. 지역은 Seoul — 되돌릴 수 없다
- 무료 창고는 7일 안 쓰면 잠든다. 다음 작업 전에 한 번 열어 본다
- 받아 오는 건 둘 — Project URL(번지수) · Publishable key(초인종). 진짜 열쇠(Secret key)는 안 쓴다
이 장에서 나온 말
| 말 | 쉬운 뜻 |
|---|---|
| 데이터베이스 · 창고 | 데이터를 표로 정리해 오래 보관하는 곳. 가게 장부 |
| Supabase | 인터넷에 데이터 창고를 빌려주는 서비스 |
| Authorize | 다른 서비스가 내 GitHub 계정으로 들어가도 되는지 묻는 확인 |
| 프로젝트(Supabase) | Supabase 안에 만든 내 창고 하나 |
| 지역(Region) | 창고가 놓일 나라. 만든 뒤 못 바꾼다. 우리는 Seoul |
| 일시정지(잠자기) | 무료 창고가 7일 동안 안 쓰이면 스스로 멈추는 것 |
| Project URL | 내 창고의 인터넷 주소 |
| API 키 · Publishable key | 프로그램이 창고에 말을 걸 때 내미는 암호. 초인종. 예전 이름 anon public |
| Secret key | 모든 문을 여는 진짜 열쇠(예전 이름 service_role). 오늘은 안 쓴다 |
| .env 파일 | 주소·열쇠 같은 설정값을 모아 두는 쪽지 파일 |
21.7 안 될 때
| 증상 | 이렇게 |
|---|---|
| GitHub 계정이 없다 | 20장으로 가서 Google 계정으로 먼저 만듭니다. 5분이면 됩니다 |
| GitHub 로그인 화면에서 막힌다 | 비밀번호 칸이 아니라 아래 Continue with Google 을 누릅니다 |
| 영어라 뭘 눌러야 할지 모르겠다 | 어디를 눌러야 되는지 그림으로 알려줘 |
| 창고 비밀번호를 까먹었다 | 괜찮습니다. 오늘은 쓸 일이 없습니다 |
| 지역을 Seoul로 안 골랐다 | 지역을 잘못 골랐어 — 창고를 새로 만들어야 합니다. 지금 바로 말하세요 |
| 5분 넘게 막힌다 | 강사·조교에게 손을 드세요. 전체가 멈추지 않게 따로 봅니다 |
| 며칠 뒤 “어제까지 됐는데 안 돼요” | 창고가 잠든 겁니다. supabase.com 에 들어가 깨우면 됩니다 |