Skip to main content

Minimalist static website generator in Python.

Project description

Picogen

A very simple static website generator that uses Jinja to generate your content.

Installation

Create/activate virtual environment and install picogen in your working directory.

python3 -m venv .venv &&
source .venv/bin/activate &&
pip install --upgrade pip &&
pip install picogen

Optionally, to install the development dependencies use:

pip install "picogen[dev]"

Working Directory Structure

In your working directory you need to have the following structure where you'll have an .env file, a content directory in which you'll have your markdown files, and optionally if you don't use the default theme that ships with picogen you'll need a themes directory in which you'll have your own theme. You need to follow this exact same structure in order for picogen to know what to look where. Note, the inclusion of sitemap.xsl in your custom theme is optional. You can also include aditional templates that extend or use the existing templates.

├── .env
|
├── content
|   ├── posts
|   │   ├── post_1
|   │   │   ├── post.md
|   │   │   └── images
|   |   |       ├── image_1.jpeg
|   |   |       └── image_2.png
|   │   └── post_2
|   │       ├── post.md
|   │       └── images
|   |           └── image.jpeg
|   └── pages
|       └── page_1
|           ├── page.md
|           └── images
|               └── image.jpeg
|
└── themes                      // optional
    └── custom_theme
        ├── static
        │   ├── css
        │   ├── favicons
        │   └── images
        └── templates
            ├── home.html        // homepage
            ├── post.html        // each article
            ├── page.html        // each page
            ├── category.html    // each category
            ├── 404.html         // 404 page
            ├── robots.txt       // robots file
            ├── sitemap.xml      // sitemap xml file
            └── sitemap.xsl      // sitemap xsl file (optional)

Config

The .env file should have the following content, out which all of the values are optional. If you use your own custom theme though you need to designate its directory name (THEME) in the .env file.

# .env file

SITE_URL=
SITE_NAME=
SITE_TAGLINE=

THEME=
GTAG_ID=
CONTACT_EMAIL=

Writing Content

Every markdown file at the top needs to have a metadata section wrapped with ---. Picogen will look for this section in each markdown file and will warn you if something is missing. For example here's a post metadata:

---
Title: Here Goes the Title
Date: 2017-10-30 10:20
Modified: 2017-10-30 10:20
Category: Here Goes the Category
Image: relative/path/to/image.jpg
Slug: example-url-slug
---

Build, Serve, Deploy and Backup

Type picogen -h for help.

picogen [-h] [-g] [-d BUCKET_NAME] [-b BUCKET_NAME]

Examples to build, deploy and backup your website:

picogen --generate --deploy bucket_name --backup bucket_name
picogen -gd bucket_name -b bucket_name

Picogen has a baked in option for deployment and/or backup of your static website to AWS S3. You can ommit these functions simply by not using the flags --deploy and/or --backup. You can just use picogen --generate and picogen will look for your content directory and optionally your themes/your-theme directory and build the website into the build directory. Obviusly if you want to deploy and/or backup your website to AWS S3 you need to setup AWS CLI as well as S3 buckets, one for deployment and one for backing up your makrdown files.

Note, during the build, all the files in the static/favicons directory in your theme will be copied over to the root of the build too.

The config variable that containes the values from your .env file is available to all of the jinja templates. Also variables posts, pages and categories that contain all posts, pages and categories are available to all jinja templates. Additionaly, single post, page and category variables are available to the templates with the same names respectively.

To serve your website locally on port 8000 you can use:

python -m http.server --directory build --bind localhost

References:

License

License: MIT

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

picogen-0.0.24.tar.gz (51.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

picogen-0.0.24-py3-none-any.whl (54.8 kB view details)

Uploaded Python 3

File details

Details for the file picogen-0.0.24.tar.gz.

File metadata

  • Download URL: picogen-0.0.24.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for picogen-0.0.24.tar.gz
Algorithm Hash digest
SHA256 109d8698eb577be8a37c2f468b49f17ee5f5a994e5a0e1c6b2a4019db48e9636
MD5 26056fe9d92ff8680f513fd868076cec
BLAKE2b-256 75350783eb278832be70f4d9831f675bc3142923ebc56012690dbdb58853821d

See more details on using hashes here.

Provenance

The following attestation bundles were made for picogen-0.0.24.tar.gz:

Publisher: publish.yml on vlatan/picogen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file picogen-0.0.24-py3-none-any.whl.

File metadata

  • Download URL: picogen-0.0.24-py3-none-any.whl
  • Upload date:
  • Size: 54.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for picogen-0.0.24-py3-none-any.whl
Algorithm Hash digest
SHA256 0b651c8e59d6be7ed7f727f95341e24b36f87708170f7ca908f5b2837ad1e220
MD5 7356fd1054e6a4e8d8f67112457dd57e
BLAKE2b-256 4fec3168e9e0883667552ac78863f7322b4a907edeb62b695b17a5f099a097a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for picogen-0.0.24-py3-none-any.whl:

Publisher: publish.yml on vlatan/picogen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page