The marketing site and documentation for Nucleus — the Kotlin framework for cross-platform native desktop apps.
Built with Next.js 15 (App Router), Fumadocs UI, MDX, TypeScript, React 19. Bilingual (EN / FR).
npm install
npm run dev # http://localhost:3000npm run build # SSG: 173 pages
npm start # serve production buildapp/
[lang]/
(landing)/ # marketing site
docs/ # Fumadocs docs (latest + /2.0 + /2.1 + …)
content/docs/ # MDX content for latest (EN + FR)
content/versioned/ # Frozen archives per minor line (2.0, 2.1, …)
components/
landing/ # landing page sections
docs/ # version switcher, shared docs layout
lib/
source.ts # DOC_VERSIONS + Fumadocs loaders
i18n.ts # EN/FR config
site.ts # site-wide metadata
scripts/
snapshot-docs.mjs # freeze latest → content/versioned/<X.Y>
fetch-versions.mjs # lib/versions.json for snippet injection
styles/ # landing CSS
Drop a .mdx file under content/docs/<section>/. Add its slug to the matching meta.json. Provide a French translation as name.fr.mdx.
When Nucleus ships a new minor or major and you rewrite the live docs, archive the previous line first, then relabel latest.
Full procedure (happy path, late recovery from git, checklist):
Short form when content/docs/ is still the line to freeze:
npm run snapshot-docs 2.2 # copies content/docs → content/versioned/2.2 + scaffolds routes
# then wire source.config.ts + lib/source.ts (script prints the exact lines)
# bump latest label to "2.4 (latest)", write new docs under content/docs/Do not snapshot for patch releases (2.1.9 → 2.1.10): keep editing latest.
- Sitemap:
/sitemap.xml - Robots:
/robots.txt - OpenGraph image: dynamic via
/opengraph-image - JSON-LD:
SoftwareApplicationschema in root layout - llms.txt:
/llms.txtand/llms-full.txt
MIT — see LICENSE.