Skip to main content

A minimal, fast static site generator built for Markdown lovers.

Project description

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

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-1.0.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pidgeotto-1.0.0.tar.gz
Algorithm Hash digest
SHA256 99cae68b99deef32d05a2154d18a980bfddeb1007b11b1af6cea7ec0a67a986d
MD5 dc3865118cddc37a408d5691d0f12a8e
BLAKE2b-256 0d0a0a7a89d58956787b59168a6f335751129d7daebf429bfed262cde0cd4578

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pidgeotto-1.0.0-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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e72625bd500ea3a4d0f6f37a203b5139226363bd89c660ea7daaabfc3b7466a7
MD5 357edf63ee4a8ef8b2a9b673d8b5dc90
BLAKE2b-256 1709257b08e928bef19571177754c2e8a8a768bc23b8a3bf5b86afe8a5dfe5c2

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