[ANN] DocumenterLandingPage.jl, a VitePress-style landing page for Documenter.jl

I am happy to share DocumenterLandingPage.jl, a small Documenter.jl plugin that renders a VitePress-style landing page (hero plus emoji feature tiles) straight from the YAML frontmatter block a page carries in a @raw html directive.

Motivation

DocumenterCodeBlocks.jl has greatly improved the usability of Julia’s documentation, but it does not work together with DocumenterVitepress.jl. This package takes the parts of VitePress I care about (the home layout and its landing page) and makes them work with base Documenter.jl, where they compose cleanly with DocumenterCodeBlocks.jl.

What it does

The exact VitePress home layout, with hero, actions, and emoji feature tiles, all from one YAML frontmatter block.

Project Showcase

Why you might like it

  • CodeBlocks-ready: pair it with DocumenterCodeBlocks and use both in the same project.
  • Drop-in: your frontmatter block stays byte-for-byte as written; only its rendering is replaced by the hero and tiles.
  • Theme-adaptive: mirrors Documenter’s own theme palette, so the landing follows light, dark, and every catppuccin flavor. An optional image.dark swaps in a second hero image for dark themes.
  • Documenter.jl plugin: add it to your plugins list and the stylesheet is injected automatically, no assets= to configure.
  • No toolchain: no VitePress, no Node, no custom theme, just base Documenter.jl and a YAML block.

The whole integration

using Documenter
using DocumenterLandingPage
using DocumenterCodeBlocks  # optional

makedocs(
    sitename = "MyPackage.jl",
    format = Documenter.HTML(),
    plugins = [LandingPage(), CodeBlocks()],
)

Docs, a tutorial, and the full frontmatter schema reference live on the landing page.

Status

  • I put this together on a whim with heavy usage of AI. Expect some initial rough edges, but also expect them to be ironed out over time.
  • Layout should be working on both desktop and mobile now with a smooth transition between the two; thanks to @fredrikekre for the bug report.
  • Automerge approved so it should make it to general in a few days.

Now i gotta figure out how to do the title gradient so i can move back.

This looks cool! It works well and adds interest to the front page of manuals.

One feature that I couldn’t find is the use of graphics in the tiles. VitePress lets you add meaningful graphics, whereas this looks limited to emojis only?

Is it possible to link to PNG or SVG?

So I’m struggling to find emojis that represent the features in a package that justify the space occupied by them… I suppose I could use random :heart: and :scream:, but I’m not as big a :folding_hand_fan: as other people…

Just pushed support for this:

Working on this now, and also improving the logo gradient / flow between desktop and mobile views. There is a bunch of duct tape holding that together right now, will do a proper solution.

Iterated on this and completely reworked how the gradient was handled for both the glow and added it for the title. There are defaults for every standard Documenter.jl theme as well as a documented way to customize it however you would like it to look. Both of the examples in the project showcase should be updated now.

I’m always open to PRs improving these as well. I’m not a professional web/graphic designer by any stretch of the imagination :sweat_smile:

My body might be ready.

I gave it a try, and my main problem was, that my own CSS of “I just add an icon to certain external links” interfered a bit with it, but I like the current WIP (texts still could probably be improved), but it will be part of my next PR – and removes one of the few reasons I consider for a while to move to Vitepress.
(No bad feelings, the Vitepress docs usually look great! Just switching to them still feels like a larger rework)

Great that already logos can be used in the tiles :slight_smile:

Your changes work well, and the results look good!

Thanks!

Is it expected that the hero section hyperlinks return a 404 error ?

The package has been available in general for a few days now. v0.2.0 refined the default look / layout quite a bit and added support for title gradients + icons + custom themes.

Yes, agreed. Vitepress is always going to win in terms of bringing a modern, consistent web aesthetic across your entire docs site. The goal of this package was to try and bring my favorite parts of that back into the core Documenter.jl workflow for interoperability purposes.

Glad you are enjoying the package!

They shouldn’t provided the links are pointed to the right place. Looks like the Luxor links have an .html on the end of them which is causing the 404.

oops i should have tested them :scream:

Sure. Though for now, the “oldschool” docs with a nice landing page are a good alternative as well, since I do not have to rework all docs – and especially I still have the CodeBlocks :slight_smile:

I didn’t find a way to use Markdown nor HTML syntax in the features details