Docs for Humans.
Ground Truth for AI.

A local-first product documentation system for Delphi developers. Turn Markdown, Delphi source code, or both into a docs site, offline HTML, and CHM help.

GuideCollections

Collections

The collections framework provides generic interfaces and implementations for common collection patterns in Delphi.

Choosing a collection

Use the interface when callers need an ordered collection with indexed access and enumeration. If callers only need to iterate values, expose a smaller read-only interface to keep the API flexible.

Use the IDictionary<TKey,TValue> interface when callers need keyed lookup. Prefer the TCollections factory methods when creating collection instances.

Performance

Choose the collection that matches the access pattern: lists for ordered traversal and indexed access, and dictionaries for keyed lookup.

How DocInsight works

From source to published docs

Keep docs close to the source

main
mylibrary
docinsight.json
docs
toc.md
index.md
collections.md
src
MyLibrary.Types.pas
MyLibrary.Collections.pas
packages
MyLibrary.dproj
MyLibrary.dpk

Keep the DocInsight project, guides, resources, and Delphi source in a local, version-controlled repository—next to your code or in a separate checkout. Write Markdown guides in the editor your team already uses.

Author API docs in the Delphi IDE

Documentation Inspector running inside the Delphi IDE

Browse and edit XML documentation comments with Documentation Inspector and Documentation Explorer. Format, check, and build API documentation from the IDE, with diagnostics that take you directly to the related source.

Connect guides and API reference

collections.md
---
xref:
base: mylibrary/MyLibrary.Collections
---
## Choosing a collection

Use [[IList{T}]] for an ordered, mutable collection with indexed access. Call [[IList{T}.Add]] to append an item.

MyLibrary.Collections.pas
/// <summary>
/// See the <see xref="docs/collections" /> guide for common patterns.
/// </summary>
IList<T> = interface
end;

Link Markdown guides to generated API reference, so readers can move naturally between concepts, examples, and symbols. Cross-references and resources resolve consistently across the whole project.

Check docs like code

Terminal
$ docinsight check
error[DI3201]: unresolved markdown topic link `./install.md`
   ┌─ docs/index.md:35:9
35  See the [getting started guide](./install.md).
                                    ^^^^^^^^^^^^

warning[DI3304]: unresolved XML documentation xref `guide/install`
   ┌─ src/MyLibrary.Types.pas:45:15
45  /// <see xref="guide/install" />
                   ^^^^^^^^^^^^^

warning[DI2501]: malformed XML documentation: unescaped XML text `<T>`
   ┌─ src/MyLibrary.Collections.pas:58:32
58  /// <summary> Use IList<T> for indexed access.</summary>
                           ^^^
   = help: escape literal angle brackets as `&lt;T&gt;`

Catch broken links, missing images, invalid metadata, and XML documentation issues before publishing. DocInsight reports clear diagnostics with file paths and precise source locations.

Build docs like software

Terminal
$ docinsight build
Building MyLibrary...

✓ Built   site  dist/docs/site                 103 pages
✓ Built   html  dist/docs/html                 103 pages
✓ Built   chm   dist/docs/chm/mylibrary.chm    112.3 KB

Built MyLibrary in 0.9s.
3 targets built; 0 errors, 0 warnings.

Run the same build locally or in CI. DocInsight resolves links, resources, and API references during the build, so documentation issues surface before release.

docinsight checkdocinsight builddocinsight open

Outputs

One project, multiple outputs.

Publish the same documentation project as a static HTML site, offline HTML, and CHM help.

View HTML showcase
Guide + API referenceStatic HTML siteNative CHM help
Static HTML API reference generated by DocInsight
Native CHM help output generated by DocInsight

Start with your Delphi project

Create a DocInsight project with the guided setup, then check, build, and open your documentation locally.

Terminal
      
$ docinsight init --template delphi
$ docinsight check
$ docinsight build
$ docinsight open