원룸을 보고 나오면 금방 잊어버립니다. 그 자리에서 휴대폰으로 체크리스트를 채우면, 쌓인 방들이 카드로 나란히 놓이고 조건에 맞는 것만 골라 볼 수 있습니다.
← → 방향키 · 클릭 · 스와이프 · F 전체화면
집을 세 군데쯤 보고 나면 첫 번째 집이 흐려집니다. 수압이 좋았던 게 어디였는지, 곰팡이를 본 게 어느 집이었는지요. 그래서 그 자리에서 적고, 같은 기준으로 점수를 매깁니다.
방향·채광·수압·콘센트·곰팡이·누수·벌레·엘리베이터·중문·주차 같은 것들을 방에서 나오기 전에 체크합니다. 사진도 찍어서 바로 올릴 수 있습니다.
보증금·월세·도보 시간·점수로 걸러 보고, 원하는 순서로 정렬합니다. 마음에 드는 방 두세 개를 골라 나란히 놓으면, 값이 다른 항목만 색으로 표시됩니다 (차이 비교표).
현장에서 찍은 사진이 자동으로 그 방에 붙습니다. 다른 방에 이미 쓴 사진은 고를 수 없게 막아둬서, 같은 사진을 두 방에 붙이는 실수가 나지 않습니다.
등기부등본·건축물대장 확인, 특약 넣기, 현장에서 두드려볼 것들까지 21가지를 방마다 따로 체크합니다. 어디까지 했는지 진행률로 보입니다.
따로 구축한 서버가 없습니다. 화면은 Vercel이 파일 그대로 내려주고, 데이터는 만든 사람의 구글 시트에, 사진은 같은 계정의 구글 드라이브에 쌓입니다. 저장하고 검사하는 일은 구글이 무료로 돌려주는 작은 프로그램 하나가 맡습니다 (Apps Script 웹앱).
처음에는 비밀번호가 웹페이지 안에 그냥 적혀 있었습니다. 그런데 브라우저가 읽어야 하는 값은 사람도 똑같이 읽을 수 있습니다. 그래서 검사를 구글 쪽 (서버) 으로 옮겼습니다.
알아보기 어렵게 바꿔 적어도 (난독화 · 인코딩) 소용없습니다. 브라우저가 실행하려면 결국 원래 값으로 돌려놔야 하고, 그 과정을 사용자도 똑같이 볼 수 있기 때문입니다.
앞쪽 (1차 · 화면 단계) 은 잘못 누르는 걸 막아주는 편의 장치이고, 뒤쪽 (2차 · 서버 단계) 이 실제 방어선입니다. 앞쪽만 뚫어도 뒤쪽에서 걸리게 해 두었습니다.
체크 항목과 배점은 AI와 대화하면서 정한 뒤 코드에 박아 고정 (규칙 기반 계산) 했습니다. 그래서 쓰는 동안에는 AI를 부르지 않습니다 — 빠르고, 돈이 안 들고, 같은 방은 늘 같은 점수가 나옵니다.
화면에는 “연결에 실패했습니다” (Failed to fetch) 한 줄만 떴는데, 원인이 세 개나 겹쳐 있었습니다 — 함수가 잘못 겹쳐 쓰여 있었고 (중첩 정의), 공개 설정이 잘못돼 있었고 (배포 액세스 권한), 고친 코드가 아직 반영되지 않은 상태였습니다 (재배포 누락).
비밀번호 검사 함수가 실수로 자기 자신 안에 들어가 있어서 (중첩 정의로 호출 불가), 아무 값도 돌려주지 못하고 있었습니다. 결과적으로 비밀번호 없이도 저장이 되던 상태였습니다. 화면만 봐서는 절대 알 수 없었고, 실제로 요청을 보내 응답을 읽어보고서야 드러났습니다.
증상이 하나라고 원인도 하나인 건 아닙니다. “아마 이것 때문일 것”을 멈추고 직접 보내서 답을 읽는 것, 그게 세 개를 갈라낸 유일한 방법이었습니다.
저장소가 공개되어 있어서 누구나 그대로 가져가 자기 구글 계정에 붙여 쓸 수 있습니다. 올리는 길이 두 갈래인데 서로 완전히 따로 놉니다 — 여기서 가장 많이 헷갈립니다.
1. vercel.com/new 에서 위 저장소 고르기
2. 종류는 Other 그대로
3. Deploy 누르기
따로 설정할 게 없습니다. 이후로는 코드를 올릴 때마다 저절로 반영됩니다.
1. 시트 → 확장 프로그램 → Apps Script
2. 준비된 코드 붙여넣기
3. 설정값 (스크립트 속성) 에 비밀번호 넣기
4. 배포할 때 “모든 사용자”로
5. 나온 주소를 WEB_APP_URL 에 넣기
“연결 실패” (Failed to fetch) 가 뜨면 → 구글 쪽이 JSON 대신 오류 페이지를 돌려준 상태입니다.
공개 범위 (액세스 권한) 가 “구글 계정이 있는 사람”으로 되어 있으면 로그인 창으로 튕깁니다. “모든 사용자”여야 합니다.
새 버전으로 다시 배포했는지 확인하세요. 열에 아홉은 이것입니다.