> For the complete documentation index, see [llms.txt](https://docs.durohub.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.durohub.com/library-configuration/introduction.md).

# Introduction to Duro's Config System

## Evolution of Duro's Configuration

Duro started as an "out of the box" PLM solution that worked well for hardware teams transitioning from spreadsheets. However, as organizations scaled and required deeper customization, we recognized the need for a more flexible approach. Instead of maintaining hard-coded rules, we developed a powerful configuration system that puts control in our users' hands.

## The YAML-Based Configuration

Our "YAML all the things" philosophy enables extensive customization while maintaining Duro's core value of simplicity. Using YAML's human-readable format, you can configure:

* Category definitions and specifications
* Data validation rules
* Custom revision and status workflows
* Configurable part numbering schemes
* Change order validation and approval flows
* Event-driven notifications and webhooks
* And more...

```yaml
# Example: Simple category definition
categories:
  - code: "920"
    type: ASSEMBLY
    name: Cable Assembly
    specs:
      - name: Length
        type: string
        required: true
        validation:
          pattern: "^\\d+(\\.\\d+)?\\s*(mm|m)$"
```

## Why YAML?

We chose YAML for its:

* **Readability**: Clean, intuitive syntax that's easy to understand
* **Accessibility**: Approachable for both technical and non-technical users
* **Flexibility**: Supports complex configurations without overwhelming complexity
* **Industry adoption**: Widely used in tools like GitHub Actions and Kubernetes

Our configuration system draws inspiration from proven approaches like [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions), [Render.com Blueprints](https://render.com/docs/blueprint-spec), and [JSON Schema](https://json-schema.org/), combining their best aspects into a cohesive configuration definition system for your product data.

## Getting Started

If you're new to YAML, we recommend these resources:

* [YAML Syntax Overview](https://yaml.org/spec/1.2.2/)
* [Learn YAML in 10 minutes](https://learnxinyminutes.com/docs/yaml/)
* [YAML Tutorial by CloudBees](https://www.cloudbees.com/blog/yaml-tutorial-everything-you-need-get-started)

The following sections will guide you through configuring various aspects of your Duro environment, starting with the Category Registry.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.durohub.com/library-configuration/introduction.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
