How ShowYourTime runs its help, Q&A and releases on Mocco
Show Your Time is a time-stamp camera app for iOS and Android. People use it to stamp the date and time on a photo of something they do every day, such as waking up, a workout or a meal, and then look back at how consistent they were. It is made by fi-workers, the team that also makes Mocco.
Today everything a Show Your Time user reads or writes to the team, apart from the app itself, lives on showyourti.me and is served by Mocco: the guides at /docs, questions and answers at /help, the update notes at /help/changelog, and ideas and the roadmap at /ideas. The guides are kept in the app's repository next to the code. App fixes that don't touch native code reach phones as signed over-the-air updates from Mocco, and the team hears about new questions in its Discord channel.
What they needed
Until October 2026 the help center ran on Slashpage, a hosted page builder, at help.showyourti.me. Its guides had drifted from the app: screens, settings and limits had changed and the pages hadn't. The 33 questions users had asked since November 2024, and 29 update notes, sat on the same site.
The team wanted four things:
Guides that change with the code. If help lives next to the code, a pull request that changes a screen can change its guide too.
One place for everything users read: guides, Q&A, the changelog, the roadmap and, later, contact, on their own domain so search engines credit
showyourti.me.No broken links. The app, search results and shared answers all pointed at
help.showyourti.me.Fixes that ship without waiting for store review, for bugs in the JavaScript side of the React Native app.
What they use
The help center at /docs, published from git
The guides are 26 Markdown pages in nine sections, written in Korean, in the app repository's docs/help folder. A help.json manifest sets the sections and their order, each section keeps its screenshots in an images folder, and a glossary.csv lists the product terms a translation must keep. The team rewrote every page against the current app code, using the Slashpage text only as a reference, and took new screenshots from a release build.
The team publishes with the CLI and a secret API key with the help:write scope:
mocco help push docs/help --glossary docs/help/glossary.csv--dry-run checks the whole folder without a key first. The first push created and published all 26 articles. Since then a push publishes only the pages that changed: one pull request that corrected 14 guides republished exactly those 14 and left the other 12 alone. Because the help center is managed from git, the console shows where the folder lives and that edits belong in the repository.
How to set it up: Keep your help center in git.
Q&A at /help, with the old questions imported
The Q&A is a questions board called qna. Before it opened, the team exported the Slashpage Q&A as Markdown and imported it with the board import: all 33 questions came across with their original dates and comments, and 28 of them arrived with the team's reply accepted as the answer. The 29 update notes were imported into the same board's changelog with their original dates, so /help/changelog shows the app's history back to version 1.0.0 in July 2023.
How to set it up: Run a questions board and Import a board's history.
Ideas and the roadmap at /ideas
A second, ideas board called ideas holds feature requests and the public roadmap. The site's header and footer link to the roadmap at /ideas/roadmap, next to the guides, Q&A and changelog.
How to set it up: Open a public feedback board.
All of it on showyourti.me, through Next.js rewrites
Each part of the help site is added as a path on the project's Help center page, under Your domain: the whole help center at https://showyourti.me/docs, the qna board at https://showyourti.me/help and the ideas board at https://showyourti.me/ideas. All three are Active.
The website is a Next.js app, so it forwards the three paths with rewrites, in beforeFiles so they run before the site's own pages:
// 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*` },
],
};
},One detail cost them a deploy. The site uses Next.js i18n routing, so internally /docs becomes /en/docs. A rewrite with locale: false doesn't match that path and returned 404. Without locale: false, Next.js matches the locale itself and the external destination gets no prefix.
The site's robots.txt lists the help center's sitemap, https://showyourti.me/docs/sitemap.xml, next to its own.
How to set it up: Serve your help center on your own site.
Every old address redirects
Before moving DNS, the team mapped every Slashpage address to its new home: 53 addresses, 133 paths counting aliases. Guides go to the matching article under /docs/ko/articles/, each old question to its post on /help, and the update notes to /help/changelog. The old home page goes to /help, whose header links to the guides and the changelog. Any address not in the map goes to the help center's front page. The rules are permanent (308) redirects in the website's next.config.js, and they apply only when the request is for help.showyourti.me. A test in the website's CI checks that every address has a destination and that the destination exists.
Then help.showyourti.me was moved off Slashpage and onto the website's host. The help link in the app's settings, showyourti.me/help-center, now opens /docs too.
OTA updates with trusted publishing
The app uses the stock expo-updates client pointed at Mocco, with a fingerprint runtime version, so iOS and Android get separate releases and an update never lands on a build whose native code differs. It has two channels, staging and production.
Releases come from a GitHub Actions workflow that a person starts by hand, choosing the channel and platform. It publishes with Mocco's ota-publish action, pinned to a commit. The repository is trusted under Trusted publishing, so the job signs in with its GitHub OIDC token and the repository stores no Mocco API key. The only secret is the update signing key, which never leaves CI. Mocco holds only the certificate, so it can't make an update a phone would accept.
One thing they had to get right: the fingerprint depends on the build environment. The workflow loads the same environment as the store build's production profile before publishing. Without it, the hashes didn't match the store build and the updates would never have reached a phone.
On 17 October 2026 the team published a bundle of seven crash fixes for version 5.5.1 to production this way, one release per platform. Before that they ran the whole flow on an iOS simulator and an Android emulator against a local Mocco, including rollback, rollback to the embedded bundle, channel isolation and a refused signature, and confirmed on production that a build with the store configuration applies a production update.
How to set it up: Host OTA updates on Mocco.
Notices and replies in Discord
The team's Discord channel #show-your-time is connected under Notifications, with two rules: feedback.* (new questions, ideas and comments on the boards) and messenger.* (inquiries). Reply from Discord is on for that channel, so a notice of a new question carries an Answer button, a comment carries Reply (and Accept as answer on a question), and each press acts as the person's own Mocco account and is recorded in the audit log under their name.
How to set it up: Connect Discord and Reply from Discord.
Contact, being switched on
Until now, Show Your Time took inquiries by email. The switch to Mocco's contact page is built and waiting on setup. The website will forward /contact like the other paths. The contact item in the app's settings will open https://showyourti.me/contact with the app version, platform, OS version and language, plus a sign-in token when the user is signed in. The website already has a sign-in endpoint that hands Mocco a short-lived token for the signed-in user. What remains is setting up the messenger, turning on the contact page and guest inquiries, and adding the /contact path. Inquiries will then land in the project's Inbox and in the same Discord channel.
Run by an agent over MCP
Much of the setup above was done by the team's coding agent connected to Mocco over MCP: publishing help, adding notification rules and connecting the Discord channel. The workspace allows agents to make changes, and each person picks, in Settings → Agents, which kinds of change their agent asks them to confirm first. Every change is recorded in the audit log as the person the agent acts for.
Do the same
Turn on Help center and Feedback under Products, and set up the help center with its address and language (Publish a help center).
Move your guides into a folder in your repository with a
help.json, check it withmocco help push --dry-run, then push it with ahelp:writekey (Keep your help center in git).Create a questions board for Q&A and an ideas board for the roadmap, and import your old posts and update notes (Run a questions board, Import a board's history).
Add a path for each part under Your domain, add the rewrites the console shows to your website, deploy, and choose Check now (Serve your help center on your own site).
Map your old help addresses to the new ones with permanent redirects before you move DNS.
Connect a Discord channel, add rules for
feedback.*andmessenger.*, and turn on Reply from Discord (Connect Discord, Reply from Discord).For a React Native app, host OTA updates on Mocco and publish from CI with trusted publishing (Host OTA updates on Mocco).
Set up the messenger and the contact page (Take inquiries on your site and in your app).
Connect your agent to do any of these from your editor (Connect Mocco to your agent).
Where things stand
These can be checked from outside:
showyourti.me/docs,/help,/help/changelogand/ideasare served by Mocco on ShowYourTime's own domain.Every old
help.showyourti.meaddress answers with a permanent redirect to its new page, andhelp.showyourti.meno longer points at Slashpage.The 26 guides are published from the app's repository with
mocco help push, and a push changes only the pages that changed.The 33 old questions and 29 update notes are on the new boards with their original dates.
The
productionOTA channel serves the 5.5.1 crash-fix bundle on iOS and Android, published from CI without a Mocco API key.New questions, ideas and comments are posted to the team's Discord channel, where the team can reply.
The contact page at
/contactis being switched on.