개발일지
직접 만든 작은 도구와 웹앱을 어떻게 짰는지 적어둔 기록.
머릿속에만 있던 걸, 처음으로 값을 매겨 팔아보기로 했어요
그동안 뭔가를 '만들어서' 세상에 내놓기만 했는데, 이번엔 조금 달라요. 제 머릿속에 흩어져 있던 경험과 판단을, 값이 매겨지는 상품으로 처음 꺼내보기로 했거든요. 크몽에 'AI 리서치 대행'을 걸어보기로 한 이야기와, 무형의 것을 상품으로 만든다는 낯선 마음을 적어둡니다.
같은 실수를 반복하던 내 조수에게
매일 아침 우리는 처음 만난 사이가 됐어요. 똑똑하지만 어제를 기억하지 못하는 조수에게, 나는 '어제'를 만들어주기로 했습니다. AI에게 기억과 이름을 지어주고 나서 일하는 게 한결 덜 외로워진 이야기.
매주 목요일, 회의 하나하나를 다 적어야 하는 자리가 생겼어요
새로 작은 프로젝트 팀이 꾸려지면서 매주 목요일에 회의를 하게 됐어요. 사소한 것 하나까지 다 기록을 남겨야 하는 회의라, 듣는 동시에 받아적다 보면 꼭 뭔가를 놓치게 되더라고요. 그래서 녹음만 해두면 받아쓰고 정리까지 해주는 작은 도구를 직접 만들었어요. 욕심부리지 않고 딱 필요한 것만 넣었더니 오히려 편했던 이야기를 적어둡니다.
주휴수당을 자동으로 계산하는 급여 시트 만들기 — 제일 어려웠던 건 '한 주 묶기'
여러 매장에서 알바 급여를 챙기다 보니, 주휴수당 계산이 매번 손이 가서 엑셀 시트로 자동화했어요. 시급 곱하기는 쉬운데 의외로 까다로운 건 '근무 기록을 주 단위로 묶는 것'과 '한 사람이 두 매장에서 일한 시간을 합치는 것'이었어요. 수식으로 어떻게 풀었는지 적어둡니다.
페이지를 넘겨도 음악이 안 끊기게 — 방탈출 '히든페이지' 만든 이야기
방탈출 테마가 끝난 뒤에도 이어서 즐기는 모바일 히든페이지를 직접 만들었어요. 굿즈 QR로 들어오는 스토리 페이지인데, 만들면서 제일 골치 아팠던 건 '페이지를 넘길 때마다 배경음악이 처음부터 다시 시작되는' 문제였어요. iframe 셸 구조로 음악을 안 끊기게 만든 과정을 적어둡니다.
쿠폰을 두 번 쓰면 어떻게 막죠? — 1회용 디지털 쿠폰 만들기
매장에서 쓰던 종이 쿠폰을 디지털로 바꾸면서 QR 쿠폰 발행 프로그램을 직접 만들었어요. 제일 신경 쓴 건 '한 번 쓴 쿠폰을 두 번 못 쓰게' 막는 거였어요. 손님이 화면을 캡처해두거나, 두 직원이 동시에 스캔해도 딱 한 번만 인정되게 하는 방법을 적어둡니다.
입금 확인을 컴퓨터에게 맡기기 — 틀리면 안 되는 자동화를 만든 기록
예약금 입금이 들어오면 홈페이지 예약을 자동으로 승인해주는 프로그램을 만들었어요. 돈이 걸린 자동화라 '빠른 것'보다 '안 틀리는 것'이 훨씬 중요했습니다. 알림을 읽고, 파싱하고, 매칭하는 세 단계를 어떻게 안전하게 짰는지 적어둡니다.
잘 돌던 화면이 저사양 태블릿에서 멈추다시피 한 이유
손님이 쓰는 보급형 태블릿에서 키보드가 1~2fps로 끊겼어요. 범인은 예쁘게 보이려고 넣은 backdrop-filter 블러와 클릭 지연이었습니다. 무엇을 덜어내서 다시 가볍게 만들었는지 정리했어요.
두 아이 먹이다 직접 만든 이유식·유아반찬 앱 — 식단표부터 장보기까지
연년생 두 아이를 먹이며 매일 같은 데서 막혔습니다. 월령 맞는 반찬 찾기, 매일 메뉴 고민, 일주일 장보기. 그 불편을 풀려고 직접 만든 앱 '아이반찬'과, 이유식 단계·안전 정보까지 정리해 봤어요.
코딩은 전문가만 하는 거라 믿었습니다 — 그러다 직접 만들게 된 이야기
죽었다 깨어나도 못할 거라 단정했던 일을, 어쩌다 직접 해보게 됐는지. 못한다는 믿음이 깨지고 나서 생긴 작은 변화에 대한 기록.
매달 돈 내던 출퇴근 앱, 직접 만들고 나서 달라진 것들
유료 서비스 쓰다가 직접 만든 사람의 솔직한 비교. 기능이 많은 게 꼭 좋은 건 아니더라고요.
인스타 광고 하나가 시작이었어요 — 카카오 자동발송 만든 이야기
스크롤 하다가 우연히 본 광고가 '나도 이거 만들어볼 수 있겠다'는 생각으로 이어졌어요. 매일 아침 카카오톡으로 일본어 단어가 자동으로 오도록 만든 과정을 정리했습니다.
인터넷이 막힌 컴퓨터에 키를 쏘는 법 — 매장용 원격 콘솔 만들기
각 방에 따로 떨어진 컴퓨터들을, 한 자리에서 버튼 하나로 제어하는 작은 콘솔을 만들었어요. 인터넷을 일부러 끊어 둔 컴퓨터에 어떻게 키를 보내는지, 격리된 와이파이 위에서 WebSocket으로 통신하는 구조를 정리했습니다.
출퇴근 웹앱 개발일지 (5) — Cron과 푸시, 명세서 이메일 자동화로 마무리
사람이 누르지 않아도 알아서 도는 자동화 세 가지. 자정에 퇴근 안 찍은 직원을 잡아내는 Cron, 관리자에게 바로 띄우는 웹푸시, 그리고 급여명세서 이메일 발송까지. 5편 시리즈를 마무리합니다.
출퇴근 웹앱 개발일지 (4) — Vercel 함수 12개 한도 안에서 버티기
무료 플랜의 서버리스 함수 12개 제한 안에서 기능을 어떻게 다 욱여넣었는지. [action].js 한 파일로 여러 엔드포인트를 합치는 동적 라우트 패턴과 그 트레이드오프를 정리합니다.
출퇴근 웹앱 개발일지 (3) — 급여명세서 모듈
시급제·월급제·주휴수당이 섞여 있고, 한 사람이 여러 매장에서 일하면 명세서를 한 장으로 통합해야 합니다. 출퇴근 기록을 급여로 환산하는 계산 구조를 정리합니다.
출퇴근 웹앱 개발일지 (2) — 인증과 세션
bcrypt + JWT만으로는 '관리자가 직원을 즉시 강제 로그아웃'이 안 됩니다. 왜 안 되는지, sessions 테이블을 추가해 어떻게 풀었는지 정리합니다.
출퇴근 웹앱 개발일지 (1) — 무엇을 만들었나
직원 출퇴근을 관리하는 웹앱을 직접 짰습니다. 첫 편에서는 어떤 시스템인지, 어떤 스택으로 돌아가는지, 어떤 제약 안에서 만들어졌는지 정리합니다.