Skip to main content

Yet another static blog generator.

Project description

Pidgeotto

Description

Pidgeotto is a minimal, fast, and JavaScript-free static site generator : built for developers who love Markdown, speed, and simplicity.

Why choose Pidgeotto?

  1. No JavaScript by default.
  2. Clean, forkable Python code.
  3. Flexible templating with Jinja2.
  4. Fast, Markdown-first workflow.
  5. Fully open-source under the MIT License.

Installation

pip install pidgeotto

Or install the latest version directly from GitHub:

pip install git+https://github.com/niharokz/pidgeotto

Prerequisites

Pidgeotto installs the following dependencies automatically:

  • pyyaml : for configuration files and frontmatter parsing
  • jinja2 : templating engine
  • markdown2 : for Markdown to HTML conversion
  • rich : for better CLI display (colorful output)

Basic Usage

1. Initialize a new site

pidgey init project

Creates the required folder structure and template files under project/.

2. Create a new note/page

pidgey new pageName

Generates a new Markdown file under content/note/pageName.md.

3. Build the site

pidgey build

Renders all markdown into HTML and places them under the public/ directory.

4. Serve the site locally

pidgey serve

Launches a local server on http://localhost:5555

Serve on a custom port:

pidgey serve -port 2222

Extra Features

1. Page Visibility on Homepage

Each note can control visibility on the homepage with:

showInHome: true    # default, shown on home page
showInHome: false   # hidden from home page, useful for static pages like "About"

2. Extend config.yml with custom keys

You can extend config.yml to include custom fields like favicon:

favicon: resource/favicon.ico

Use it in your HTML template:

{{ config.get('favicon') }}

3. Custom Metadata in Notes

Add metadata per note:

meta: '<link rel="stylesheet" href="/extra.css">'

Use it in your HTML template:

{{ meta }}

Folder Structure

pidgeotto_project/
|-- public/
|-- config.yml
|-- content/
|   |-- header.md
|   |-- footer.md
|   |-- home.md
|   `-- note/
|       `-- sample.md
|-- resource/
|   `-- style.css
`-- templates/
    |-- home_template.html
    |-- note_template.html
    `-- rss_template.xml
  • config.yml: site-wide configuration (title, paths, theme, etc.)
  • resource/: static assets like CSS, images, and favicon
  • content/: Markdown content (header, footer, notes)
  • templates/: Jinja2 templates for rendering HTML
  • public/: generated output folder (can be changed in config)

Example

Visit a live site generated using Pidgeotto:
https://nih.ar

Changelog

v0.9.9 : Beta Release

  • Custom ports for dev server (pidgey serve -port 2222)
  • Server auto-handles /abc → /abc.html
  • Skips notes with missing frontmatter
  • Homepage listing respects showInHome
  • Global error handling improvements
  • Color-coded CLI output with Rich
  • Windows compatibility
  • Markdown metadata injection via meta tag
  • Improved project structure and modular codebase

License

MIT License

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

pidgeotto-0.9.9.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

pidgeotto-0.9.9-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file pidgeotto-0.9.9.tar.gz.

File metadata

  • Download URL: pidgeotto-0.9.9.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pidgeotto-0.9.9.tar.gz
Algorithm Hash digest
SHA256 f424a1ac789d5f984b3f5c06c9853d73d70a3db6e2b8a5a0659becfaba96ea19
MD5 22a18899447ec3d742601d5fdb5d7cd0
BLAKE2b-256 ca86c86489da7b81eb8714ea6fa4c41f9945f6e0d970da342200d7515a1f6fa7

See more details on using hashes here.

File details

Details for the file pidgeotto-0.9.9-py3-none-any.whl.

File metadata

  • Download URL: pidgeotto-0.9.9-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pidgeotto-0.9.9-py3-none-any.whl
Algorithm Hash digest
SHA256 5f9e6a6c28e4c2cad311f9d6448f5d576efe767a6b9d6c1ae8b3a24300462dbb
MD5 4bb847daf7874bd9ad3a00ee03e335ad
BLAKE2b-256 46da7d30e24b8c305697f5a710e837750bd9de1328d99d8bba43dbf07b7d23d6

See more details on using hashes here.

Supported by

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