ShowYourTime이 Mocco로 도움말, Q&A, 릴리스를 운영하는 방법
Show Your Time은 iOS와 Android용 타임스탬프 카메라 앱입니다. 기상, 운동, 식단처럼 매일 하는 일을 찍으면 사진에 날짜와 시각이 새겨지고, 쌓인 사진으로 얼마나 꾸준했는지 돌아볼 수 있습니다. Mocco를 만드는 fi-workers 팀이 만듭니다.
지금 Show Your Time 사용자가 앱 밖에서 읽거나 팀에 남기는 것은 모두 showyourti.me에 있고, Mocco가 서비스합니다. /docs에는 가이드, /help에는 질문과 답변, /help/changelog에는 업데이트 소식, /ideas에는 기능 제안과 로드맵이 있습니다. 가이드는 앱 저장소에서 코드 옆에 둡니다. 네이티브 코드를 건드리지 않는 수정은 Mocco가 서명된 OTA 업데이트로 휴대폰에 보내고, 새 질문이 올라오면 팀의 Discord 채널에 알림이 옵니다.
필요했던 것
2026년 10월까지 헬프 센터는 호스팅 페이지 빌더인 Slashpage에서 help.showyourti.me로 운영했습니다. 가이드는 앱과 어긋나 있었습니다. 화면, 설정, 제한이 바뀌었는데 페이지는 그대로였습니다. 2024년 11월부터 사용자가 남긴 질문 33개와 업데이트 소식 29개도 같은 사이트에 있었습니다.
팀이 원한 것은 네 가지였습니다.
코드와 함께 바뀌는 가이드. 도움말이 코드 옆에 있으면 화면을 바꾸는 풀 리퀘스트에서 그 가이드도 함께 고칠 수 있습니다.
사용자가 읽는 모든 것을 한곳에: 가이드, Q&A, 변경 로그, 로드맵, 나중에는 문의까지. 검색엔진이
showyourti.me를 평가하도록 자기 도메인에 둡니다.끊기지 않는 링크. 앱, 검색 결과, 공유된 답변이 모두
help.showyourti.me를 가리키고 있었습니다.스토어 심사를 기다리지 않는 수정. React Native 앱의 JavaScript 쪽 버그는 며칠 안에 고치고 싶었습니다.
무엇을 쓰는가
/docs의 헬프 센터, git에서 게시
가이드는 앱 저장소의 docs/help 폴더에 있는 Markdown 26쪽이고, 9개 섹션으로 나뉘며 한국어로 씁니다. help.json 매니페스트가 섹션과 순서를 정하고, 섹션마다 스크린샷을 images 폴더에 두며, glossary.csv에는 번역할 때 지킬 제품 용어를 적습니다. 팀은 Slashpage 글을 참고만 하고 모든 페이지를 지금 앱 코드와 대조해 새로 썼으며, 스크린샷도 릴리스 빌드에서 새로 찍었습니다.
팀은 help:write 범위의 secret API 키와 CLI로 게시합니다.
mocco help push docs/help --glossary docs/help/glossary.csv--dry-run을 붙이면 키 없이 폴더 전체를 먼저 검사합니다. 첫 게시에서 26개 글이 모두 만들어지고 게시되었습니다. 그 뒤로는 바뀐 페이지만 게시됩니다. 가이드 14쪽을 고친 풀 리퀘스트 하나는 그 14쪽만 다시 게시하고 나머지 12쪽은 그대로 두었습니다. 헬프 센터가 git에서 관리되므로 콘솔은 폴더가 어디 있는지와, 수정은 저장소에서 해야 한다는 것을 보여 줍니다.
설정 방법: 헬프 센터를 git으로 관리하기
/help의 Q&A, 예전 질문을 가져와서
Q&A는 qna라는 질문 보드입니다. 열기 전에 팀은 Slashpage의 Q&A를 Markdown으로 내보내 보드 가져오기로 옮겼습니다. 질문 33개가 원래 날짜와 댓글 그대로 들어왔고, 그중 28개는 팀의 답변이 채택된 상태로 들어왔습니다. 업데이트 소식 29개는 같은 보드의 변경 로그로 원래 날짜 그대로 가져왔습니다. 그래서 /help/changelog에는 2023년 7월 1.0.0부터의 기록이 있습니다.
설정 방법: 질문 보드 운영하기, 보드의 기록 가져오기
/ideas의 기능 제안과 로드맵
두 번째 보드인 ideas는 아이디어 보드로, 기능 제안과 공개 로드맵을 담습니다. 사이트의 헤더와 푸터에는 가이드, Q&A, 변경 로그 옆에 로드맵(/ideas/roadmap) 링크가 있습니다.
설정 방법: 공개 피드백 보드 열기
Next.js 리라이트로 모두 showyourti.me에
헬프 사이트의 각 부분은 프로젝트의 Help center 페이지에 있는 Your domain에서 경로로 추가했습니다. 헬프 센터 전체는 https://showyourti.me/docs, qna 보드는 https://showyourti.me/help, ideas 보드는 https://showyourti.me/ideas이고, 셋 다 Active 상태입니다.
웹사이트가 Next.js 앱이라 세 경로를 리라이트로 넘깁니다. 사이트 자체 페이지보다 먼저 적용되도록 beforeFiles에 둡니다.
// next.config.js
async rewrites() {
const upstream = 'https://www.mocco.club/_proxy/showyourtime';
return {
beforeFiles: [
{ source: '/docs', destination: upstream },
{ source: '/docs/:path*', destination: `${upstream}/:path*` },
{ source: '/help', destination: `${upstream}/feedback/qna` },
{ source: '/help/:path*', destination: `${upstream}/feedback/qna/:path*` },
{ source: '/ideas', destination: `${upstream}/feedback/ideas` },
{ source: '/ideas/:path*', destination: `${upstream}/feedback/ideas/:path*` },
],
};
},한 가지 때문에 배포를 한 번 더 했습니다. 이 사이트는 Next.js i18n 라우팅을 써서 안에서 /docs가 /en/docs로 바뀝니다. locale: false를 둔 리라이트는 그 경로와 맞지 않아 404를 냈습니다. locale: false를 빼면 Next.js가 언어 접두사를 알아서 맞추고, 외부 목적지에는 접두사가 붙지 않습니다.
사이트의 robots.txt에는 자체 사이트맵과 함께 헬프 센터 사이트맵 https://showyourti.me/docs/sitemap.xml을 적었습니다.
설정 방법: 내 사이트에서 헬프 센터 제공하기
예전 주소는 모두 리다이렉트
DNS를 옮기기 전에 팀은 Slashpage의 모든 주소를 새 위치에 대응시켰습니다. 주소 53개, 별칭까지 경로 133개입니다. 가이드는 /docs/ko/articles/ 아래 같은 내용의 글로, 예전 질문은 /help의 해당 글로, 업데이트 소식은 /help/changelog로 갑니다. 예전 첫 화면은 /help로 가는데, 그 위쪽에 가이드와 변경 로그 링크가 있습니다. 대응표에 없는 주소는 헬프 센터 첫 화면으로 갑니다. 규칙은 웹사이트 next.config.js의 영구(308) 리다이렉트이고, 요청 호스트가 help.showyourti.me일 때만 걸립니다. 웹사이트 CI의 테스트가 모든 주소에 목적지가 있는지, 그 목적지가 실제로 있는지 확인합니다.
그다음 help.showyourti.me를 Slashpage에서 웹사이트 호스트로 옮겼습니다. 앱 설정의 도움말 링크 showyourti.me/help-center도 이제 /docs를 엽니다.
트러스티드 퍼블리싱으로 보내는 OTA 업데이트
앱은 기본 expo-updates 클라이언트가 Mocco를 가리키게 하고, runtime version은 fingerprint를 씁니다. 그래서 iOS와 Android는 릴리스가 따로 나가고, 네이티브 코드가 다른 빌드에는 업데이트가 닿지 않습니다. 채널은 staging과 production 두 개입니다.
릴리스는 사람이 직접 실행하는 GitHub Actions 워크플로에서 나갑니다. 실행할 때 채널과 플랫폼을 고릅니다. 워크플로는 커밋으로 고정한 Mocco의 ota-publish 액션으로 게시합니다. 저장소를 Trusted publishing에 등록해 두었기 때문에 잡은 GitHub OIDC 토큰으로 인증하고, 저장소에는 Mocco API 키가 없습니다. 시크릿은 업데이트 서명 키 하나뿐이고 CI 밖으로 나가지 않습니다. Mocco는 인증서만 갖고 있어서, 휴대폰이 받아들일 업데이트를 Mocco가 만들 수는 없습니다.
제대로 맞춰야 했던 것이 하나 있습니다. fingerprint는 빌드 환경에 따라 달라집니다. 워크플로는 게시하기 전에 스토어 빌드의 production 프로필과 같은 환경을 불러옵니다. 이것이 없을 때는 해시가 스토어 빌드와 달라서, 게시한 업데이트가 어느 휴대폰에도 닿지 않을 뻔했습니다.
2026년 10월 17일 팀은 이 방법으로 5.5.1 버전의 크래시 수정 일곱 개를 묶어 production에 게시했습니다. 플랫폼마다 릴리스가 하나씩입니다. 그 전에 iOS 시뮬레이터와 Android 에뮬레이터로 로컬 Mocco에서 전체 흐름을 돌려 롤백, 내장 번들로 롤백, 채널 격리, 서명 거부를 확인했고, 프로덕션에서는 스토어 설정 빌드가 production 업데이트를 적용하는 것을 확인했습니다.
설정 방법: Mocco에서 OTA 업데이트 호스팅하기
Discord에서 받는 알림과 답장
팀의 Discord 채널 #show-your-time을 Notifications에 연결하고 규칙 두 개를 두었습니다. feedback.*(보드의 새 질문, 아이디어, 댓글)와 messenger.*(문의)입니다. 이 채널은 디스코드에서 답장(Reply from Discord)이 켜져 있습니다. 그래서 새 질문 알림에는 Answer 버튼이, 댓글 알림에는 Reply 버튼(질문의 댓글이면 Accept as answer도)이 붙습니다. 버튼을 누르면 누른 사람의 Mocco 계정으로 동작하고, 감사 로그에 그 사람 이름으로 남습니다.
설정 방법: Discord 연결하기, 디스코드에서 답장
문의, 켜는 중
지금까지 Show Your Time은 문의를 이메일로 받았습니다. Mocco 문의 페이지로 바꾸는 작업은 만들어 두었고, 설정만 남았습니다. 웹사이트는 /contact를 다른 경로처럼 넘기고, 앱 설정의 문의하기는 앱 버전, 플랫폼, OS 버전, 언어를 붙여 https://showyourti.me/contact를 엽니다. 로그인한 사용자라면 로그인 토큰도 붙입니다. 웹사이트에는 로그인한 사용자를 위한 짧은 수명의 토큰을 Mocco에 넘기는 로그인 주소가 이미 있습니다. 남은 일은 메신저를 설정하고, 문의 페이지와 게스트 문의를 켜고, /contact 경로를 추가하는 것입니다. 그러면 문의가 프로젝트의 Inbox와 같은 Discord 채널로 들어옵니다.
MCP로 연결한 에이전트가 운영
위 설정의 상당 부분은 MCP로 Mocco에 연결한 팀의 코딩 에이전트가 했습니다. 도움말 게시, 알림 규칙 추가, Discord 채널 연결입니다. 워크스페이스는 에이전트가 변경하는 것을 허용하고, 사람마다 Settings → Agents에서 에이전트가 어떤 종류의 변경을 먼저 물어볼지 고릅니다. 모든 변경은 에이전트가 대신하는 사람의 이름으로 감사 로그에 남습니다.
같은 구성 만들기
Products에서 Help center와 Feedback을 켜고, 헬프 센터의 주소와 언어를 정합니다(헬프 센터 게시하기).
가이드를 저장소의 폴더로 옮기고
help.json을 둡니다.mocco help push --dry-run으로 검사한 뒤help:write키로 게시합니다(헬프 센터를 git으로 관리하기).Q&A용 질문 보드와 로드맵용 아이디어 보드를 만들고, 예전 글과 업데이트 소식을 가져옵니다(질문 보드 운영하기, 보드의 기록 가져오기).
Your domain에 부분마다 경로를 추가하고, 콘솔이 보여 주는 리라이트를 웹사이트에 넣어 배포한 뒤 Check now를 누릅니다(내 사이트에서 헬프 센터 제공하기).
DNS를 옮기기 전에 예전 도움말 주소를 새 주소로 영구 리다이렉트합니다.
Discord 채널을 연결하고
feedback.*,messenger.*규칙을 추가한 뒤 디스코드에서 답장을 켭니다(Discord 연결하기, 디스코드에서 답장).React Native 앱이라면 OTA 업데이트를 Mocco에서 호스팅하고, 트러스티드 퍼블리싱으로 CI에서 게시합니다(Mocco에서 OTA 업데이트 호스팅하기).
메신저와 문의 페이지를 설정합니다(내 사이트와 앱에서 문의받기).
에이전트를 연결하면 이 모든 것을 편집기에서 할 수 있습니다(Mocco를 에이전트에 연결하기).
지금 상태
바깥에서 확인할 수 있는 것들입니다.
showyourti.me/docs,/help,/help/changelog,/ideas는 Mocco가 ShowYourTime의 도메인에서 서비스합니다.예전
help.showyourti.me주소는 모두 새 페이지로 영구 리다이렉트되고,help.showyourti.me는 더 이상 Slashpage를 가리키지 않습니다.가이드 26쪽은 앱 저장소에서
mocco help push로 게시하고, 게시할 때는 바뀐 페이지만 바뀝니다.예전 질문 33개와 업데이트 소식 29개가 원래 날짜 그대로 새 보드에 있습니다.
productionOTA 채널은 iOS와 Android에 5.5.1 크래시 수정 묶음을 서비스하고, 이 릴리스는 Mocco API 키 없이 CI에서 게시했습니다.새 질문, 아이디어, 댓글은 팀의 Discord 채널에 올라오고, 팀은 거기서 답할 수 있습니다.
/contact의 문의 페이지는 켜는 중입니다.