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 parsingjinja2: templating enginemarkdown2: for converting Markdown to HTMLrich: 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
hometag 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
showInHomewith 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pidgeotto-1.0.0.tar.gz | 11.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|