소개
시도한 것: 로컬(localhost:3000)에서만 돌던 가축 운송 중개 플랫폼 '다타소(DaTaSo)' — '가축 운송판 우버' — 를 실제 누구나 접속 가능한 운영 서비스로 만들고, 나아가 정부(축산물품질평가원) 데이터까지 연동하는 것.
이유:
코드는 다 짰는데 "내 컴퓨터에서만 됨" 상태였습니다. 실제 농가·기사에게 보여주려면 도메인·HTTPS·로그인·배포가 필요했습니다.
단순 데모를 넘어, 실데이터로 검증(실증) 하고 공공 데이터(한우 시세·농장 정보·이력제) 를 붙여 신뢰도와 차별성을 높이고 싶었습니다.
이 모든 걸 개발자 없이 Claude Code 하나로 어디까지 할 수 있는지 확인하고 싶었습니다.
구조: 마켓플레이스(Next.js+Supabase) ↔ 배차엔진 MMS(Streamlit, OR-Tools) ↔ 정부 OpenAPI
진행 방법
사용 도구: Claude Code(에이전트) · Next.js 15 · Supabase(Postgres+Auth) · Vercel · Streamlit · 카카오 로그인 · 축산물품질평가원 OpenAPI · GitHub · Cafe24(도메인)
Claude Code에 자연어로 지시만 하면, 코드 작성→빌드→GitHub 푸시→배포→Supabase MCP로 DB 직접 검증→로그 분석까지 한 번에 진행했습니다. 핵심은 "한 문장 지시 → 에이전트가 끝까지" 였습니다.
1) 운영 보안 강화 — DB 직접 점검·수정
사용한 프롬프트:
"다타소 TMS 이어서. 코드와 메모리 기준으로, DEPLOY.md의 보안강화(4번)부터 도와줘"
Claude가 Supabase MCP로 함수 권한을 직접 조회→"함수 생성 시 PUBLIC에 EXECUTE가 자동 부여돼, anon만 회수론 부족" 이라는 핵심을 짚고 from public, anon 둘 다 회수. [📷 캡처: 함수 권한 anon=false 검증 결과]
2) 카카오 소셜 로그인 — 에러와의 사투
"소셜 로그인(카카오) 설정 이어서 해줘"
에러가 단계별로 바뀌며 디버깅: provider is not enabled(Supabase 토글) → KOE205(동의항목 미설정 스코프=이메일) → KOE006(Redirect URI 불일치) → 성공. [📷 캡처: KOE205 / KOE006 카카오 에러화면 → 로그인 성공 후 온보딩 화면]
이메일 스코프 문제 해결을 위해 코드에서 스코프를 명시:
// src/app/login/page.tsx
await supabase.auth.signInWithOAuth({
provider: "kakao",
options: {
redirectTo: `${location.origin}/auth/callback`,
scopes: "profile_nickname profile_image account_email",
},
});
3) Vercel 배포 + 커스텀 도메인(dataso.kr)
"이것은 로컬환경에서 구현한것이고 실제 배포 운영 해줘" "dataso.kr 회사 소유 도메인. 이것으로 연결해줘"
GitHub 비공개 저장소 생성→Vercel 연동→환경변수→Cafe24 DNS(A 216.198.79.1, CNAME cname.vercel-dns.com) 설정→SSL 자동발급. [📷 캡처: dataso.kr/login HTTPS 정상 화면]
4) 실데이터 20건 실증 — 그리고 버그 발견
"실제로 실증하기 위해서 자료를 생성해서 테스트해줘, 20건"
Claude가 운영 DB에 20건을 생성하고, 플랫폼의 운임·콘솔(합짐)·자동배차 를 전부 돌렸습니다. 그 과정에서 실제 버그를 발견:
콘솔 배차된 차량이
available=false로 안 바뀌어, 같은 트럭이 즉시배차에 중복 배정됨
수정(한 줄 추가):
-- accept_consolidation 함수 마지막에 추가 (auto_dispatch와 동일 동작)
update vehicles set available = false where id = p_vehicle_id;
배차 함수가 auth.uid()(로그인)를 요구해, 인증 컨텍스트를 시뮬레이션해서 테스트한 것도 유용했습니다:
begin;
set local role authenticated;
select set_config('request.jwt.claims','{"sub":"<기사 UUID>","role":"authenticated"}', true);
select accept_consolidation(array[...]::uuid[], '<차량 UUID>');
commit;
[📷 캡처: 20건 운임·콘솔 정산(각 화주 23% 절감)·탄소절감 결과표]
5) 배차엔진(MMS)을 dataso.kr에 통합 — iframe 임베드 + 실시간 연동
"이 앱을 dataso.kr 로 통합해서 운영할수 있도록 해줘" "데이터 소스는 배차 완료된 값이 자동으로 들어가서 구동되어야 합니다"
dataso.kr/dispatch에 Streamlit을 전체화면 임베드하고, 마켓플레이스 자동배차가 MMS '배차완료'로 실시간 반영되도록 새 브리지 함수 추가. [📷 캡처: dataso.kr/dispatch 안에 MMS가 임베드된 화면]
6) 축산물품질평가원 OpenAPI 연동 — 한우 시세·농장 검증
"datalab.mtrace.go.kr 등에서 관련 정보를 모아서 다타소에 붙일 수 있는 것을 찾아줘"
키로 직접 API를 테스트해 실데이터 확인 후 위젯화:
// src/app/api/price/route.ts — 한우 경락시세(축평원 등급판정 OpenAPI)
const res = await fetch(`${BASE}/auct/cattleApperence?${qs}`);
// → 한우 전국 20,958원/kg(▲358·721두), 수도권 19,552, 중부권 21,208 ...
[📷 캡처: 운송요청 폼 상단 '한우 경락 시세' 위젯]
결과와 배운 점
결과 — 하루 만에 로컬 데모 → 완전한 운영 서비스:
🌐 https://dataso.kr 라이브 (HTTPS + 카카오 로그인, 본인 카카오로 로그인 검증)
마켓플레이스(Vercel) · 배차엔진 MMS(Streamlit, dataso.kr 임베드) · DB/인증(Supabase)
git push→ 자동 재배포(CI/CD)실데이터 20건 실증 + 버그 1건 발견·수정
한우 경락시세 위젯(작동) + 농장식별번호 검증(권한 전파 대기)
배운 점 / 꿀팁:
에이전트에게 "검증"까지 시켜라. Claude가 Supabase MCP로 DB를 직접 조회하고, 인증 로그·배포 로그를 읽어 원인을 짚는 게 가장 강력했습니다. "되는지 확인까지 해줘"가 핵심.
외부 API는 키 받기 전에 못 짜는 게 아니다. 받은 즉시
curl로 실응답을 보고 필드를 맞추면 정확합니다. (가이드 문서의typeGbn=0022(소) 같은 코드값은 꼭 문서 확인)에러 메시지를 그대로 주는 게 가장 빠른 디버깅. KOE205/KOE006, 모듈 캐시 에러 등 캡처만 줘도 에이전트가 정확히 잡았습니다.
시행착오:
카카오 KOE205(이메일 동의항목 미설정) → 비즈 앱 전환 + 스코프 조정으로 해결
Streamlit 재배포 후 모듈 캐시로 새 함수 미인식 → 코드에서 강제
importlib.reload로 해결정부 API 승인 직후 권한 전파 지연(
SERVICE ACCESS DENIED) — 코드는 정상, 시간 필요콘솔 배차 차량 중복배정 버그 — 실증 안 했으면 못 잡았을 것
도움이 필요한 부분:
축산물이력제(mtrace) 이력번호 검증은 별도 API 키 발급이 필요합니다(현재 코드만 보존). 발급 경험 있으신 분 팁 환영합니다.
앞으로의 계획:
도매시장/도축장 공식 마스터(
abattoir)로 도착지 고도화, 등급별 시세, 통계 대시보드(수요예측·ESG)농장식별번호 권한 전파 후 농가 출발지 자동 검증 활성화
결제/정산, 방역대(KAHIS) 연계
도움 받은 글 (옵션)
축산물품질평가원 등급판정정보 OpenAPI — https://www.data.go.kr/data/15058923/openapi.do
축산물이력제(mtrace) — https://mtrace.go.kr · 통계누리 https://datalab.mtrace.go.kr
한국어 웹사이트의 스크린샷
컴퓨터 로그인 페이지의 스크린샷
한국 모바일 앱의 스크린샷
중국 도박 웹사이트의 스크린샷
한국어와 중국어 숫자가 표시된 대시보드 스크린샷
한자가 표시된 한국 지도
한국의 위치를 보여주는 지도
많은 정보가 포함된 중국 웹사이트의 스크린샷
중국어와 중국어 문자가 포함된 웹사이트의 스크린샷