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
- Usage
- Configuration
- Folder Structure
- Advanced Features
- Example
- Changelog
- Contributing
- License
- Contact
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
: Parsesconfig.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
, andsave
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/editconfig.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:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-feature
- Commit changes:
git commit -m "Add my feature"
- Push to the branch:
git push origin feature/my-feature
- 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
- Maintainer: Nihar (hi@nihars.com)
- Repository: https://gitlab.com/niharokz/rynz
- Issues: https://gitlab.com/niharokz/rynz/-/issues
Built with ❤️ using Python and Jinja2. Star the repo if Rynz sparks joy!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d781f509142e83b6a557b5b0226f2ddd976bc98804323d236cffc40044470ca |
|
MD5 | 6a128077df9e05194440077637d0c701 |
|
BLAKE2b-256 | 68f39eb56e392cdb43a96dd2b49daae05f813d0a451cc37fa63e10544be0c6e5 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a9528dcc31de86fea555b750981883ccf40cbd05d9fe3408178cb0bf6f5909e |
|
MD5 | cb68cdd01c62b3514c72df14cd7c7e24 |
|
BLAKE2b-256 | 96e4358093de86c41666bbb96bc517396cd1aa4ba7ee00da09ff6dbd1670a6f1 |