# How ShowYourTime runs its help, Q&A and releases on Mocco

[Show Your Time](https://showyourti.me) 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:

```bash
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](https://www.mocco.club/docs/en/articles/3wgrvf-docs-as-code).

### 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](https://www.mocco.club/docs/en/articles/ecac95-questions-board) and [Import a board's history](https://www.mocco.club/docs/en/articles/yhh8c8-import-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](https://www.mocco.club/docs/en/articles/zp45zj-public-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:

```js
// 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](https://www.mocco.club/docs/en/articles/a2t8mn-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](https://www.mocco.club/docs/en/articles/em6rkw-hosted-updates).

### 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](https://www.mocco.club/docs/en/articles/9kwifm-connect-discord) and [Reply from Discord](https://www.mocco.club/docs/en/articles/gjxw6f-reply-from-discord).

### Contact, being switched on

Until now, Show Your Time took inquiries by email. The switch to Mocco's [contact page](https://www.mocco.club/docs/en/articles/vmfzec-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](https://www.mocco.club/docs/en/articles/frhj3w-connect): 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

1. Turn on **Help center** and **Feedback** under **Products**, and set up the help center with its address and language ([Publish a help center](https://www.mocco.club/docs/en/articles/im56b3-help-center)).
2. Move your guides into a folder in your repository with a `help.json`, check it with `mocco help push --dry-run`, then push it with a `help:write` key ([Keep your help center in git](https://www.mocco.club/docs/en/articles/3wgrvf-docs-as-code)).
3. 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](https://www.mocco.club/docs/en/articles/ecac95-questions-board), [Import a board's history](https://www.mocco.club/docs/en/articles/yhh8c8-import-history)).
4. 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](https://www.mocco.club/docs/en/articles/a2t8mn-own-site)).
5. Map your old help addresses to the new ones with permanent redirects before you move DNS.
6. Connect a Discord channel, add rules for `feedback.*` and `messenger.*`, and turn on **Reply from Discord** ([Connect Discord](https://www.mocco.club/docs/en/articles/9kwifm-connect-discord), [Reply from Discord](https://www.mocco.club/docs/en/articles/gjxw6f-reply-from-discord)).
7. For a React Native app, host OTA updates on Mocco and publish from CI with trusted publishing ([Host OTA updates on Mocco](https://www.mocco.club/docs/en/articles/em6rkw-hosted-updates)).
8. Set up the messenger and the contact page ([Take inquiries on your site and in your app](https://www.mocco.club/docs/en/articles/vmfzec-contact-page)).
9. Connect your agent to do any of these from your editor ([Connect Mocco to your agent](https://www.mocco.club/docs/en/articles/frhj3w-connect)).

## Where things stand

These can be checked from outside:

- `showyourti.me/docs`, `/help`, `/help/changelog` and `/ideas` are served by Mocco on ShowYourTime's own domain.
- Every old `help.showyourti.me` address answers with a permanent redirect to its new page, and `help.showyourti.me` no 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 `production` OTA 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 `/contact` is being switched on.
