Skip to main content

Professional Sphinx documentation generator with intelligent auto-discovery. Automatically finds and unifies READMEs, changelogs, markdown guides, and API docs into beautifully organized documentation sites.

Project description

Introligo - Documentation Hub

Tests codecov

Your repository's documentation, unified. Automatically discover, organize, and combine all your docsโ€”READMEs, Changelogs, Markdown guides, API docsโ€”into one beautiful Sphinx site.

Note: Introligo is an open-source component of the Celin Project, freely available for any project.

The Problem

Your documentation is scattered:

  • ๐Ÿ“„ README.md in the root
  • ๐Ÿ“ User guides in docs/
  • ๐Ÿ“‹ CHANGELOG.md tracking history
  • ๐Ÿค CONTRIBUTING.md for contributors
  • ๐Ÿ“ฆ Python docstrings in code
  • ๐Ÿ”ง Example READMEs in subdirectories

Each file is useful, but together they're a mess.

The Solution: Introligo Hub

# Create hub_config.yaml
discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true
    markdown_docs: "docs/**/*.md"
python -m introligo hub_config.yaml -o docs -v
cd docs && sphinx-build -b html . _build/html

Result: Professional Sphinx documentation, automatically organized. โœจ

How It Works

1. Auto-Discovery

Introligo scans your repository and finds all documentation:

  • README files (root and subdirectories)
  • CHANGELOG.md
  • CONTRIBUTING.md
  • LICENSE
  • Markdown guides
  • RST files

2. Smart Organization

Documents are intelligently categorized:

  • Getting Started โ†’ READMEs, installation guides
  • User Guides โ†’ Tutorials, how-tos
  • API Reference โ†’ Code documentation
  • About โ†’ Changelog, contributing, license

3. Beautiful Output

Everything combines into a professional Sphinx site with:

  • Automatic navigation (toctree)
  • Searchable content
  • Mobile-responsive design
  • Light/dark mode
  • Your choice of theme

Quick Start (3 Steps)

Step 1: Install

pip install PyYAML jinja2 sphinx furo

Step 2: Create Configuration

Create introligo_config.yaml in your project root:

index:
  title: "๐Ÿ“š My Project Docs"

discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true
    contributing: true
    license: true
    markdown_docs: "docs/**/*.md"

sphinx:
  project: "My Project"
  html_theme: "furo"
  palette: "celin"  # Beautiful cosmic theme

Step 3: Generate

python -m introligo introligo_config.yaml -o docs_output -v
cd docs_output
sphinx-build -b html . _build/html
python -m http.server 8000 --directory _build/html

Open http://localhost:8000 โ€” your docs are ready! ๐ŸŽ‰

Features

๐Ÿ” Auto-Discovery

  • Finds README, CHANGELOG, CONTRIBUTING, LICENSE automatically
  • Scans for markdown files by pattern
  • Discovers documentation anywhere in your repo

๐Ÿง  Smart Categorization

  • Analyzes content to determine correct section
  • Keywords-based classification
  • Location-aware organization
  • Handles multiple READMEs intelligently

๐Ÿ“š Multi-Format Support

  • Markdown โ†’ Converted to RST with smart link handling
  • RST โ†’ Included natively
  • LaTeX โ†’ Mathematical formulas
  • Text โ†’ Literal blocks
  • Python โ†’ Sphinx autodoc (automatic API extraction)
  • C/C++ โ†’ Doxygen/Breathe integration (automatic API extraction)
  • Go โ†’ Automatic extraction via go doc (when Go is installed)

๐ŸŽจ Beautiful Themes

  • Built-in Celin palette (cosmic colors)
  • Built-in Default palette
  • Custom palette support
  • Furo, RTD, Alabaster themes
  • Auto-generated conf.py

๐ŸŽฏ Flexible Configuration

  • Hub Mode (automatic) - Recommended
  • Classic Mode (manual control) - Power users
  • Hybrid (mix both) - Best of both worlds

Real-World Example

Here's what Introligo finds in a typical project:

my-project/
โ”œโ”€โ”€ README.md                  โ†’ Getting Started
โ”œโ”€โ”€ CHANGELOG.md               โ†’ About
โ”œโ”€โ”€ CONTRIBUTING.md            โ†’ About
โ”œโ”€โ”€ LICENSE                    โ†’ About
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ tutorial.md           โ†’ User Guides
โ”‚   โ”œโ”€โ”€ user-guide.md         โ†’ User Guides
โ”‚   โ””โ”€โ”€ advanced.md           โ†’ User Guides
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ myproject/            โ†’ API Reference (autodoc)
    โ””โ”€โ”€ examples/
        โ””โ”€โ”€ README.md         โ†’ User Guides

One command generates complete, organized documentation from all of this.

Configuration Guide

Minimal Configuration

discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true

That's it! Introligo finds and organizes your READMEs and changelog.

Recommended Configuration

index:
  title: "๐Ÿ“š My Project Documentation"
  description: "Complete documentation hub"

discovery:
  enabled: true
  scan_paths:
    - "."
    - "docs/"
  auto_include:
    readme: true
    changelog: true
    contributing: true
    license: true
    markdown_docs: "docs/**/*.md"
  exclude_patterns:
    - "node_modules"
    - ".venv"

sphinx:
  project: "My Project"
  author: "Your Name"
  html_theme: "furo"
  palette: "celin"

Advanced: Mix Auto + Manual

discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true

# Manually add API docs and custom sections
modules:
  api:
    title: "๐Ÿ“– API Reference"
    module: "myproject"  # Python autodoc

  architecture:
    title: "๐Ÿ—๏ธ Architecture"
    file_includes:
      - "docs/design.md"
      - "docs/decisions.md"

Use Cases

โœ… Open Source Projects

Perfect for: Projects with established docs scattered across README files and markdown guides.

discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true
    contributing: true
    license: true

โœ… Python Libraries

Perfect for: Libraries needing API docs combined with guides.

discovery:
  enabled: true
  auto_include:
    readme: true
    markdown_docs: "docs/**/*.md"

modules:
  api:
    module: "mylib"  # Auto-generates API docs

โœ… Documentation Migration

Perfect for: Moving from markdown to Sphinx.

discovery:
  enabled: true
  scan_paths: ["."]
  auto_include:
    markdown_docs: "**/*.md"  # Find everything

โœ… Multi-Language Projects

Perfect for: C++/Python projects with Doxygen and Sphinx.

discovery:
  enabled: true
  auto_include:
    readme: true

doxygen:
  xml_path: "build/doxygen/xml"

modules:
  cpp_api:
    language: cpp
    doxygen_files: ["mylib.h"]
  python_api:
    module: "mylib"

Classic Mode (For Power Users)

If you need complete control over documentation structure:

# No discovery - manually define everything
modules:
  getting_started:
    title: "Getting Started"
    file_includes: "README.md"

  user_guide:
    title: "User Guide"
    parent: "getting_started"
    file_includes: "docs/guide.md"

  api:
    title: "API Reference"
    module: "myproject"

When to use Classic Mode:

  • Complex hierarchical requirements
  • Precise control needed
  • Building docs from scratch
  • Custom organization beyond categories

Most users should use Hub Mode.

Installation

Basic Installation

pip install PyYAML jinja2

With Sphinx (for building docs)

pip install PyYAML jinja2 sphinx furo

With C/C++ Support

pip install PyYAML jinja2 sphinx breathe
sudo apt-get install doxygen  # or: brew install doxygen

With Go Support

Go documentation is extracted automatically when Go is installed:

pip install PyYAML jinja2 sphinx furo
# Install Go from https://go.dev/dl/ for automatic doc extraction

Note: Go documentation is extracted using go doc. If Go is not installed, Introligo gracefully falls back to providing links to pkg.go.dev.

Development Installation

git clone https://github.com/JakubBrzezo/introligo.git
cd introligo
pip install -e .[dev,docs]

Documentation

Examples

Guides

Command Line

# Generate documentation
python -m introligo config.yaml -o output/

# Preview (dry-run)
python -m introligo config.yaml -o output/ --dry-run

# Verbose output
python -m introligo config.yaml -o output/ -v

# Custom template
python -m introligo config.yaml -o output/ -t custom.jinja2

# Strict mode (fail on errors)
python -m introligo config.yaml -o output/ --strict

Migrating to Hub Mode

From Scattered Docs

If you have READMEs and markdown files:

Before: Multiple disconnected files After: One command to unite them

discovery:
  enabled: true
  auto_include:
    readme: true
    markdown_docs: "docs/**/*.md"

From Classic Introligo

If you're using the old YAML approach:

Before:

modules:
  getting_started:
    title: "Getting Started"
    file_includes: "README.md"
  changelog:
    title: "Changelog"
    file_includes: "CHANGELOG.md"

After:

discovery:
  enabled: true
  auto_include:
    readme: true
    changelog: true

Much simpler! And you can still add manual modules.

FAQ

Q: Do I have to move my documentation files?

No! Introligo finds documentation wherever it is. READMEs, guides, and other files can stay in their current locations.

Q: What if auto-categorization gets it wrong?

Use manual modules to override:

discovery:
  enabled: true
  auto_include:
    markdown_docs: "docs/**/*.md"

modules:
  architecture:  # Manually control this
    title: "Architecture"
    file_includes: "docs/architecture.md"

Q: Can I customize the organization?

Yes! Use hybrid modeโ€”auto-discover common files, manually organize complex sections.

Q: Does it work with existing Sphinx projects?

Yes! Introligo generates RST files that work with any Sphinx setup.

Q: What about my existing conf.py?

Introligo can auto-generate conf.py, but if you have a custom one, just don't enable the sphinx section.

Requirements

  • Python 3.8 or higher
  • PyYAML >= 6.0
  • Jinja2 >= 3.0
  • Sphinx >= 4.0 (for building)

Optional:

  • Breathe >= 4.0 (C/C++ documentation)
  • Doxygen (C/C++ documentation)

Contributing

We welcome contributions! See CONTRIBUTING.md for:

  • Development setup
  • Running tests
  • Code style
  • Submitting PRs

License

Copyright (c) 2025 WT Tech Jakub Brzezowski

Introligo is an open-source component of the Celin Project. Free for any use, commercial or non-commercial.

Links


Made with โค๏ธ by WT Tech Jakub Brzezowski

Part of the Celin Project ecosystem

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

introligo-1.4.0.tar.gz (8.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

introligo-1.4.0-py3-none-any.whl (60.6 kB view details)

Uploaded Python 3

File details

Details for the file introligo-1.4.0.tar.gz.

File metadata

  • Download URL: introligo-1.4.0.tar.gz
  • Upload date:
  • Size: 8.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for introligo-1.4.0.tar.gz
Algorithm Hash digest
SHA256 4b0e6f8a241e04ba58ccfbe8b9b32b57e070373b08ddb49d4b157c3485a554ee
MD5 c9c879ce3bb584f87950914973605544
BLAKE2b-256 6edfdbd611cc24399706cff50725216ec80e8ff6727c17c5ad0480aacb11fd2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for introligo-1.4.0.tar.gz:

Publisher: publish-pypi.yml on JakubBrzezo/introligo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file introligo-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: introligo-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 60.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for introligo-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d8ec3045e51cb48d88d5ad5268cfe36f90513068d6a59edb88902a31e96301b
MD5 8ad5aa218e7237e223451a18a9bf72cd
BLAKE2b-256 e01e7ab8521f0885e3f51e7aaa427fe2443c0df2ed99a3babc1d96d1d94c1b30

See more details on using hashes here.

Provenance

The following attestation bundles were made for introligo-1.4.0-py3-none-any.whl:

Publisher: publish-pypi.yml on JakubBrzezo/introligo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page