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 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
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
99cae68b99deef32d05a2154d18a980bfddeb1007b11b1af6cea7ec0a67a986d
|
|
MD5 |
dc3865118cddc37a408d5691d0f12a8e
|
|
BLAKE2b-256 |
0d0a0a7a89d58956787b59168a6f335751129d7daebf429bfed262cde0cd4578
|
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
e72625bd500ea3a4d0f6f37a203b5139226363bd89c660ea7daaabfc3b7466a7
|
|
MD5 |
357edf63ee4a8ef8b2a9b673d8b5dc90
|
|
BLAKE2b-256 |
1709257b08e928bef19571177754c2e8a8a768bc23b8a3bf5b86afe8a5dfe5c2
|