Static sites, pure Python.
Skip the template languages. Write pages as Python functions, generate optimized HTML, and deploy anywhere.
$ pip install nitro-cliSix Tools. One Ecosystem.
Install only what you need. Each package works standalone or together with the rest.
Build static sites with Python code instead of template engines. Live reload, incremental builds, deploy anywhere.
Create HTML with Python classes instead of strings. Type-safe, autocomplete-friendly, zero dependencies.
Access JSON with simple dot notation. No schemas to define - just load your data and go.
Add plugins to any Python app. Async-ready hooks with priorities and error isolation built in.
Validate data in one line. 51+ built-in rules, zero dependencies, clean pipe syntax.
Resize, convert, and optimize images with a chainable API. Generate responsive sizes in one call.
Dead Simple
Three concepts. That's it. No build configs, no magic - just Python you already know.
def render():
return Page(
title="Hello",
content=Body(H1("Hello, World!")),
)Pages are functions.
Each page is a Python function. Use variables, loops, conditionals - real code, not a template language.
Card(
H2("Welcome"),
Paragraph("Get started in seconds."),
cls="hero-card"
)Components are classes.
HTML elements are Python classes. Nest them, reuse them, pass data as keyword arguments.
data = DataStore.from_file("posts.json")
for post in data.posts:
Card(title=post.title)Data is dot notation.
Load JSON or YAML and access it with dots. No schemas, no boilerplate - just data.field.value.
"Python is all you need."
No webpack. No template languages. No JavaScript required. Just Python functions that return HTML.
View on GitHub