Skip to content

DuendeSoftware/docs.duendesoftware.com

Repository files navigation

docs.duendesoftware.com

Welcome to the documentation of all Duende Software products and open-source tools!

Getting Started

You will need Node 22+ installed on your operating system and in the PATH.

  • Run npm install to restore all dependencies.
  • Use npm run dev to run the documentation site locally.

Alternatively in VS Code, GitHub Codespaces, or WebStorm, you can use the devcontainer to get a development environment set up.

Project Structure

This project uses Astro + Starlight. You'll see the following folders and files:

.
├── public/
├── src/
│   ├── assets/
│   ├── content/
│   │   ├── docs/
│   └── content.config.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json

Starlight looks for .md or .mdx files in the src/content/docs/ directory. Each file is exposed as a route based on its file name.

Images can be added to src/assets/ and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the public/ directory.

✍️ Authoring

Content can be authored in Markdown, in a .md or .mdx file. The Starlight documentation has some guidance on Markdown syntax, components, and more:

Use a spell checker like Grazie or Grammarly to check your content for spelling and grammar errors. WebStorm has Grazie as a built-in spell checker and grammar checker, and supports a good default writing style.

Writing Style

  • Use the active voice. For example, use "Enable" instead of "Enabled" or "Enabling".
  • Use the second person ("you" not "I" or "we"). "You" is the reader of the documentation. "We" is Duende Software.
  • Use sentence case in text. Titles use Title Case.
  • Use the Oxford comma.
  • Avoid words like "very", "simple", "easy", ...
  • "As well as" can be written as "and".
  • Avoid flowery language.
  • When using acronyms, use the full form with parentheses the first time you use it. For example, use "Multi-Factor Authentication (MFA)" instead of "MFA".

Linking Rules

  • Always prefer linking internally over linking externally. For example, when you talk about data protection, prefer an internal link over a link to external sites.
  • When linking to external content, consider writing one or two sentences about the context and what the reader will learn on the linked page.
  • When linking other pages, use a path that starts at the content root, like /identityserver/troubleshooting/index.md. Use the .md(x) file extension - Starlight will update the link to the correct format on build.
  • When linking to external resources, use the full URL using HTTPS.
  • You can link to header anchors using the # symbol, for example [multiple authentication methods](/identityserver/ui/federation.md#multiple-authentication-methods-for-users).
  • Link relevant text. Prefer learn more about [improving the sign-in experience] over click [here] to learn more.
  • Run npm run linkchecker to validate all links (note this will ignore links to GitHub because of rate limits in place).
  • When a markdown link is long (75+ characters) or a link is repeated multiple times on a page, prefer moving the link to the bottom of the file and using markdown anchor syntax [test.cs][repo-test-file]

Code Block Style

  • Use triple backticks to enclose code blocks.
  • Use a language identifier to specify the language (e.g. csharp, bash, json, html, javascript, typescript, css, json)
  • Add a title to the code block. You can do this adding the title as a comment in the first line of the code block (e.g. // Program.cs).
  • Use expressive code features.
  • Readers should not need to scroll horizontally to read a code example. Simplify and condense the code as much as possible.
  • If writing C#, use the latest syntax — including top-level statements, collection expressions, ...
  • Make sure examples are runnable and complete. The goal is "Copy-paste from docs". Include namespaces, a result, and other prerequisites that are not obvious to someone new to the code.
  • Inline comments can be used to explain essential parts of the code. Expressive code can highlight line numbers, show diffs, and more.
  • Mention NuGet packages as a bash code block showing how to install it (dotnet add package ...). Link to the NuGet Gallery.
  • When referencing a property, field, class, or other symbol in text, use the test format instead of test.
  • Values should also be back-ticked, especially HTTP Status codes like 404 or 401.
  • Make sure code blocks start at the very first character space and don't have excessive starting padding.

Frontmatter Rules

  • Always have a title property to set the page title.

  • Always have a description property to set the page description. This is a summary of the page's core content.

  • Always have a date property to set the creation/significant update date for a page. Use the YYYY-MM-DD format.

  • Add the sidebar property and must include the label and order. The label is used in the menu, and should typically be shorter than the more descriptive title. For example:

    title: "Using IdentityServer As A Federation Gateway"
    sidebar:
      label: "Federation"
      order: 1

🧞 Commands

All commands are run from the root of the project, from a terminal:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:4321
npm run build Build your production site to ./dist/
npm run preview Preview your build locally, before deploying
npm run astro ... Run CLI commands like astro add, astro check
npm run astro -- --help Get help using the Astro CLI
npm run linkchecker Run lychee link checker

🔀 Redirects

There are two ways to restructure content:

  • Internal (move content around in the current structure)
  • External (move content outside the current structure)

Internal Restructuring

When doing internal restructuring, move the page to its new location and then update its frontmatter to include the old location:

---
title: Page title
redirect_from:
  - /old-path-to/content
---

Page content goes here

This will generate the page at the new location, and put a redirect to it at the old location.

External Restructuring

When moving a page outside the structure, or you need a redirect to another location altogether, edit the astro.config.mjs file and append a key/vaklue pair to the redirects property:

redirects: {
  "/identityserver/product-page": "https://duendesoftware.com/products/identityserver",
},

This will remove the old page from the navigation structure, but keeps the URL around with a redirect to the new location.

⚖️ License

For all licensing information, refer to the relevant license files:

  • LICENSE - License for the documentation site content.
  • LICENSE-CODE - License for the code samples.

The Astro documentation engine is licensed under the MIT license.

About

Documentation for our Products

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE-CODE

Security policy

Stars

Watchers

Forks

Contributors 102