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

v1.0.0 – Stable Release

  • Pretty URLs supported (/note/a/index.html)
  • 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.0.9.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pidgeotto-0.0.9.tar.gz
Algorithm Hash digest
SHA256 5135cc1f9287735827620a0c9a469a7f075c28015c5792129169e5b9294b0838
MD5 8596e8b1f32a72cfb62500f13cdda4f3
BLAKE2b-256 900dc60a8cc4fcaae91b902f2d5cf2017844f42195701f5410b4aac290b4ff60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pidgeotto-0.0.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.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 a2b8549b603ab7b7af40ed60c2ef8fde64280250abf7ef3c9309464e4c522189
MD5 79ab22719c6190c271b8b7a998c9ee4c
BLAKE2b-256 fecc4623db8caba9c24297a8c47277f6280889edfea875cbfe1e42ab558e4bcb

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