Skip to main content

Build static sites with Python code instead of templates

Project description

Nitro CLI

A static site generator that lets you build websites using Python and nitro-ui.

Features

  • Python-Powered - Write pages in Python with nitro-ui instead of template languages
  • Live Reload - Development server with automatic browser refresh
  • Incremental Builds – Only rebuild changed pages
  • Dynamic Routes – Generate pages from data with [slug].py pattern
  • Image Optimization – Responsive images with WebP/AVIF conversion
  • Islands Architecture - Partial hydration for interactive components
  • One-Click Deploy – Netlify, Vercel, or Cloudflare Pages

Installation

pip install nitro-cli

AI Assistant Integration

Add Nitro CLI knowledge to your AI coding assistant:

npx skills add nitrosh/nitro-cli

This enables AI assistants like Claude Code to understand Nitro CLI and generate correct nitro-ui code.

Quick Start

nitro new my-site
cd my-site
nitro dev

Visit http://localhost:3000. Build for production with nitro build.

Writing Pages

Pages are Python files in src/pages/ that export a render() function:

# src/pages/index.py
from nitro_ui import HTML, Head, Body, H1, Title
from nitro import Page

def render():
    return Page(
        title="Home",
        content=HTML(
            Head(Title("Home")),
            Body(H1("Welcome!"))
        )
    )

Output paths mirror the file structure: src/pages/about.pybuild/about.html

Dynamic Routes

Generate multiple pages from data using [param].py naming:

# src/pages/blog/[slug].py
from nitro import Page
from nitro_datastore import NitroDataStore

def get_paths():
    data = NitroDataStore.from_file("src/data/posts.json")
    return [{"slug": p["slug"], "title": p["title"]} for p in data.posts]

def render(slug, title):
    return Page(title=title, content=...)

Commands

Command Description
nitro new <name> Create new project
nitro dev Start dev server with live reload
nitro build Build for production
nitro preview Preview production build
nitro clean Remove build artifacts
nitro deploy Deploy to hosting platform

Run nitro <command> --help for options.

Configuration

# nitro.config.py
from nitro import Config

config = Config(
    site_name="My Site",
    base_url="https://mysite.com",
    renderer={"minify_html": True}
)

Ecosystem

Nitro isn’t just one library - it's a growing toolkit of focused building blocks you can mix and match to ship faster:

  • nitro-ui - Generate clean, reusable HTML with a lightweight, developer-friendly API
  • nitro-datastore - Load and access data effortlessly using simple dot-notation paths
  • nitro-dispatch - A flexible plugin system to extend features without touching core code
  • nitro-validate - Fast, reliable data validation to keep your inputs and payloads rock-solid

License

This project is licensed under the BSD 3-Clause License. See the LICENSE file for details.

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

nitro_cli-1.0.3.tar.gz (52.5 kB view details)

Uploaded Source

Built Distribution

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

nitro_cli-1.0.3-py3-none-any.whl (57.0 kB view details)

Uploaded Python 3

File details

Details for the file nitro_cli-1.0.3.tar.gz.

File metadata

  • Download URL: nitro_cli-1.0.3.tar.gz
  • Upload date:
  • Size: 52.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nitro_cli-1.0.3.tar.gz
Algorithm Hash digest
SHA256 dfde32e65e38db5ccdf6466a9eccf468df308bf68a2d71f11d6f30de5837e966
MD5 d17f0b90e2f8c90d0eb4929ac669ac53
BLAKE2b-256 dc8d40cd37d32b10e890ef7cbc04c1689a3a6b1aa2842f2e198767eae6e4aefa

See more details on using hashes here.

File details

Details for the file nitro_cli-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: nitro_cli-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 57.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nitro_cli-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 23f615429024175baca03f75a9d57f720860f89af4e9b2ee3b49de357a4d44ec
MD5 725fca7075f6b7264b4c4895a2f7e41a
BLAKE2b-256 7da42c083569aacff6c5b3479e02352c058864c33a70f5a81c7f8e9446e0b6d6

See more details on using hashes here.

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