docs/ directory in the repo: docs/docs.json
is the config, docs/<page>.mdx is the English content, and docs/zh/<page>.mdx
is the Chinese mirror. When you fork vibestrap, replicating this setup for your
own product is about 30 minutes of clicks plus a DNS propagation wait.
Prerequisites
- A GitHub repository for your fork of vibestrap.
- A domain you own (e.g.
your-product.com) — the docs will live atdocs.your-product.com. - Access to your DNS provider’s dashboard.
What ships in the repo already
The vibestrap repo is pre-wired for Mintlify, so you don’t have to set this up from scratch:docs/docs.json— Mintlify’s config file. Defines name, theme, colors, navigation, footer, navbar links, and SEO defaults.docs/*.mdxanddocs/<group>/*.mdx— 36 English pages organized into 9 navigation groups.docs/zh/...— Chinese mirror of every English page.docs/logo/{light,dark}.svganddocs/favicon.svg— placeholder branding you should replace with your own.
Step 1: Sign up for Mintlify
- Go to mintlify.com/start.
- Sign up with the GitHub account that owns your fork.
- Pick the Hobby plan — it’s free and supports custom domains.
Step 2: Connect your repository
- In the Mintlify dashboard, click Connect GitHub.
- Install the Mintlify GitHub App when prompted. Scope it to just your vibestrap fork (you can add more repos later).
- Select the repository.
Step 3: Configure the source
In the Mintlify dashboard go to Settings → Git settings and set:- Repository:
<your-org>/vibestrap - Branch:
main - Subdirectory:
docs← this is the critical one. Mintlify readsdocs/docs.jsonas the config and treats every page slug as relative to that subdirectory.
Step 4: Verify the preview build
- Watch the Overview → Deployments page in the dashboard. The first build typically takes 1–2 minutes.
- When it finishes, click the preview URL — something like
your-org.mintlify.app. - Open it. You should see the full vibestrap docs site with the navigation sidebar, language switcher, and search bar.
- A page listed in
docs/docs.json → navigationdoesn’t exist on disk. - An MDX file uses
<https://example.com>autolink syntax (Mintlify rejects it — use[example.com](https://example.com)instead). - Frontmatter is missing
titleordescription.
Step 5: Custom domain
- In Mintlify dashboard → Settings → Custom domain.
-
Enter
docs.your-product.com. -
Mintlify shows the DNS record you need to add. It looks like:
- Add that CNAME record at your DNS provider (Cloudflare, Vercel DNS, Namecheap, Route53, etc.).
- Wait. Propagation usually takes 1–24 hours. Mintlify auto-provisions an SSL certificate via Let’s Encrypt once DNS resolves.
docs.your-product.com resolves, Mintlify will redirect the
*.mintlify.app URL to your custom domain.
Step 6: Update vibestrap’s links
Editsrc/config/site.ts so the marketing app links to your real docs URL:
siteConfig.links.docs.
Commit and push. Vercel re-deploys the marketing site, and your “Docs”
nav link now opens your branded Mintlify domain.
Editing flow afterwards
- Every push to
mainthat touchesdocs/ordocs/docs.jsontriggers a Mintlify re-deploy automatically. There’s no extra CI step. - Local preview:
pnpm dlx mintlify devfrom the repo root. The CLI readsdocs/docs.jsonand serves atlocalhost:3000— same port aspnpm dev, so don’t run both at once. - Bilingual content: any new page must be created in both
docs/<path>.mdxanddocs/zh/<path>.mdx. Add the slug to both language groups indocs/docs.json. Mintlify won’t auto-link them.
Branding checklist
Replace the placeholder vibestrap branding with yours:- Logo: edit
docs/logo/light.svganddocs/logo/dark.svg. Keep the 220×48 viewBox so the navbar height stays consistent. - Favicon: replace
docs/favicon.svg. - Theme color: edit
docs/docs.json → colors.primary(hex). - Site name: edit
docs/docs.json → name. - Navbar links + primary CTA: edit
docs/docs.json → navbar. - Footer: edit
docs/docs.json → footer.socialsandfooter.links. - SEO: edit
docs/docs.json → seo.metatags.
Common pitfalls
- Wrong source directory: if the dashboard shows “no pages found”,
double-check the Source directory setting is
docs, not/orcontent/docs. - Page in
docs/but not indocs/docs.json: the page renders but is orphaned (no sidebar entry, no search hit). Add it to the matching language group indocs/docs.json → navigation.languages. - Page in
docs/docs.jsonbut not indocs/: the build fails. Either create the file or remove the slug from the navigation. - Custom-domain TLS pending: after adding the CNAME, Mintlify shows a
“TLS provisioning” badge for up to 24 hours. If still pending after that,
re-check the CNAME record matches exactly (no extra dot, no trailing
slash, target is
cname.mintlify-dns.com.). - Mixing English and Chinese pages in one group: Mintlify treats
navigation.languages[i].groupsstrictly — only puten/*pages under theenlanguage entry, onlyzh/*under thezhentry. Cross-language links should be plain markdown links, not navigation entries.
Official docs
- mintlify.com/docs — full Mintlify reference
- docs.json schema reference — every configuration option
- Navigation — group, tab, anchor, dropdown, language structures
- Internationalization — multilingual setup
- Custom domain — DNS records and SSL provisioning
- Components — built-in MDX components (Tabs, Steps, Callouts, Cards, etc.)