이 가게의 이야기
2019년 겨울, 서울의 로스터리에서 일하다 고향 양림동으로 돌아왔습니다. 단골들께는 늘 그 주에 볶은 원두만 내립니다.
주인이 8월 20일에 적었어요
Fable · 골목 가게 한 장 · 장소 콘솔 계열 대조 · 2026-08-07
"더 좋다"는 칸이 적다는 뜻이 아니다. 장소 등록·관리 콘솔 계열이 구조적으로 못 하는 두 가지 — ① 손님을 아는 것(익명 트래픽의 별점 평균이 아니라, 몸이 가야 찍히는 아는 소수의 반복), ② 여는 손이 있는 것(플랫폼이 아니라 실명의 조직이 골목 명판에 이름을 걸고 연다) — 를 가게 한 장이 보여주는 것이다. 단, 오늘 실측은 발걸음 0이므로 ①은 숫자가 아니라 비워 둔 자리로 설계하고(사건이 일어난 뒤에만 인쇄), 오늘 이미 참인 ②와 시제(우벨이 적은 날짜)로 먼저 이긴다. 단순함 — 3분 채우기, 빈 칸은 안 그림 — 은 목표가 아니라 이 둘이 보이게 하는 수단이다.
감독의 감(부담이 적고 · 서로 달라 보이고 · 안 채워도 부끄럽지 않다)은 검증 결과 "단순함"의 합격선으로는 맞고, "더 좋다"의 합격선으로는 부족하다. 그 셋은 전부 뺄셈이라, 뺄셈만으로는 잘 만든 콘솔의 축소판이 될 뿐이다.
| 축 | 장소 등록·관리 콘솔 계열 (카테고리 일반 성질) | 우벨 가게 한 장 | 오늘 상태 |
|---|---|---|---|
| 믿음의 신호 | 모르는 다수의 별점·리뷰 평균 — 말은 싸고 조작도 싸다 | 아는 소수의 반복 — 발걸음 3번이 단골. 몸이 가야 찍힌다. 별점·후기는 만들지 않는다 | 자리만 — 발걸음 0 |
| 여는 손 | 플랫폼이 등록을 받는다 — 페이지에 보증인이 없다 | 실명의 조직이 골목 명판에 이름을 걸고 연다 — 골목마다 여는 손이 다르다 | 오늘 참 — golmokHost 라이브 |
| 축 | "무엇을" — 검색·카테고리·순위 | "누구에게서" — 문패·오늘 한마디·단골 | 오늘 참 — 카드 시제 배포됨 |
| 채우는 부담 | 관리 콘솔형 다항목 입력 — 그래서 대부분 안 채워진다 (항목 수 등 세부는 확인 못 함) | 3분 — 상호·동네·시간·전화·한마디. 나머지는 평생 선택 | 2부에서 경계 확정 |
| 빈 가게 | 같은 템플릿의 빈 칸이 미완성으로 보인다 (그 계열의 빈 상태 처리 세부는 확인 못 함) | 비면 칸을 안 그린다 — 대신 우벨이 적은 날짜가 선다. 빈 가게도 증서다 | 5부가 본체 |
| 서로 달라 보이는가 | 같은 템플릿 · 무시제 재료 — 이 가게와 저 가게가 구조적으로 같다 | 다름은 시제에서 온다 — 오늘 한마디·수확·기록 줄이 가게마다 다른 날짜를 단다 | 어제 배포(카드 3줄) |
| 돈의 자리 | 광고·노출 상품이 목록과 상단에 선다 | 골목의 크기·순서는 영영 안 판다 — 파는 것은 단면 안의 깊이뿐. 수수료 0 | 구조 잠금 |
| 가게의 이웃 | 가게는 검색 결과로 선다 — 옆 결과와 남남이다 | 가게는 골목·사랑방·광장과 같은 세계에 선다 — 동네를 아는 김에 가게를 안다 | 마당 한 세계 라이브 |
기능적 아이디어는 배우되, 무엇을 배우는가.
영업시간을 보여준다 · 길찾기가 있다 · 전화 버튼이 있다 · 메뉴판이 있다 — 이 기능들은 보호 대상이 아니고, 우리 화면에 이미 전부 있다(찾아가는 줄·다루는 것). 배울 것은 "무엇을 해결하는가"까지고, 생김새·색·레이아웃·아이콘은 우리 언어 (잉크코발트 · 문패 · 말풍선 · 상인방)로 새로 지었다. 이 문서 어디에도 그 계열의 상표명·초록·화면 복제가 없는 이유다.
④ 증언의 자격 — 왜 같은 "정보 줄"이 저쪽에선 광고고 여기선 증서인가.
쇼호스트 판정 그대로 — "판매로 돈을 벌지 않는 자가, 판매보다 먼저 있던 기록을, 날짜와 함께 읽어 주는 것." 콘솔 계열의 노출 지면은 파는 물건이라 그 위의 문장은 구조적으로 광고다. 우벨은 수수료 0 · 골목 순서 비매품이라 "우벨이 아는 것"의 날짜 몇 줄이 증언일 수 있다. 돈 낸 가게와 안 낸 가게를 골목 화면에서 구별할 방법이 존재하지 않는 것 — 그것이 이 페이지의 자격이다.
단순함을 칸 수로 세지 않는다. 정의는 하나 — 빈 칸이 빚이 되지 않는 구조. 경계선은 손님의 필요 순서와 일치한다: 3분 칸은 전부 "발걸음에 필요한 사실"이고, 평생 칸은 전부 "머무는 사람의 깊이"다.
| 무리 | 칸 | DB | 왜 이 무리인가 |
|---|---|---|---|
| 처음 3분 계산대 앞 · 심방자와 함께 | 상호 · 업종 | markets.name · category | 문패가 이 둘에서 자동으로 선다 — 글씨·색·업종 글리프 전부 |
| 동네 · 주소 | region · address | 주소를 적으면 길찾기가 선다(주소→좌표는 이미 지음) | |
| 문 여는 때 | hours | "지금 열려 있음"의 재료 — 발걸음의 첫 질문 | |
| 전화 | phone | 오프라인 가게의 구매 버튼 | |
| 오늘 한마디 | today_note · today_note_at | 사장님 입에서 나온 한 문장을 그 자리에서 받아 적는다 | |
| 오늘 나온 것 한 장 | today_photo_url | 심방자가 찍는다 — 물건만, 사람 없이(초상권) | |
| 평생 선택 영영 안 채워도 부끄럽지 않다 | 차림표 | market_listings.title · unit_price · unit | 비면 섹션 자체가 없다 — 미완성이 아니라 부재 |
| 메뉴에 붙는 주인의 말 | market_listings.description | 칸은 이미 있고 화면도 이미 읽는다 — 강요하지 않는다 | |
| 가게의 내력 | story · story_at | 한 번 쓰고 오래 두는 글 — 물음 셋이 기다린다 | |
| 가게 사진 | image_url | 문패는 사진 없이 완성이다(철칙 ①·②) — 사진은 와도 문패 뒤에 걸린다 | |
| 0분 — 우벨이 적는다 아무도 안 채우는데 선다 | 문패(글씨·색·글리프) | name에서 계산 | munpaeTexts · toneOf · glyphOf |
| 기록 줄 | created_at | "8월 8일에 문패를 걸었어요" — 빈 가게의 유일한 문장 | |
| 열림·닫힘 · 제철 라벨 | hours · harvest_date에서 계산 | isOpenNow · harvestLabel — 7일 지나면 침묵 | |
| 우벨이 아는 것 | 날짜 넷의 합성 | knownFacts — 주인이 못 쓰는 문장들, 증서의 인지(印紙) |
이 경계가 왜 설계의 본체인가.
콘솔 계열의 병은 칸이 많아서가 아니라 모든 칸이 같은 무게로 사장님을 기다려서다 — 안 채운 칸이 전부 빚으로 쌓인다. 여기선 3분 무리만 사람을 기다리고, 평생 무리는 비면 화면에서 존재 자체가 사라지고, 0분 무리는 우벨이 적는다. 그래서 "안 채워도 부끄럽지 않다"가 문구가 아니라 구조가 된다. 그리고 0분 무리가 1부의 ②를 실어 나른다 — 내가 쓰지 않은 기록이 내 화면에 서는 것, 그것이 전단과 증서의 차이다.
위에서 아래로: 말(사건) → 찾아가는 길(발걸음) → 물건(정보) → 내력(이야기) → 공증의 벽(기록) → 발걸음 버튼. 찾아가는 줄이 물건보다 위라는 기존 원칙은 손대지 않는다 — 이 화면의 전환은 장바구니가 아니라 발걸음이다.
‹ 골목
로이스커피
다루는 것
이 가게의 이야기
2019년 겨울, 서울의 로스터리에서 일하다 고향 양림동으로 돌아왔습니다. 단골들께는 늘 그 주에 볶은 원두만 내립니다.
주인이 8월 20일에 적었어요
우벨이 아는 것
⑨상인방은 새 줄이고, 이름은 없다. "가게 화면에 교회명 금지 — 보증은 골목 명판 한 줄까지"(PIPA 선). 그래서 가게 한 장의 상인방은 보증된 골목에 서 있다는 사실만 말하고, 여는 손의 이름은 "골목 명판 ›" 문 너머(골목 목록의 명판)에서 읽힌다. 어제 자랑의 방 목업이 가게 화면에 조직명을 인쇄한 것을 이 선에 맞춰 정정한다.
⑨+⑩이 공증의 벽이다. 페이지의 바닥 — 증서의 인지는 마지막에 찍힌다. 여기 서는 문장은 전부 주인이 못 쓰는 문장이다.
| # | 줄 | 어떤 DB 행에서 나오는가 | 비면 |
|---|---|---|---|
| 1 | ‹ 골목 | 고정 — 가게는 골목의 방이다 | — |
| 2 | 문패 · 상호 · 업종·동네 | name · category · region — 글씨는 munpaeTexts, 색은 toneOf. 오늘 한마디가 있으면 코발트 링 | 안 빈다 — 3분 무리 |
| 3 | 말 줄(오늘 한마디) | today_note · today_note_at — 날짜는 noteWhenLabel("오늘 한마디"/"8월 5일의 한마디") | intro를 옅게, 그것도 없으면 안 그림 |
| 4 | 오늘 나온 것 | today_photo_url(000183) — 한마디와 한 몸 | 안 그림 |
| 5 | 찾아가는 줄 | hours · address · phone + isOpenNow — 물건보다 반드시 위 | 시간 없으면 "시간은 전화로 물어보세요" |
| 6 | 발걸음 버튼 | phone · map_url + ShareCard(명함 — 서버 0·로그인 0) | 지도 없으면 주소 복사로 대체 |
| 7 | 다루는 것(차림표) | market_listings.title · description · unit_price · unit · harvest_date — 새 표 없음. 제철 라벨은 7일 지나면 침묵 | 섹션 안 그림 |
| 8 | 이 가게의 이야기 | story · story_at(000208) + storyWrittenLine 서명 | 섹션 안 그림 |
| 9 | 상인방(이름 없이) | region — "양림동 골목에 선 문패예요" + 골목 명판으로 가는 문. 유일한 신설 줄 | 안 빈다 — 전 가게가 골목에 선다 |
| 10 | 우벨이 아는 것 | knownFacts — created_at · story_at · harvest_date · today_note_at | 안 빈다 — created_at은 항상 있다 |
| 11 | 다녀왔어요 | VisitBar — 비로그인은 폰(localStorage), 로그인은 visit RPC. 도장 3번=단골, 예고 없이 | 안 빈다(진짜 가게) — 본보기는 개설 문으로 교체 |
1부의 ①(손님을 아는 것)은 이 화면 어디에 있는가.
⑪뿐이다 — 그리고 그거면 된다. 발걸음 0인 오늘, 손님 화면에 단골·발걸음의 숫자는 한 픽셀도 안 그린다("단골 3분이 계세요"는 참말이어도 결핍의 자백이다). 첫 손님이 세 번째로 "다녀왔어요"를 누르는 날, 그 손님의 카드에만 "단골" 두 글자가 예고 없이 선다 — 진행바도 "1/3"도 없다. ①의 자리는 이렇게 비워 둔다: 버튼은 오늘부터 있고, 문장은 사건 뒤에만 인쇄된다.
주인용 관리 화면을 따로 짓지 않는다 — 사장님도 손님과 같은 한 장을 본다.
다른 것은 딱 하나: 심방 문자의 문 열쇠(?door=…)로 들어오면
분필 칸이 열린다. 로그인 없음 · 설치 없음 · 비밀번호 없음.
‹ 골목
로이스커피
주인에게만 보이는 분필 글씨
오늘 한마디를 여기서 고쳐 쓸 수 있어요. 손님에게는 이 칸이 보이지 않아요.
우벨이 아는 것
채움 안내는 주인의 눈에만. 손님 화면의 침묵(빈 칸을 안 그림)과 주인 화면의 할 일 네 줄은 같은 데이터의 두 얼굴이다. 넷 중 셋은 있는 문(분필 ChalkNote · /shop/sell · ShareCard)이고, "적어두기"는 /shop/mine의 ShopStoryEditor가 어제 절반 지어진 것 — 분필에서도 같은 문이 열리면 된다.
⚠자동 저장 없음. 버튼 이름부터 동사다 — "걸어두기"(한마디)·"적어두기"(내력). 누르는 것은 사람의 손이고, 누르기 전에는 아무것도 화면에 걸리지 않는다.
3분 채우기 — 내일 계산대 앞의 동선.
오너의 폰으로, 사장님과 마주 서서 한다. 순서는 손님 화면의 위→아래와 같다 — 채우는 차례가 곧 보이는 차례라, 사장님이 화면의 문법을 몸으로 배운다.
가장 중요한 화면. 문패만 걸고 아무것도 더 안 쓴 가게 — 심방 다음 날이 정확히 이 상태다. 규칙: "아직 없어요" 류 결핍 문구 0개. 비면 칸을 안 그린다. 대신 우벨이 적은 날짜 줄과 상인방은 반드시 선다.
✕ 빈 칸을 전시하는 화면 — 이렇게 짓지 않는다
‹ 골목
도로시
메뉴
아직 등록된 메뉴가 없어요
소식
아직 소식이 없어요
리뷰
첫 리뷰를 남겨 보세요
○ 우리의 빈 상태 — 짧아도 완성이다
‹ 골목
도로시
우벨이 아는 것
왼쪽의 병은 빈 칸이 아니라 빈 칸의 전시다. 회색 사진 프레임 · "아직 없어요" 세 번 · "첫 리뷰를 남겨 보세요" — 화면이 결핍을 네 번 자백한다. 같은 템플릿에 빈 칸이 뚫려 있으니 미완성으로 보이고, 미완성은 카톡에 못 보낸다.
오른쪽에는 없는 것에 대한 문장이 0개다. 차림표·이야기 섹션은 그리지 않았고(부재는 침묵), 화면의 모든 문장이 심방 3분의 DB 행이다. 상인방과 날짜 두 줄 — 주인이 못 쓰는 기록 — 이 바닥을 받친다. 이대로 사장님이 카톡에 보내도 부끄럽지 않은 것, 그것이 심방 다음 날의 합격선이다.
최악의 정직한 경우 — 3분마저 다 못 채웠다면.
상호·동네만 있고 시간·전화·한마디가 없어도 화면은 성립한다: 문패 · 이름 · 업종·동네 · "시간은 전화로 물어보세요"(전화 있을 때) 또는 찾아가는 줄의 주소 한 줄 · 상인방 · "8월 8일 이 골목에 문패를 걸었어요" · 다녀왔어요. created_at은 항상 있으므로 공증의 벽은 절대 비지 않는다 — 빈 가게의 마지막 한 줄을 우벨이 책임진다는 것이 0분 무리의 존재 이유다.
X는 지우지 않고 표시한다. 판정 기준은 사건이다 — 칸이 있어도 진짜 주인의 행이 0이면 X.
| 화면 | 문장 | 말하는 사건 | 오늘 DB | X면 무엇이 있어야 O가 되는가 | |
|---|---|---|---|---|---|
| A | 단면 · 벽 | "8월 8일 이 골목에 문패를 걸었어요" | 가게 등록 | O | created_at — 내일 심방이 끝나는 순간 참 |
| B | 단면 · 말 줄 | “오늘 볶은 원두가 나왔어요” + 오늘 한마디 | 주인이 오늘 말함 | O | today_note · today_note_at — 분필·my_shop_note 라이브 |
| C | 단면 | 오늘 나온 것 — 한마디와 함께 올랐어요 | 심방이 오늘 찍음 | O | today_photo_url(000183) |
| D | 단면 · 찾아가는 줄 | "지금 열려 있음" | 이 시각 영업 중 | O | hours+isOpenNow — 본보기에는 영영 안 단다 |
| E | 단면 · 차림표 | "아메리카노 4,500원/잔 — 원두는 매주 화요일에 볶아요" | 주인이 메뉴에 말을 붙여 올림 | X | 칸도 화면도 라이브(market_listings.description) — 진짜 주인의 행이 0. 첫 사장님이 /shop/sell 또는 분필로 올리는 날 O |
| F | 단면 · 내력 | "이 가게의 이야기" 본문 + "주인이 8월 20일에 적었어요" | 주인이 내력을 적음 | X | story · story_at(000208)·my_shop_story 라이브 — 쓴 가게 0곳. 물음 셋이 기다린다 |
| G | 단면 · 상인방 | "양림동 골목에 선 문패예요" | 보증된 골목에 속함 | O | region — 신설 줄 하나. 여는 손의 이름은 골목 명판까지만(PIPA 선) |
| H | 골목 명판 | "이 골목은 실명 조직이 이웃을 위해 엽니다" | 조직이 골목을 엶 | O | golmokHost 라이브 — 1부 ②, 오늘 이미 참인 무기 |
| I | 단면 · 발걸음 | "다녀왔어요"(버튼) | 손님이 다녀간 날을 적음 | O | 비로그인 폰 기록 + visit RPC — 기능 라이브. 버튼은 주장이 아니라 문이다 |
| J | 단면 · 문패 곁 | "단골"(두 글자, 그 손님에게만) | 같은 손님의 발걸음 3번 | X | 발걸음 0 — 첫 손님이 세 번 다녀오는 날 O. 그날까지 이 자리엔 어떤 픽셀도 안 그린다(1부 ①의 비워 둔 자리) |
| K | 단면 | "가게 명함 보내기" | 손님이 골목을 넓힘 | O | ShareCard — 서버 0 · 로그인 0 · 진짜 가게에만 |
| L | 주인 콘솔 | "오늘 발걸음 0 · 단골 0" | 주인의 거울 | O | my_golmok_shops — 0은 주인에게만 보여준다. 손님 화면에는 영영 안 올린다 |
| M | 단면(본보기) | "이 가게는 본보기예요. 진짜 가게가 오면 이 자리를 내어줍니다" | 본보기의 정체와 물갈이 규칙 | O | is_demo + 물갈이 — 라이브 |
구현 각주: 표의 모든 문장은 코드에서 한 문장 = 한 줄(템플릿 리터럴 하나)로 옮긴다 —
"어느 교회가봤는가" 사고 재발 방지. 조사는 전부 lib/korean.ts의 particle()·ro()를 지난다.
가게 화면 어디에도 교회명·실명·종교색은 오르지 않는다.
"별점 4.8 · 리뷰 247개"
기각된 판정 — 모르는 다수의 평균은 또 하나의 말이고 조작이 싸다. 그 자리는 J행(도장 3번)이 기다린다.
"지금 12명이 이 가게를 보고 있어요"
세지도 않는 수. 거짓 활기는 첫 발각과 함께 페이지 전체의 신용을 태운다 — 광장 씨앗 글 192건을 지운 이유와 같다.
"손님이 가는 중이에요"
없는 기능이다. 있는 것은 "다녀왔어요"와 도장 3번뿐 — 발걸음은 다녀온 뒤의 기록이지 예고가 아니다.
"이번 주 양림동 인기 1위"
순위는 골목을 경마장으로 만든다 — 크기·순서를 안 파는 골목에 순위표가 설 자리는 없다.
"단골 3분이 계세요"(손님 화면)
참말이어도 안 쓴다 — 0~2가 대부분인 철에 결핍의 자백이 된다. 숫자는 주인 콘솔에만.
Fable · 골목 가게 한 장 설계 · 2026-08-07
대조는 카테고리 수준으로만 — 이 파일 어디에도 경쟁 제품의 상표·색·화면이 없다.
합격선 둘 — 오늘 참인 것(여는 손·날짜)으로 이기고, 손님을 아는 자리(J행)는 비워 둔 채 기다릴 것.