Skip to main content

One post tagged with "JAMstack"

Modern JAMstack architecture — Python, no Node.

View All Tags

Why We Built a Python SSG in 2026

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab
Mesin Kasir
Founder, Axcora Technology

In 2026, static site generators are everywhere. Astro, Eleventy, Hugo, Jekyll — the list goes on. So why did we build another one?

Because none of them ran on Python.

The Problem​

Every SSG forces you into a language ecosystem:

SSGLanguage
JekyllRuby
EleventyJavaScript
AstroJavaScript
HugoGo
GatsbyJavaScript
HexoJavaScript

If you're a Python developer, you're stuck. Either:

  1. Learn a new language for your static site
  2. Use Jekyll and deal with Ruby dependency hell

Neither is good.

Python Developers Are Everywhere​

Python is the most popular programming language in the world. It's used for:

  • Data science
  • Machine learning
  • Web scraping
  • Automation
  • Backend APIs
  • Static sites

Yet there was no first-class Python SSG.

What We Built​

Pycora Pro is a Python-native static site generator. It uses:

  • Python 3.8+ — no compilation, no version managers
  • Jinja2 — the most popular Python template engine
  • Markdown — with YAML frontmatter
  • PAX — our custom template loader

The result: a static site generator that feels like Python.

Why Not Just Use Jekyll?​

Jekyll works. But:

  • Ruby is a second language. Most Python devs don't know it.
  • Gem dependencies break. Every Ruby update, every gem update.
  • Slow builds. Jekyll is 4–5x slower than Pycora.
  • No Python integration. Can't use pandas, requests, or any Python library.

Why Not Eleventy or Astro?​

Both are excellent. But:

  • Node.js dependency. You need Node + npm + a bundler.
  • JavaScript-only. Can't import Python modules.
  • Build complexity. Astro has a build step; Pycora doesn't.
  • Bundle size. Astro ships client JS by default; Pycora ships 0 KB.

The Python Advantage​

Using Python for static sites gives you:

1. Scripting​

Generate content programmatically:

# fetch_posts.py
import requests

posts = requests.get("https://api.example.com/posts").json()

for post in posts:
with open(f"content/posts/{post['slug']}.md", "w") as f:
f.write(f"---\ntitle: {post['title']}\n---\n\n{post['body']}")

2. Data Processing​

Use pandas, numpy, or any Python library to generate content:

import pandas as pd

df = pd.read_csv("data.csv")

for _, row in df.iterrows():
# generate markdown from CSV
...

3. No Runtime​

Output is still pure static HTML. Python is only used at build time.

4. Zero Client JS​

Pycora ships 0 KB client JavaScript by default. Your site loads instantly.

Performance​

Pycora ProJekyllEleventyAstro
Build 40 pages0.87s4.2s2.1s3.8s
RuntimePythonRubyNodeNode
Client JS0 KB0 KB0 KB~15 KB
Dependencies4 pip packagesRuby + gemsNode + npmNode + npm

The Philosophy​

We're not trying to replace Astro or Eleventy. We're giving Python developers a native option.

If you're a Python developer, you shouldn't have to learn JavaScript to build a static site.

Get Pycora Pro​

Pycora Pro is $145, one payment, own forever.

  • Python 3.8+
  • Jinja2 + PAX
  • Bento design system
  • Decap CMS included
  • Unlimited projects

Get Pycora Pro on Gumroad →

Next Steps​