Skip to main content

Pidgeotto

Description

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

Why Choose Pidgeotto?

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

Installation

You can install Pidgeotto using pip:

pip install pidgeotto

Or install the latest version directly from GitHub:

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

Dependencies

Pidgeotto automatically installs the following dependencies:

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

Basic Usage

1. Initialize a New Site

pidgey init project

This 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 files into HTML and places them in the public/ directory.

4. Serve the Site Locally

pidgey serve

Launches a local server at http://localhost:5555.

Serve on a custom port:

pidgey serve -p 2222

Extra Features

1. Page Visibility on Homepage (Using Tags)

Instead of using showInHome, page visibility is now controlled via tags. To control whether a post appears on the homepage:

  • Add the home tag to the post.

Example:

tags: [home]

Make sure your template is set up to filter and display pages with this tag.

2. Extend config.yml with Custom Keys

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

favicon: resource/favicon.ico

Use this value in your HTML template:

<link rel="icon" href="{{ 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

Folder Breakdown:

  • config.yml: Site-wide configuration (title, paths, theme, etc.)
  • resource/: Static assets like CSS, images, and favicon.
  • content/: Markdown content (header, footer, and notes).
  • templates/: Jinja2 templates for rendering HTML.
  • public/: Generated output folder (this is where the built site will reside).

Example

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

Changelog

v1.0.0 : Major Release

  • Replaced showInHome with a tag-based system to control page visibility on the homepage.
  • Rich error handling improvements, including enhanced error display with color coding.
  • Enhanced error handling in CLI commands, providing more detailed feedback.
  • Improved project structure and code modularity.
  • Various performance optimizations and bug fixes.

v0.9.9 : Beta Release

  • Custom ports for dev server (pidgey serve -p 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

Release files for pidgeotto 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pidgeotto 1.0.0
File Size Uploaded
pidgeotto-1.0.0.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pidgeotto 1.0.0
File Interpreter ABI Platform
pidgeotto-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.4 kB

Release files / pidgeotto-1.0.0.tar.gz

Download URL pidgeotto-1.0.0.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
99cae68b99deef32d05a2154d18a980bfddeb1007b11b1af6cea7ec0a67a986d
BLAKE2b-256 checksum
How to use checksums
0d0a0a7a89d58956787b59168a6f335751129d7daebf429bfed262cde0cd4578
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / pidgeotto-1.0.0-py3-none-any.whl

Download URL pidgeotto-1.0.0-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e72625bd500ea3a4d0f6f37a203b5139226363bd89c660ea7daaabfc3b7466a7
BLAKE2b-256 checksum
How to use checksums
1709257b08e928bef19571177754c2e8a8a768bc23b8a3bf5b86afe8a5dfe5c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.9.9

2 release files

0.0.9

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page