Metadata-Version: 2.4
Name: webifier
Version: 1.0.5
Summary: Cook up a fully functional static website from YAML and Markdown.
Project-URL: Homepage, https://github.com/webifier/build
Project-URL: Repository, https://github.com/webifier/build
Project-URL: Issues, https://github.com/webifier/build/issues
Author-email: Vahid Zehtab <contact@vahidz.com>, Ahmad Salimi <ahsa9978@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: jinja2,jupyter notebook,markdown,static site,webifier
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: beautifulsoup4
Requires-Dist: jinja2<3.2,>=3.0
Requires-Dist: markdown
Requires-Dist: pygments
Requires-Dist: pyyaml
Requires-Dist: webifier-extensions>=1.0.4
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Description-Content-Type: text/markdown

# Webifier

[![Docs](https://img.shields.io/badge/docs-webifier.github.io-blue)](https://webifier.github.io/)
[![PyPI](https://img.shields.io/pypi/v/webifier.svg)](https://pypi.org/project/webifier/)
[![Python Package](https://github.com/webifier/build/actions/workflows/python-publish.yml/badge.svg)](https://github.com/webifier/build/actions/workflows/python-publish.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

Webifier turns YAML, Markdown, HTML, notebooks, and other static content into a
static website. It is meant to remove the publishing overhead from personal
projects, research notes, notebooks, reports, and evolving documentation: decide
what content goes where, commit it, and let Webifier build a navigable site.

The core package stays small: config loading, page discovery, rendering,
extension loading, hooks, template resolution, and asset copying. First-party
renderers, templates, themes, search, comments, notebooks, and resume sections
ship as the `webifier-extensions` package, which is installed automatically with
`webifier`.

## Install

```shell
pip install webifier
```

Documentation and examples live at [webifier.github.io](https://webifier.github.io/).

## Build Locally

```shell
webify --index index.yml --output webified
```

For project pages, pass a base URL:

```shell
webify --baseurl my-repo --index index.yml --output webified
```

For a root domain or `<user>.github.io` site, use an empty base URL:

```shell
webify --baseurl "" --index index.yml --output webified
```

## Configure Extensions

Extensions are enabled explicitly in your site config. The instance name is local
to your site, and `uses` points to the installed extension implementation.

```yaml
config:
  webifier:
    extensions:
      site:
        uses: webifier.standard
      markdown:
        uses: webifier.markdown
      notebooks:
        uses: webifier.notebook
      search:
        uses: webifier.search
      theme:
        uses: webifier.theme
        default: system
      comments:
        uses: webifier.comments
```

Extensions can register renderers, content renderers, templates, themes, assets,
resolvers, format loaders, hooks, and config defaults. Page-aware hooks can
inspect page config and page content before injecting assets into the head,
navigation, footer, or other extension areas.

## GitHub Action

```yaml
name: Webify
on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: webifier/build@v1.0.1
        with:
          baseurl: ""
          index: index.yml
          publish_dir: webified
```

Deploy `webified/` with your preferred static hosting or GitHub Pages action.

## License

MIT License.
