Skip to main content

A tiny Python-authored static site generator for terminal-inspired static web pages.

Project description

PySiteGen

DOCS badge PyPi badge

PySiteGen is a tiny static site generator for people who would rather compose HTML with Python without any runtime server, client framework, or hidden build graph. PySiteGen gives you primitives. The default visual taste is just a theme layer with terminal-dark aesthetics. It is practical. You write Python functions that return HTML nodes. PySiteGen renders them to static HTML and copies the assets you explicitly ask for.

Why This Exists?

  • You see, my partner understands Python and web was a bit intimidating for them.
  • So, I abstracted just enough web, for this to not become a crutch.
  • And, build static sites with Python primitives.
  • Because, every Python framework felt ...heavier and too abstracted.
  • That's it. No "because I was tired of X, so I over-engineered this piece of crap Y".
  • The irony.

What Can You Build?

  • Static landing pages
  • Personal portfolio and resume sites
  • Documentation sites
  • Collection or showcase pages
  • SPA-style sites with hash routes

The framework gives you primitives. Your project owns the structure.

Project Layout

# generated by pysitegen init
my-site/
  index.py
  assets/index.css
  content/docs/.gitkeep
  static/
    favicon.png
    robots.txt
  .gitignore
  README.md

# produces plain output files
# easily hostable
my-site/
  public/
    index.html
    assets/index.css
    favicon.png
    robots.txt

Works for docs sites, small product or project pages, personal sites, link hubs, simple SPA-style hash routes, and static pages that benefit from Python data and composition.

Build And Preview

# Install PySiteGen from PyPI
python -m pip install pysitegen
pysitegen --version

# Create a new site
pysitegen init my-site
cd my-site
pysitegen serve

# static server without watching or browser reload
pysitegen serve --no-reload

A Page

from pysitegen import a, default_dark, h1, p, page, section

def build():
    return page(
        section(
            p("PySiteGen", class_="eyebrow"),
            h1("Hello from Python."),
            p("This is a static page generated from Python primitives.", class_="muted"),
            a("Read more", href="#more", class_="button primary"),
            class_="container stack",
        ),
        title="Hello",
        description="A PySiteGen page.",
        theme=default_dark(),
    )

Build it and serve it.

This Repo

This repository contains the package source, tests, and the PySiteGen website:

src/pysitegen/  package source and bundled framework assets
tests/          fixture-based behavior tests
website/        PySiteGen website source

Develop locally:

python -m pip install -e .[dev]
python -m pytest
# Build and serve the website

Do not edit website/public/ as source.

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

pysitegen-1.2.1.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

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

pysitegen-1.2.1-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file pysitegen-1.2.1.tar.gz.

File metadata

  • Download URL: pysitegen-1.2.1.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysitegen-1.2.1.tar.gz
Algorithm Hash digest
SHA256 2c8225d6cb552ce875c6c81bdad7691874ca1f69ccc6c6c7e2f81e9e91f1b4d0
MD5 2a1b8837af375bd1df2e20a32aa581ed
BLAKE2b-256 a55b7573d8b51a3270268fcf4baffbfab383c1560d8058f9fb65396ca3bf9edd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysitegen-1.2.1.tar.gz:

Publisher: publish.yml on ujjwalvivek/pysitegen

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

File details

Details for the file pysitegen-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: pysitegen-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysitegen-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f0710fea374ee9ff7b77177f15d8acfcca36c41b481d89b2f7213edf44b8020d
MD5 4f0fedd177b8d0c3f1e5b2a1ae04762a
BLAKE2b-256 57efb052d0dc3ae9b7fc39720c2674c265e118aa234e2532c2a22b1be5319099

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysitegen-1.2.1-py3-none-any.whl:

Publisher: publish.yml on ujjwalvivek/pysitegen

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