You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bridge is a single, easy-to-navigate hub that beautifully renders all our product documentation from the `/docs` folder of all our GitHub repositories.
4
+
Overture Docs is a single, easy-to-navigate hub that beautifully renders all our product documentation from the `/docs` folder of all our GitHub repositories.
5
5
6
-
> [!NOTE]
7
-
> Overture Docs started under the name Bridge to reflect its ability to bridge information across multiple repositories. Bridge was also chosen in fitting with Overtures Orchestral theme.>
6
+

8
7
9
-
## Documentation Framework
10
-
11
-
Overture has three user profiles:
12
-
13
-
-**Software Engineers**: They build and customize Overture components for their software stack.
14
-
15
-
-**IT specialist**: Deploying and configuring Overture platforms.
16
-
17
-
-**Informaticians**: Use Overture platforms to gather, organize, explore and share data.
18
-
19
-
Our documentation is split up as follows:
20
-
21
-
| Documentation | User Profile | Description
22
-
|---|---|---|
23
-
| Product Documentation (Housed here) | Software Engineers & Developers | Technical resources for those working on or contributing to the project. |
24
-
| Platform Guides (Overture.bio) | IT Specialists & Informaticians | Instructive guides covering platform setup, maintenance and usage for end-users and administrators. |
25
-
26
-
## How Overture Docs Works
27
-
28
-
-**Docusaurus**: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.
29
-
30
-
-**Markdown Files**: All documentation content is stored as markdown files in the `/website/docs` directory.
31
-
32
-
-**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 `submodule` folder.
33
-
34
-
-**Symlinks**: Only the necessary documentation files are symlinked from the submodules in the `submodule` folder to the `/website/docs` directory. This allows us to import only the required markdown content that Docusaurus needs.
35
-
36
-
## Benefits of this Setup
37
-
38
-
-**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.
39
-
40
-
-**Consistent**: Enables us to easily ensure all documentation follows the same standards across different projects.
41
-
42
-
-**Easy to Maintain**: Updates to any of the individual project repositories `/docs` folders are automatically reflected here.
43
-
44
-
-**Robust Error Handling**: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.
45
-
46
-

47
-
48
-
> [!TIP]
49
-
> The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.
8
+
> [!NOTE]
9
+
> Detailed information on this repository see it relevant documentation page linked here
50
10
51
11
## Getting Started
52
12
@@ -70,161 +30,67 @@ Start the server
70
30
npm start
71
31
```
72
32
73
-
> **Note:** Docusaurus requires node version 18 or higher
74
-
75
-
### Adding Submodules
76
-
77
-
Use the following command from the submodules directory to add a new submodule:
This will automatically update the `.gitmodules` file located in the root directory.
84
-
85
-
### Updating Submodules
86
-
87
-
To pull the latest changes for all submodules, including any newly added ones run:
33
+
> [!IMPORTANT]
34
+
> Docusaurus requires node version 18 or higher
88
35
89
-
```bash
90
-
git submodule update --remote
91
-
```
92
-
93
-
### Using Symlinks
94
-
95
-
All documentation content is stored in markdown files located within `/website/docs` while the original repositories for these markdown files are in the `submodule` folder.
96
-
97
-
Symlinks are used here to link only the necessary folders containing markdown files from the submodule directories.
98
-
99
-
The script for this is in the root directory, titled `bridge.sh`:
This allows us to import only the necessary markdown files that Docusaurus needs. Changes to either directory are linked and reflected in both.
107
-
108
-
#### Getting it to run with Docusaurus
109
-
110
-
To run this without errors, I needed to create a plugin found in `website/docsPlugin.ts`:
111
-
112
-
```typescript
113
-
module.exports=function(context, options) {
114
-
return {
115
-
name: "custom-docusaurus-plugin",
116
-
configureWebpack(config, isServer, utils) {
117
-
return {
118
-
resolve: {
119
-
symlinks: false
120
-
}
121
-
};
122
-
}
123
-
};
124
-
};
125
-
```
126
-
127
-
This plugin is imported on line 32 of the `docusaurus.config.ts`:
128
-
129
-
```typescript
130
-
plugins: ['./docsPlugin.ts'],
131
-
```
132
-
133
-
The source of this fix can be found [here](https://github.com/facebook/docusaurus/issues/3272#issuecomment-688409489).
134
-
135
-
## Globally imported Mdx components
136
-
137
-
We can import components by default across all our mdx files reducing the head matter when using these components in mdx documents. This can be configured from the `/src/theme/MDXComponents.ts`:
-**Docusaurus**: We use Docusaurus to render the site, providing a sleek and navigable interface for our documentation.
144
39
40
+
-**Markdown Files**: All documentation content is stored as markdown files in the `/website/docs` directory.
145
41
146
-
const components:typeofMDXComponents& {
147
-
Tabs:ComponentType<any>;
148
-
TabItem:ComponentType<any>;
149
-
DocCardList:ComponentType<any>;
150
-
} = {
151
-
...MDXComponents,
152
-
Tabs,
153
-
TabItem,
154
-
DocCardList,
155
-
};
42
+
-**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 `submodule` folder.
156
43
157
-
exportdefaultcomponents;
158
-
```
44
+
-**Symlinks**: Only the necessary documentation files are symlinked from the submodules in the `submodule` folder to the `/website/docs` directory. This allows us to import only the required markdown content that Docusaurus needs.
159
45
160
-
## Custom Components
161
46
162
-
There are three custom components built for this site all located in the components directory as follows:
47
+
## Repository structure
163
48
164
49
```
165
50
.
166
-
└── /src/
167
-
└── components/
168
-
├── FundingStatment
169
-
├── SiteMap
170
-
└── SwaggerAPIDoc
51
+
├── /submodules/ # Core Repository Submodules
52
+
│ ├── /.github/ # GitHub configurations, workflows and standards docs
53
+
│ ├── /arranger/ # Arranger repository
54
+
│ ├── /lectern/ # Lectern repository
55
+
│ ├── /lyric/ # Lyric repository
56
+
│ ├── /maestro/ # Maestro repository
57
+
│ ├── /score/ # Score repository
58
+
│ ├── /song/ # Song repository
59
+
│ └── /stage/ # Stage repository
60
+
│ └── /docs/ # Repository-specific documentation (found in every submodule repo)
61
+
│
62
+
└── /website/ # Documentation Website
63
+
├── /community/ # Community resources and guidelines
64
+
├── /docs/ # Aggregated documentation (symlinked from submodules)
65
+
├── /guides/ # Overture platform user guides
66
+
└── /src/ # Website source code
67
+
├── /components/ # React components
68
+
├── /css/ # Component-specific styles
69
+
├── /theme/ # Global theme configuration and styling
70
+
└── /pages/ # Static page content
171
71
```
172
72
173
-
### Site Map
174
-
175
-
- The sitemap component renders the frontpage navigation of the website, organized in a mosaic layout with left and right columns
176
-
- Categories can be added by extending the `const categories:` object (lines 24-45) with new entries containing:
177
-
-`title`: Category display name
178
-
-`description`: Brief category description
179
-
- Products are defined in `const products:` array (lines 47-61) with each product requiring:
180
-
-`title`: Product name
181
-
-`link`: URL path
182
-
-`description`: Brief description
183
-
-`category`: Must match a category key
184
-
-`image`: Optional icon path
185
-
186
-
The layout groups products into their respective categories and automatically distributes them between the left column (`core`, `development`) and right column (`platform`, `misc`, `standards`).
187
-
188
-
This component also includes our funding statement, the copy used can be updated directly from the component on line 90.
189
-
190
-
> [!NOTE] Improvement Consideration
191
-
> The current implementation uses hardcoded arrays (leftColumnCategories and rightColumnCategories) for column distribution. This is not ideal however it is the simplest method to organize our site content in its ideal layout.
192
-
193
-
### Sidebar Funding Statement
73
+
### Key Directories
194
74
195
-
A simple React component that displays funding attribution information on the bottom left of all sidebars. It uses CSS Modules for scoped styling (styles.module.css).
75
+
-**/submodules/**: Contains all Overture core repositories as Git submodules
76
+
-**/website/**: Houses the Docusaurus-powered documentation website
77
+
-**/community/**: Community-focused content and resources
78
+
-**/docs/**: Central location for all documentation, automatically linked from repository submodules
79
+
-**/guides/**: Comprehensive platform guides and tutorials
80
+
-**/src/**: Website implementation files including custom components, styling, and page content
196
81
197
-
> [!NOTE] Improvement Consideration
198
-
> Consider making the content configurable by accepting props rather than hardcoding the grant information, allowing reuse for different funding sources.
82
+
## Benefits of this Setup
199
83
200
-
### Swagger API Embed
84
+
-**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.
201
85
202
-
The `SwaggerAPIDoc` component renders API documentation completely client-side by:
86
+
-**Consistent**: Enables us to easily ensure all documentation follows the same standards across different projects.
203
87
204
-
1. Importing local JSON specification files (`songAPI.json`, `scoreAPI.json`, `maestroAPI.json`)
205
-
2. Using these static JSON files to generate the documentation UI, meaning:
206
-
- No actual API calls are made
207
-
- Documentation works offline
208
-
- No backend connectivity required
209
-
- Safe for internal/private API documentation
210
-
- Specifications can be version controlled alongside the code
88
+
-**Easy to Maintain**: Updates to any of the individual project repositories `/docs` folders are automatically reflected here.
211
89
212
-
Usage example with local JSON:
213
-
```jsx
214
-
// Your JSON spec file (e.g., songAPI.json)
215
-
{
216
-
"openapi":"3.0.0",
217
-
"info": {
218
-
"title":"Song API",
219
-
// ... rest of your API specification
220
-
}
221
-
}
90
+
-**Robust Error Handling**: Docusaurus has excellent error catching, particularly for broken and missing links, reducing the need for manual testing.
222
91
223
-
// Component usage remains the same
224
-
<SwaggerAPIDoc specName="song"/>
225
-
```
92
+

226
93
227
-
The `tryItOutEnabled={false}` setting further reinforces this by preventing any attempts to make actual API calls from the documentation interface.
94
+
> [!TIP]
95
+
> The Overture Docs repo contains everything, therefore finding & tracking links and content across all our repos has never been easier.
228
96
229
-
> [!NOTE] Improvement Consideration
230
-
> Consider making the content configurable by accepting a path prop rather than having to add the spec to the component itself.
0 commit comments