두레이 API로 현장용 앱 만들기 — 폰에서 공정 카드를 옮기기까지
두레이 API 이야기를 해보려고 합니다. 앞 글까지 도면과 CAD였으니 이번엔 결이 좀 달라요.
시작은 “그거 어디까지 됐어요?”였습니다
거래처에서 급하게 전화가 옵니다. 그 물건 지금 어디까지 됐냐고요.
그러면 하던 작업을 멈추고 현장으로 갑니다. 담당자를 찾고, 헤드를 찾고, 물어서 확인하고, 다시 자리로 돌아와 전화를 겁니다. 확인 한 번에 작업 흐름이 통째로 끊겨요. 레이저에 있는지 절곡에 있는지 아는 사람이 현장에만 있었으니까요.
그러던 중 설계팀에 팀원 두 명이 새로 들어오게 됐습니다. 혼자일 땐 진행 상황을 머릿속에 들고 있으면 됐는데, 세 명이 오더를 나눠 맡으면 그게 안 됩니다. 업무일지 체계가 필요해졌어요.
왜 두레이였냐면 — 카카오워크에서 넘어온 이유
사실 처음부터 두레이를 쓴 건 아닙니다. 원래 회사 협업툴은 카카오워크였어요.
쓰다 보니 두 군데서 막혔습니다.
| 걸린 것 | 내용 |
|---|---|
| 용량 | 업무 자료가 쌓이면서 저장 공간이 금방 찼음 |
| API | 프로그램으로 업무를 만들고 옮기는 자동화를 붙이기엔 열려 있는 기능이 부족했음 |
그래서 다시 찾았습니다. 조건은 단순했어요. 20인 미만 중소기업이 부담 없는 가격에, 기능은 빠지지 않을 것. 그리고 제 입장에선 하나가 더 있었죠. API가 제대로 열려 있을 것.
그렇게 고른 게 두레이입니다. 메신저와 업무 보드, 드라이브가 한 곳에 있고, 업무를 만들고 옮기고 태그를 다는 걸 전부 API로 할 수 있었어요. 이 글이 가능했던 것도 결국 이 선택 덕분입니다.
업무일지를 노션에 따로 둘까도 생각했습니다. 그런데 다들 이미 두레이에 로그인해 있었어요. 새 도구를 하나 더 들이는 것보다 다들 이미 들어와 있는 곳에 얹는 게 낫다고 봤습니다.
그래서 두레이 위에 두 가지를 만들었습니다.
- 오더 등록 프로그램 — 발주 한 건마다 오더번호를 매기고 두레이에 업무 카드를 만듭니다. 여러 명이 동시에 등록해도 번호가 겹치지 않게 두레이를 번호 카운터로 써요
- 공정 보드 — 발주 → 레이저 → 작업완료 → 출고완료. 카드를 끌어다 옮기면 지금 어디까지 갔는지가 한눈에 보이는 화면입니다

이제 전화가 오면 보드만 보면 될 줄 알았습니다.
그런데 만들어놓고 얼마 안 가서 알았습니다. 그 화면을 보는 사람이 저밖에 없었습니다.
현장은 PC 앞에 없습니다
당연한 얘기인데 만들 때는 생각을 못 했어요. 레이저 돌리는 사람, 절곡 치는 사람, 출고 나가는 사람 — 이 사람들은 하루 종일 기계 옆에 있습니다. 사무실에 앉아 브라우저를 켤 일이 없어요.
그래서 공정이 끝나도 보드는 그대로였습니다. 누가 사무실에 들어와서 말로 전하면 제가 카드를 옮겼고요. 보드는 현황판이 아니라 제 기록장이 됐습니다.
현장 사람들 손에는 폰이 있습니다. 답은 거기 있었어요.
모바일 웹으로 보면 되지 않냐면
협업툴에도 모바일 앱이 있습니다. 그런데 현장에서 안 씁니다.
| 걸리는 것 | 내용 |
|---|---|
| 화면 | 플래닝 보드가 폰 화면에 안 맞음. 가로로 긁어야 함 |
| 깊이 | 로그인 → 프로젝트 → 보드까지 네댓 번 눌러야 도착 |
| 범위 | 쓸 일 없는 기능이 대부분. 명세서처럼 보면 안 되는 것도 섞여 있음 |
현장에서 필요한 건 딱 하나입니다. 내 카드를 다음 단계로 미는 것. 기능이 많은 게 아니라 그 하나가 두 번 터치로 끝나야 해요.
그래서 직접 만들기로 했습니다. 앱 개발은 처음이었습니다.
두레이 API를 어디서 부를 것인가
처음엔 폰에서 바로 두레이 API를 부르면 되는 줄 알았습니다. 화면만 만들면 되니까요.
안 됩니다. API 토큰이 폰 안에 들어가야 하거든요.
토큰은 비밀번호나 마찬가지입니다. 그게 들어 있는 화면을 일곱 명한테 나눠주면, 한 명이 폰을 잃어버리는 순간 회사 업무 데이터 전체가 열립니다. 폰에 둘 수 있는 물건이 아니에요.
그래서 구조를 이렇게 잡았습니다.

폰은 “3번 카드를 작업완료로 옮겨줘”라고만 말하고, 실제 호출은 서버가 합니다. 폰에는 토큰이 없어요. 권한을 거는 자리도 자연히 서버 한 곳으로 모입니다.
서버를 어디에 둘 것인가
처음엔 사무실 PC에서 돌렸습니다. 되긴 되는데 제가 퇴근하면서 PC를 끄면 앱도 죽어요.
클라우드를 빌릴까 했는데, 생각해보니 사무실에 나스가 24시간 켜져 있었습니다. 서버를 거기로 옮겼습니다. 도커로 올리고, 나스가 원래 제공하는 주소 서비스와 리버스 프록시로 외부에서 들어오게 했어요. 추가 비용은 0원입니다.
현장은 와이파이로 돌립니다.
첫 버전은 이랬습니다. 브라우저 주소창이 그대로 보이고, 단계 탭과 카드만 있었어요.

제일 어려웠던 건 코드가 아니라 권한이었습니다
기능은 금방 만들었습니다. 몇 주를 잡아먹은 건 “누가 무엇을 볼 것인가”였어요.
| 역할 | 보이는 범위 |
|---|---|
| 관리자 | 전체 + 사용자 권한 변경 |
| 팀원 | 전체 카드 |
| 현장 | 출고완료 단계까지, 카드 이동 가능 |
| 손님(거래처) | 자기 회사 카드만, 보기 전용 |
이 표가 나오기까지 두 번 갈아엎었습니다.
처음엔 담당자별로 보이게 했어요. 자기 카드만 보이면 깔끔할 거라고 생각했거든요. 써보니 아무도 전체를 못 봅니다. 누가 쉬는 날이면 그 사람 카드는 아무한테도 안 보여요. 운영이 안 됐습니다. 담당자 연결을 폐지하고 팀원은 전부 보게 바꿨습니다.
현장 쪽에서는 “명세서는 빼달라”고 했습니다. 금액이 보이는 화면이라 부담스럽다고요. 맞는 말이라 현장 계정은 아예 토큰 없이, 출고완료까지만 보이게 분리했습니다.
손님 계정은 거래처가 자기 물건이 어디까지 갔는지 보는 용도입니다. 전화로 “그거 어디까지 됐어요?”를 받는 횟수를 줄여보려고요. 클릭은 안 되게 막아뒀습니다.
지금 화면은 이렇습니다. 홈 화면에 설치해서 앱처럼 열고, 공정과 자재 탭을 오가며, 단계 탭을 밀어서 카드를 봅니다. 납기에 따라 카드 왼쪽 띠 색이 달라져서 급한 건이 먼저 눈에 들어와요.

지뢰 — 두레이 API를 붙이며 밟은 것들
밟은 순서대로 적습니다. ①~④는 사무실에서 쓰는 오더 등록 프로그램을 만들 때, ⑤~⑥은 앱을 현장에 붙이고 실제로 굴리면서 나온 것들이에요.
① 담당자 목록이 0명으로 나왔습니다
프로젝트 멤버를 불러와 드롭다운에 넣었는데 계속 비어 있었어요.
응답을 그대로 찍어보니 멤버 아이디와 역할만 있고 이름이 없었습니다. 이름은 다른 엔드포인트로 한 번 더 물어봐야 했어요. 문서만 보고 “멤버 목록이니 이름이 있겠지” 하고 넘어간 게 원인입니다.
모르는 API는 응답을 통째로 한 번 찍어보고 시작하세요. 이거 하나로 반나절을 아낍니다.
② “Color can not be empty”
업체명과 오더번호를 태그로 자동으로 만들려고 했더니 400이 돌아왔습니다. 색을 안 보냈다고요.
색을 지정하라는 안내가 제가 본 문서엔 없었습니다. 기존 태그를 하나 읽어서 거기 쓰인 색 값을 그대로 넣어주니 통과했어요. 이미 돌아가는 데이터를 흉내 내는 게 문서보다 빠를 때가 있습니다.
③ 파일 링크가 안 열립니다 — 세 번 막혔습니다
업무에 명세서 원본 위치를 적어두고 클릭하면 열리게 하고 싶었습니다. 이게 제일 길었어요.
| 시도 | 결과 |
|---|---|
| 나스 경로를 그대로 적기 | 클릭하면 두레이 메인으로 튐. 역슬래시 경로를 주소의 일부로 오해함 |
file:// 링크 | 브라우저가 막음. 보안 페이지에서 로컬 경로로 못 나감 |
| 커스텀 프로토콜 등록 | 확인 팝업조차 안 뜸. 두레이가 본문에서 http가 아닌 링크를 무효화 |
| 나스 공유링크 API | 성공 |
네 번째가 답이었습니다. 나스에 파일별 공유링크를 만들어주는 API가 있어서, 경로를 넣으면 진짜 https 주소를 받아오게 했습니다. 클릭하면 바로 열려요.
브라우저가 막는 건 우회하는 게 아니라 다른 길을 찾는 게 맞습니다. 세 번째 시도에 쓴 시간이 아까웠어요.
④ 집에서 켰더니 화면이 하얗게 씻겼습니다
오더 등록 프로그램을 집 컴퓨터에서 켰더니 글자가 안 보였습니다. 회사에서는 멀쩡했는데요. 버그인 줄 알고 한참 봤어요.
테마를 자동으로 둔 게 원인이었습니다. 회사 PC는 다크 모드, 집은 라이트 모드. 윈도우 설정을 따라간 거라 버그가 아니라 설계대로 동작한 것이었죠.
다크로 고정했습니다. 어느 컴퓨터에서 켜도 같게 보이는 쪽이 낫더군요.
⑤ 업체 태그가 갑자기 두 개씩 생겼습니다
잘 돌던 업체 태그가 어느 날부터 중복으로 생기기 시작했습니다. 같은 업체인데 태그가 두 개, 세 개로 갈라졌어요.
원인은 오더번호 태그였습니다. 오더마다 태그가 하나씩 쌓이다 보니 태그가 100개를 넘었는데, 목록 API는 한 번에 100개까지만 돌려줍니다. 업체 태그가 그 뒤로 밀려나자 “없는 태그”로 판단하고 새로 만든 거예요.
목록을 끝까지 넘겨 읽게 고쳤고, 하는 김에 업체명 표기도 맞췄습니다. 띄어쓰기, (주)와 ㈜, 주식회사 — 사람은 같은 업체로 읽지만 프로그램은 다른 이름으로 봅니다.
목록 API는 처음엔 다 나오다가 데이터가 쌓이면 잘립니다. 한 달은 굴려봐야 드러나는 지뢰예요.
⑥ 고친 링크가 달이 바뀌자 다시 끊겼습니다
③에서 겨우 살린 공유링크가 한 달쯤 지나자 무더기로 죽었습니다.
설계팀은 달이 지나면 업체 폴더 안에 “9월” 같은 월별 폴더를 만들어 지난 파일을 몰아넣습니다. 파일 위치가 바뀌니 링크가 가리키던 곳이 비어버린 거예요.
작업 방식을 바꾸라고 하지 않았습니다. 폴더 정리는 설계팀이 오래 해온 방식이고, 링크 때문에 그걸 바꾸게 하면 그게 더 큰 비용이에요. 대신 나스 쪽 서버가 주기적으로 끊긴 링크를 찾아 새 위치로 고쳐놓게 했습니다.
사람을 시스템에 맞추는 것보다 시스템이 사람을 따라가게 하는 쪽이 오래 갑니다.
써보니 — 줄어든 건 시간이 아니라 확인 비용이었습니다
카드 하나 옮기는 시간은 원래도 몇 초였습니다. 그걸 줄이려고 만든 게 아니에요.
달라진 건 처음에 쓴 그 전화입니다. 거래처에서 “어디까지 됐어요?” 하고 물어오면, 예전엔 일어나서 현장에 가 사람을 찾아야 했어요. 지금은 앱을 열어 카드가 어느 칸에 있는지 보고 바로 답합니다. 작업을 멈추고 자리를 뜨는 일이 사라졌습니다.
앱을 열 필요조차 없을 때도 있습니다. 카드가 다음 단계로 넘어가면 폰으로 알림이 옵니다. “작업이 시작되었습니다”, “레이저에서 작업완료 공정으로 변경되었습니다” 같은 식이에요. 현장에 묻기 전에 폰이 먼저 알려줍니다.

구두와 전화로 돌던 확인이 화면 하나로 바뀐 것, 그게 이 앱이 한 일의 전부이자 가장 큰 일입니다.
스마트팩토리 지원사업은 두 번 떨어졌습니다
털어놓자면, 처음부터 직접 만들 생각은 아니었습니다. 회사에서 삼성 스마트팩토리 지원사업에 두 번 지원했고, 그때 제가 담당자였어요. CAM 업체와 함께 준비했는데 두 번 다 떨어졌습니다. 이유는 끝내 듣지 못했어요.
거창한 스마트팩토리 솔루션은 들이지 못했습니다. 그래도 공정이 어디까지 왔는지를 현장과 사무실, 거래처가 같은 화면으로 보는 것까지는 이미 쓰던 협업툴과 사내 나스로 갈 수 있었어요. 중소기업 스마트팩토리의 첫걸음이 꼭 지원사업일 필요는 없다는 걸 이번에 알았습니다.
아직 못 푼 것
자재 현황판은 앱에 붙여서 시험 운영 중입니다. 현장 칠판에 수기로 지우고 쓰던 자재 현황을 앱으로 옮겼는데, 오더를 넣을 때 원장이 자동으로 빠지게 하는 방식을 고민하고 있어요. 이건 따로 한 편으로 쓰겠습니다.
이 글에서 가져갈 것
- 좋은 보드를 만들어도 보는 사람이 그 자리에 없으면 기록장이 됩니다 — 도구보다 사용자가 서 있는 자리가 먼저
- API 토큰은 절대 사용자 기기에 두지 않습니다. 서버를 한 겹 두면 권한을 거는 자리도 거기로 모임
- 24시간 켜져 있는 장비가 사내에 이미 있다면 클라우드부터 알아볼 필요가 없습니다
- 권한 설계에서 “깔끔한 구조”와 “현장이 돌아가는 구조”는 다릅니다 — 담당자별로 쪼갰더니 아무도 전체를 못 봤음
- 모르는 API는 응답을 통째로 찍어보고, 목록 API는 끝까지 넘겨 읽을 것
- 브라우저가 막는 건 우회가 아니라 다른 길로
- 사람의 작업 방식을 바꾸기보다 시스템이 따라가게 — 고친 링크도 폴더 정리 한 번에 다시 끊깁니다
다음 글 예고
다시 판금으로 돌아갑니다. 중량 이야기예요.
발주서에 적힌 중량과 실제로 재단해서 나오는 중량이 다를 때가 있습니다. 전개폭 산정 기준이 달라서요. 발주서·작업지시서·견적서가 서로 다른 중량을 들고 있으면 정산에서 반드시 문제가 됩니다.
어디에 맞출 것인가, 그리고 왜 그렇게 정했는가를 씁니다.
비슷한 작업 때문에 시간을 뺏기고 계신가요
발주서 정리, BOM 작성, 송장 발행처럼 매번 반복되는 사무 작업이라면 자동화할 수 있습니다.
어떤 작업을 몇 번 반복하시는지만 알려주세요.
판금하는 탄즈 — 레이저 절단·절곡 9년차. 반복 작업이 싫어서 AI와 자동화로 도망치는 중.