Lektor is a static website generator. It builds out an entire project from static files into many individual HTML pages and has a built-in admin UI and minimal desktop app.
To see how it works look at the top-level example/ folder, which contains
a showcase of the wide variety of Lektor's features.
For a more complete example look at the lektor/lektor-website repository, which contains the source code for the official Lektor website.
For installation instructions head to the official documentation:
This gets you started (assuming you have Python >= 3.10, npm, and pre-commit installed):
$ git clone https://github.com/lektor/lektor
$ cd lektor
$ python -m venv _venv
$ . _venv/bin/activate
# pip>=25.1 is required for PEP 735 support
$ pip install -U "pip>=25.1"
# NB: this step requires that npm is installed (see below)
$ pip install --group dev --editable .
# If you plan on committing:
$ pre-commit install
# Run the Lektor server
$ export LEKTOR_DEV=1
$ cp -r example example-project
$ lektor --project example-project serverIf you want to run the whole test suite, under various versions of python, etc. (you'll need tox installed):
$ toxOr run the tests directly in your dev environment
$ pytest [...]Note
The admin front-end resources (e.g. .js and .css files) in lektor/admin/static
get built as part of the python distribution build process.
This happens, e.g., when running pip install -e .
That magic may be disabled (you might want to do this if, e.g., npm is not
available in your dev environment) by setting the HATCH_BUILD_NO_HOOKS
environment variable during the build. E.g.
HATCH_BUILD_NO_HOOKS=true pip install --group dev --editable .