Skip to main content

A minimal, fast static site generator built for Markdown lovers.

Project description

Rynz

🕊️ Rynz: Really Your Note Zenerator
Rynz is a lightweight, JavaScript-free static site generator crafted for developers who value Markdown, speed, and simplicity. Built with Python and Jinja2, it delivers fast, customizable static websites with an intuitive CLI, optimized page generation, and clean, minimal templates. The main website for the Rynz project is https://rynz.de.

Why Choose Rynz?

  • Blazing Fast: Optimized page generation for rapid site builds.
  • No JavaScript: Lightweight, clean HTML output by default.
  • Clean Templates: Streamlined Jinja2 templates for easy customization.
  • Python-Powered: Modular, forkable codebase for extensibility.
  • Markdown-First: Effortless content creation with Markdown.
  • Open-Source: Licensed under the MIT License.

Table of Contents

Installation

Install Rynz via pip for the latest stable release:

pip install rynz

Or install the development version from GitLab:

pip install git+https://gitlab.com/niharokz/rynz

Prerequisites

  • Python 3.8 or higher
  • pip for dependency management

Dependencies

Rynz automatically installs:

  • pyyaml: Parses config.yml and frontmatter.
  • jinja2: Powers templating for HTML output.
  • markdown2: Converts Markdown to HTML.
  • rich: Enhances CLI with colorful output.

Usage

Rynz provides a streamlined CLI for managing your static site. Run rynz --help for details.

usage: rynz [-h] [-v] {create,add,deploy,serve,config,test,save} ...

🕊️ Rynz: Really Your Note Zenerator.

positional arguments:
  {create,add,deploy,serve,config,test,save}
                        Available commands
    create              Create a new Rynz project.
    add                 Create a new note or blog post.
    deploy              Convert Markdown files into static HTML
    serve               Serve your site locally at http://localhost:5555
    config              View or edit site configuration (config.yml)
    test                Test your Rynz setup and structure
    save                Save changes with Git (stage and commit)

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit

1. Create a New Project

Initialize a new project with the default structure:

rynz create my-site

Sets up my-site/ with config.yml, templates, and content directories.

2. Add a New Note or Post

Create a new Markdown file:

rynz add pageName

Generates content/note/pageName.md with frontmatter.

3. Deploy the Site

Convert Markdown to static HTML, outputting to public/:

rynz deploy

4. Serve Locally

Preview your site with a local server:

rynz serve

Access at http://localhost:5555. Use a custom port:

rynz serve -p 8080

5. Manage Configuration

View or edit config.yml:

rynz config

Check rynz config --help for specific options.

6. Test Your Setup

Validate your project structure and configuration:

rynz test

Ensures no missing files or invalid frontmatter.

7. Save Changes with Git

Stage and commit changes:

rynz save

Or commit with a custom message:

rynz save -m "Your commit message"

Configuration

Customize your site with config.yml in the project root. Example:

site_title: My Rynz Site
base_url: https://example.com
theme: default
favicon: resource/favicon.ico

Access in templates with Jinja2:

<link rel="icon" href="{{ config.get('favicon') }}">

Folder Structure

my-site/
|-- public/                  # Generated HTML output
|-- config.yml               # Site configuration
|-- content/                 # Markdown content
|   |-- header.md           # Header content
|   |-- footer.md           # Footer content
|   |-- home.md             # Homepage content
|   `-- note/               # Individual pages/notes
|       `-- sample.md
|-- resource/                # Static assets (CSS, images, etc.)
|   `-- style.css
`-- templates/               # Jinja2 templates
    |-- home_template.html  # Homepage template
    `-- note_template.html  # Note/page template

Folder Breakdown

  • config.yml: Site-wide settings (title, theme, etc.).
  • content/: Markdown files for pages and notes.
  • resource/: Static assets (CSS, images, favicon).
  • templates/: Jinja2 templates for HTML output.
  • public/: Built site output.

Advanced Features

1. Faster Page Generation

Rynz v1.0.0 optimizes rendering with streamlined Markdown processing and efficient Jinja2 templating, significantly reducing build times.

2. Cleaner Templates

Templates are now more modular and minimal, with simplified Jinja2 syntax for easier customization and maintenance.

3. Homepage Visibility via Tags

Control homepage visibility with tags. Add home to frontmatter:

---
tags: [home]
---

Filter in home_template.html:

{% for page in pages if 'home' in page.tags %}
  <a href="{{ page.url }}">{{ page.title }}</a>
{% endfor %}

4. Custom Metadata

Add per-page metadata:

meta: '<link rel="stylesheet" href="/extra.css">'

Render in templates:

{{ page.meta | safe }}

5. Extended Configuration

Add custom keys to config.yml:

analytics_id: UA-XXXXX-Y

Use in templates:

<script src="https://analytics.com/{{ config.get('analytics_id') }}"></script>

Example

Explore a live Rynz-generated site:
https://nih.ar https://rynz.de

View its source:
https://gitlab.com/niharokz/nih.ar

Changelog

v1.0.0 (April 2025) - Major Release

  • New CLI Commands: Introduced create, add, deploy, serve, config, test, and save for a streamlined workflow.
  • Faster Page Generation: Optimized Markdown processing and Jinja2 rendering for significantly reduced build times.
  • Cleaner Templates: Simplified and modularized Jinja2 templates for easier customization.
  • Config Command: Added rynz config to view/edit config.yml.
  • Test Command: Added rynz test to validate project setup and structure.
  • Save Command: Added rynz save to easily commit changes using Git.
  • Removed RSS Support: Eliminated RSS feed generation and rss_enabled option for a leaner feature set.
  • Improved CLI: Enhanced help output and error handling with rich.
  • Python Support: Added compatibility for Python 3.11+.
  • Bug Fixes: Resolved edge cases in frontmatter parsing and template rendering.

v0.9.9 (Beta)

  • Replaced showInHome with tag-based homepage visibility.
  • Improved CLI error handling with color-coded output.
  • Optimized build performance and modularity.

v0.9.8 (Beta)

  • Added custom port support for serve.
  • Auto-handled /abc/abc.html in dev server.
  • Supported metadata injection via meta tag.
  • Improved Windows compatibility.

See CHANGELOG.md for full details.

Contributing

Contributions are welcome! To contribute:

  1. Fork the repository.
  2. Create a feature branch:
    git checkout -b feature/my-feature
    
  3. Commit changes:
    git commit -m "Add my feature"
    
  4. Push to the branch:
    git push origin feature/my-feature
    
  5. Open a pull request.

Code Style

  • Follow PEP 8 for Python.
  • Run tests:
    python -m unittest discover
    

License

Licensed under the MIT License. See LICENSE for details.

Contact


Built with ❤️ using Python and Jinja2. Star the repo if Rynz sparks joy!

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

rynz-1.0.1.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

rynz-1.0.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file rynz-1.0.1.tar.gz.

File metadata

  • Download URL: rynz-1.0.1.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for rynz-1.0.1.tar.gz
Algorithm Hash digest
SHA256 7d781f509142e83b6a557b5b0226f2ddd976bc98804323d236cffc40044470ca
MD5 6a128077df9e05194440077637d0c701
BLAKE2b-256 68f39eb56e392cdb43a96dd2b49daae05f813d0a451cc37fa63e10544be0c6e5

See more details on using hashes here.

File details

Details for the file rynz-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: rynz-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for rynz-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6a9528dcc31de86fea555b750981883ccf40cbd05d9fe3408178cb0bf6f5909e
MD5 cb68cdd01c62b3514c72df14cd7c7e24
BLAKE2b-256 96e4358093de86c41666bbb96bc517396cd1aa4ba7ee00da09ff6dbd1670a6f1

See more details on using hashes here.

Supported by

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