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?
- No JavaScript by default.
- Clean, forkable Python code.
- Flexible templating with Jinja2.
- Fast, Markdown-first workflow.
- 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 parsingjinja2
— templating enginemarkdown2
— for Markdown to HTML conversionrich
— 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 faviconcontent/
: Markdown content (header, footer, notes)templates/
: Jinja2 templates for rendering HTMLpublic/
: 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
5135cc1f9287735827620a0c9a469a7f075c28015c5792129169e5b9294b0838
|
|
MD5 |
8596e8b1f32a72cfb62500f13cdda4f3
|
|
BLAKE2b-256 |
900dc60a8cc4fcaae91b902f2d5cf2017844f42195701f5410b4aac290b4ff60
|
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a2b8549b603ab7b7af40ed60c2ef8fde64280250abf7ef3c9309464e4c522189
|
|
MD5 |
79ab22719c6190c271b8b7a998c9ee4c
|
|
BLAKE2b-256 |
fecc4623db8caba9c24297a8c47277f6280889edfea875cbfe1e42ab558e4bcb
|