Skip to content

netwrix/docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

851 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description of image

Netwrix Product Documentation

A centralized documentation site for all Netwrix security products, built with Docusaurus v3.8.1 and a simple prouct configuration for easy maintenance.

Overview

This documentation site serves all Netwrix product documentation.

  • 19+ Security Products across 6 categories:
    • Identity Management
    • Privileged Access Management (PAM)
    • Directory Management
    • Endpoint Management
    • Data Security Posture Management (DSPM)
    • Identity Threat Detection & Response (ITDR)
  • Multi-version Support with version management
  • Centralized Configuration - single source of truth for all product docs
  • Search capabilities with Algolia

Quick Start

Prerequisites

  • Node.js 22+
  • npm
  • Git
  • Vale (style linter — required for pushing documentation changes)

Install Vale

Vale is a command-line linter for prose. A linter checks your writing against a set of style rules — like a spell checker, but for grammar, word choice, and tone. Vale is required to push changes to documentation files. The pre-push hook runs Vale automatically and blocks pushes that have linting errors.

macOS:

brew install vale

Linux:

sudo snap install vale

Windows:

choco install vale

Manual install (any platform):

Download the latest release from github.com/errata-ai/vale/releases, extract the binary, and add it to your PATH.

Verify the installation:

vale --version

Installation

# Clone the repository
git clone https://github.com/netwrix/docs.git
cd docs

# Install dependencies (also sets up the pre-push hook via Husky)
npm install

# Start development server
npm run start

Run Vale Locally

Run Vale on a file before pushing to catch issues early:

vale docs/path/to/file.md

Run Vale on all changed docs files:

git diff --name-only dev | grep '^docs/.*\.md$' | xargs vale

Project Structure

├── .claude/                     # Claude Code configuration
│   ├── skills/                  # Skills (invoked with /skill-name)
│   │   ├── dale/                # AI linter for docs
│   │   │   └── rules/           # Dale rule definitions (YAML)
│   │   ├── doc-pr/              # Automated PR review
│   │   ├── doc-pr-fix/          # Autonomous PR fixer (@claude)
│   │   └── doc-help/            # Interactive writing assistant
│   └── agents/                  # Autonomous worker agents
├── .husky/
│   └── pre-push                 # Vale pre-push hook (blocks on lint errors)
├── .vale/
│   └── styles/
│       └── Netwrix/             # 30 Vale linting rules (YAML)
├── src/
│   ├── config/
│   │   └── products.js          # CENTRALIZED CONFIGURATION
│   ├── components/
│   │   ├── HomepageFeatures/    # Dynamic product grid homepage (auto-generated)
│   │   ├── ProductMetaTags/     # Search meta tags (auto-generated)
│   │   ├── CommunityHighlights/ # Community section
│   │   └── CommunityShowcase/   # Community section
│   ├── css/
│   │   └── custom.css           # Theme customization
│   └── pages/
│       └── index.js             # Homepage with dynamic links
├── docs/                        # Product documentation
│   ├── 1secure/                 # SaaS/single-version products
│   ├── accessanalyzer/          # Multi-version products
│   │   ├── 11.6/
│   │   └── 12.0/
│   ├── identitymanager/
│   │   ├── 6.1/
│   │   ├── 6.2/
│   │   └── saas/
│   └── [other product docs]/
├── sidebars/                    # Sidebar configurations (referenced by products.js)
│   ├── 1secure.js
│   ├── accessanalyzer/
│   │   ├── 11.6.js
│   │   └── 12.0.js
│   └── [other product sidebars]/
├── scripts/                     # Development utilities
├── static/                      # Static assets
│   └── img/
│       ├── branding/            # Logos and brand assets
│       └── product_docs/        # Product images
├── .vale.ini                    # Vale configuration
├── docusaurus.config.js         # Main config
└── package.json

Development

Available Commands

# Development
npm run start                     # Start development server
npm run start-chok                # Start development server with polling (for network drives)

# Building & Testing
npm run build                     # Full production build

# Utilities
npm run clear                     # Clear Docusaurus cache
npm run serve                     # Serve production build after `npm run build`

Building/Running Specific Products

You can build or run the documentation for a single product using the DOCS_PRODUCT environment variable:

Windows (PowerShell):

$ENV:DOCS_PRODUCT="pingcastle"
npm run start

Unix/Linux/macOS:

export DOCS_PRODUCT="pingcastle"
npm run start

This works with any command (start, start-chok, build) and speeds up development when working on a single product. Available product IDs can be found in src/config/products.js.

Development Workflow

The centralized system makes development simple:

  1. Start development server: npm run start
  2. Make changes to documentation or configuration
  3. Hot reload automatically updates the site
  4. All products and versions work seamlessly

Centralized Configuration System

Global Product Config: src/config/products.js

All product configuration for building the site, such as naming, is managed in a single file. Here's how it works:

// Define a product once
{
  id: 'accessanalyzer',
  name: 'Access Analyzer',
  description: 'Analyze and audit file system permissions',
  path: 'docs/accessanalyzer',
  category: 'Data Security Posture Management (DSPM)',
  icon: '🔍',
  versions: [
    {
      version: '12.0',
      label: '12.0',
      isLatest: true,
      sidebarFile: './sidebars/accessanalyzer/12.0.js'
    },
    {
      version: '11.6',
      label: '11.6',
      isLatest: false,
      sidebarFile: './sidebars/accessanalyzer/11.6.js'
    }
  ]
}

Automatically generates:

  • Docusaurus plugin configurations
  • Homepage product grid
  • SEO meta tags
  • URL routing
  • Version management

Configuration Schema

interface Product {
  id: string; // Unique identifier
  name: string; // Display name
  description: string; // Homepage description
  path: string; // Documentation path
  category: string; // Product category
  icon?: string; // Emoji icon
  versions: ProductVersion[]; // Version configurations
  defaultVersion?: string; // Override default version
}

interface ProductVersion {
  version: string; // Version identifier (e.g., '12.0', 'current')
  label: string; // Display label
  isLatest: boolean; // Is this the latest version?
  sidebarFile: string; // Path to sidebar configuration
}

Theme Customization

Key CSS variables in src/css/custom.css:

--ifm-color-primary: #2a5298; /* Netwrix blue */
--ifm-color-primary-dark: #254a89; /* Darker variant */
--ifm-font-family-base: 'Inter'; /* Primary font */

Adding New Products & Versions

Adding a New Product

The centralized system makes adding products incredibly simple:

1. Add to src/config/products.js:

{
  id: 'newproduct',
  name: 'New Product Name',
  description: 'Brief product description',
  path: 'docs/newproduct',
  category: 'Product Category', // Must match existing category
  icon: '🔧',
  versions: [
    {
      version: 'current',
      label: 'Current',
      isLatest: true,
      sidebarFile: './sidebars/newproduct.js'
    }
  ]
}

2. Create documentation structure:

mkdir docs/[newproduct]

3. Create sidebar configuration:

echo "// @ts-check

/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const [newproduct]sidebar = {
  sidebar: [
    {
      type: 'autogenerated',
      dirName: '.',
    },
  ],
};

export default sidebars;
" > sidebars/[newproduct].js

That's it! The new product automatically appears on the homepage with proper routing.

Adding a New Version

1. Update the product in src/config/products.js:

// Add to existing product's versions array
versions: [
  {
    version: '[newversion]', // New version
    label: '[newversion]',
    isLatest: true, // Mark new version as latest
    sidebarFile: './sidebars/[productname]/[newversion].js',
  },
  {
    version: '1.0',
    label: '1.0',
    isLatest: false, // Update previous version latest to false
    sidebarFile: './sidebars/[productname]/1.0.js',
  },
];

2. Create version documentation:

mkdir docs/productname/[newversion]

3. Create version sidebar:

echo "// @ts-check

/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const [newproduct]sidebar = {
  sidebar: [
    {
      type: 'autogenerated',
      dirName: '.',
    },
  ],
};

export default sidebars;
" > sidebars/[newproduct].js

Adding Product Categories

Add to the PRODUCT_CATEGORIES in src/config/products.js for the product category it belongs to:

{
  id: 'new-category',
  title: 'New Category Name',
  description: 'Category description',
  icon: '🎯'
}

Deployment

  • Production: Auto-deploys from main branch
  • Development: Auto-deploys from dev branch

Contributing

See CONTRIBUTING.md for the full guide — writing standards, linting, workflow, and available tools.

License

This documentation site is MIT licensed and open source, and is maintained by Netwrix Corporation.

About

Netwrix Product Documentation

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors