Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Overture Docs

Overture Docs is a centralized documentation site built with Docusaurus that aggregates and renders Markdown content from /docs directories across our GitHub repositories. It transforms distributed documentation into a cohesive and easy to navigate knowledge base.

Overture Docs

Note

This repository is documented in detail on the Overture Docs site linked here (to be linked once live)

Getting Started

Running it Locally

  1. Clone the repository with the submodules:
git clone --recurse-submodules https://github.com/overture-stack/docs.git

Tip

Already cloned the repo? You can still get the submodules by running: git submodule update --init --recursive

  1. Install required dependencies from the website directory:
cd website
npm ci
  1. Start the server for whichever of the two sites you are working on:
npm start # docs.overture.bio, the documentation site
npm run start:marketing # overture.bio, the marketing site

Both serve on port 3000, so to run them side by side give one of them another port: npm run start:marketing -- --port 3001.

Important

Docusaurus requires node version 18 or higher. All npm commands run from website/; there is no package manifest at the repository root.

Tip

One repository, two sites. npm start serves the documentation with its homepage at /; npm run start:marketing serves the marketing site with its homepage at /. Neither contains the other's routes. Two builds, one branch explains how the switch works.

Checking your work

Three commands are worth running before you open a pull request, all from website/:

npm run typecheck # tsc across website/src/
npm run build # the documentation site
npm run build:marketing # the marketing site

onBrokenLinks is set to throw, so a link to a page that does not exist fails the build rather than shipping a 404. Run both builds even when a change looks like it belongs to one site: src/theme/, the emitted stylesheet and docusaurus.config.ts are shared, so a change there can break the site you were not looking at.

The dev server is client-rendered and will not catch either of those. To see what Netlify actually serves, build and serve the output: npm run serve for the documentation site, npm run serve:marketing for the marketing one.

How Overture Docs Works

  • Docusaurus: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.

  • Four documentation sections: The site is organized around what a reader is trying to do, rather than around our repository layout. Each section is a separate Docusaurus docs plugin instance with its own content directory, route, and sidebar:

    SectionContentRouteSidebar
    Developwebsite/docs/develop-docs//developdevelopSidebars.ts
    Deploywebsite/docs/deploy-docs//deploydeploySidebars.ts
    Usewebsite/docs/use-docs//useuseSidebars.ts
    Communitywebsite/docs/community-docs//communitycommunitySidebars.ts
  • Markdown Files: All documentation content is stored as Markdown (or MDX) files under website/docs/, within the section it belongs to.

  • Git Submodules: We use Git submodules to store and track all our GitHub repositories within one main repository. All submodules can be found in the submodules folder.

  • Symlinks: Only the necessary documentation files are symlinked from the submodules into website/docs/. This allows us to import only the required Markdown content that Docusaurus needs. The symlinks are generated by symlinker.sh, which is the source of truth for what gets surfaced; run ./symlinker.sh from the repository root after changing which submodule docs the site includes.

  • Redirects: Legacy URLs are preserved through @docusaurus/plugin-client-redirects, configured in website/docusaurus.config.ts, so older links and bookmarks continue to resolve.

  • Interactive components: Some pages embed browser-based tooling (the configuration generator, the Lectern dictionary playground, and the Song schema playground) built as React components under website/src/components/.

  • Two sites from one repository: this repository builds both docs.overture.bio and the overture.bio marketing site, selected by the OVERTURE_SITE environment variable. See The overture.bio marketing pages and Deployment.

The overture.bio marketing pages

The marketing site was ported into this repository so that one codebase serves both hostnames. The code is complete and both sites build; what is left is the Netlify and DNS work described under Deployment, which is what actually moves visitors from the Gatsby site to this one.

  • Where the code lives: everything is under website/src/marketing/. Routes are pages/, one directory apiece (collaborate, impact, privacy, products, terms-conditions) plus pages/index.tsx, which is the home page. Components, constants, case-study data and stylesheets sit alongside them.

  • Two builds, one branch: docusaurus.config.ts reads OVERTURE_SITE. Unset, it builds the documentation site exactly as before. Set to marketing, it builds overture.bio: the documentation plugin instances and the redirect table are dropped, and the pages plugin points at src/marketing/pages/ so the marketing home is served at /. Search stays on both sites, against the same index, with the marketing build configured to send results cross-host. Neither site contains the other's routes, so neither hostname serves a second copy of the other.

  • The two sites have separate navigation: the marketing build carries its own navbar and footer so a reader can tell which of the two sites they are on. website/src/theme/Navbar/ and website/src/theme/Footer/ pick one using useIsMarketingSite, which reads the build mode rather than the route. Adding a marketing nav item means editing MarketingNavbar.tsx, not the site config.

  • Styles are Sass, and they are scoped: the marketing pages carry their own styling, which would otherwise fight the documentation theme. Every stylesheet is imported inside a .marketing block by website/src/marketing/styles/index.scss, and only MarketingPage.tsx imports that file. If you are adding marketing styles, add a partial and import it there rather than importing a stylesheet from a component.

  • Assets live in website/static/img/marketing/ and are referenced by path, not imported.

Note

The staged copy of the Gatsby site that lived here during the port was deleted once the pages were rebuilt. overture-stack/website still serves overture.bio until DNS is cut over, so until then a change that has to reach the live site goes there, not here.

Deployment

Both sites are Netlify sites building this repository from the same branch. They differ only in one environment variable and the publish directory.

docs.overture.biooverture.bio
Base directorywebsitewebsite
Build commandnpm ci && npm run buildnpm ci && npm run build:marketing
Publish directorywebsite/buildwebsite/build-marketing
OVERTURE_SITEunsetmarketing
NODE_VERSION2020

Neither site needs a netlify.toml, and adding one would be a mistake: a single file on a single branch cannot say different things to two sites. Everything that would go in one is expressed per site instead.

  • Redirects live in website/static-docs/_redirects and website/static-marketing/_redirects. Each is copied into its own build's output by the staticDirectories setting, so each host serves only the rules it owes. Netlify combines them with any rules configured in the site UI, applying the UI rules first.
  • robots.txt is per host for the same reason, next to each _redirects.
  • sitemap.xml is generated for each build from the url in docusaurus.config.ts, so it always names the host it is served from.
  • Submodules are fetched by Netlify automatically: every URL in .gitmodules is public HTTPS. The documentation symlinks under website/docs/ are committed as git symlinks with relative targets, so symlinker.sh does not need to run during a build.

Because submodule pointers are pinned commits, a documentation change landed in a component repository does not reach the deployed site until a submodule bump is committed here.

Running either site locally is covered under Running it Locally.

Repository structure

.
├── /submodules/ # Core Repository Submodules
│ ├── /.github/ # GitHub configurations, workflows and standards docs
│ ├── /arranger/ # Arranger repository
│ ├── /lectern/ # Lectern repository
│ ├── /lyric/ # Lyric repository
│ ├── /maestro/ # Maestro repository
│ ├── /score/ # Score repository
│ ├── /song/ # Song repository
│ └── /stage/ # Stage repository
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
│
├── symlinker.sh # Regenerates the submodule doc symlinks under /website/docs/
│
└── /website/ # Documentation Website
├── /docs/ # All documentation content, split by reader journey
│ ├── /develop-docs/ # Per-component developer docs (symlinked from submodules)
│ ├── /deploy-docs/ # Prelude and deployment documentation
│ ├── /use-docs/ # Guides, workshop, administration, playgrounds
│ └── /community-docs/ # Community resources, guidelines and standards
├── /remark/ # Custom remark plugins applied to vendored content
├── /src/ # Website source code
│ ├── /components/ # React components
│ ├── /css/ # Component-specific styles
│ ├── /marketing/ # Components, data and Sass for the overture.bio pages
│ ├── /theme/ # Global theme configuration and styling
│ │ └── /pages/ # The overture.bio routes; index.tsx is its home page
│ └── /pages/ # Documentation homepage
├── /static-docs/ # robots.txt and _redirects for docs.overture.bio only
├── /static-marketing/ # robots.txt and _redirects for overture.bio only
├── /static/ # Static assets served as-is
│ └── /img/marketing/ # Images and icons for the marketing pages
├── docusaurus.config.ts # Site config: plugin instances, navbar, redirects
└── *Sidebars.ts # One sidebar file per documentation section

Key Directories

  • /submodules/: Contains all Overture core repositories as Git submodules
  • /website/: Houses the Docusaurus-powered documentation website
    • /docs/develop-docs/: Component-level documentation, automatically linked from repository submodules
    • /docs/deploy-docs/: How to stand up and configure an Overture deployment
    • /docs/use-docs/: Task-oriented content for people working with a running platform
    • /docs/community-docs/: Community-focused content, including the org-wide documentation standards linked from the .github submodule
    • /src/: Website implementation files including custom components, styling, and page content
    • /src/marketing/: The overture.bio marketing site, rebuilt from the Gatsby site, routes included
    • /static-docs/, /static-marketing/: The files each host serves alone, robots.txt and _redirects. See Deployment

Important

Documentation content is owned by the submodules, not by this repository. Where a page under website/docs/ is a symlink, edit the source file in submodules/<project>/docs/ and land the change through that project's own repository.

Benefits of this Setup

  • A Centralized Resource for Decentralized Documentation: A single, easy-to-navigate hub displaying all our developer documentation while keeping all documentation markdown files within their respective repositories.

  • Consistent: Enables us to easily ensure all documentation follows the same standards across different projects.

  • Easy to Maintain: Updates to any of the individual project repositories /docs folders are automatically reflected here.

  • Robust Error Handling: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.

Tip

The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), the same license as the rest of the Overture stack. See LICENSE for the full text, and the licensing page for an overview.

Documentation content vendored from the submodules/ repositories remains under the license of its own repository.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages