#static #static-site #templating #ssg #front-end #file-content #html-templating

build nucleusflow

A powerful Rust library for content processing, enabling static site generation, document conversion, and templating

1 unstable release

new 0.0.1 Nov 7, 2024

#35 in #ssg

MIT/Apache

210KB
4.5K SLoC

NucleusFlow logo

NucleusFlow

A fast, flexible and secure static site generator written in Rust.

Made With Love Crates.io lib.rs Docs.rs Codecov Build Status GitHub

WebsiteDocumentationReport BugRequest FeatureContributing Guidelines

Overview

NucleusFlow is a powerful content processing library and static site generator that prioritises security, performance and flexibility. Built in Rust, it offers a comprehensive toolkit for managing content lifecycles, from processing raw content to generating optimised static websites.

Features

  • Secure Content Processing

    • Robust input validation and sanitisation
    • Path traversal protection
    • Memory-safe operations
    • Secure defaults for all operations
  • Flexible Content Pipeline

    • Markdown processing with frontmatter support
    • Template rendering with Handlebars
    • HTML generation with minification
    • Asset management and optimisation
  • Performance Optimised

    • Parallel processing capabilities
    • Efficient memory usage
    • Content caching
    • Minimal dependencies
  • Developer Experience

    • Intuitive CLI interface
    • Rich error messages
    • Extensive documentation
    • Type-safe configurations

Installation

Add nucleusflow to your Cargo.toml:

[dependencies]
nucleusflow = "0.0.1"

Usage

Here's a basic example of how to use nucleusflow:

use nucleusflow::{NucleusFlow, NucleusFlowConfig, FileContentProcessor, HtmlOutputGenerator, HtmlTemplateRenderer};
use std::path::PathBuf;

// Create configuration
let config = NucleusFlowConfig::new(
    "content",
    "public",
    "templates"
).expect("Failed to create config");

// Initialize processors with the concrete implementations
let content_processor = FileContentProcessor::new(PathBuf::from("content"));
let template_renderer = HtmlTemplateRenderer::new(PathBuf::from("templates"));
let output_generator = HtmlOutputGenerator::new(PathBuf::from("public"));

// Create NucleusFlow instance
let nucleus = NucleusFlow::new(
    config,
    Box::new(content_processor),
    Box::new(template_renderer),
    Box::new(output_generator)
);

// Process content
nucleus.process().expect("Failed to process content");

CLI Usage

# Create a new site
nucleusflow new my-site --template blog

# Build the site
nucleusflow build --content content/ --output public/

This example demonstrates setting up NucleusFlow with a Markdown processor, Handlebars templating, and HTML output generation.

Documentation

For full API documentation, please visit docs.rs/nucleusflow.

Examples

To explore more examples, clone the repository and run the following command:

cargo run --example example_name

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under either of

at your option.

Acknowledgements

Special thanks to all contributors who have helped build the nucleusflow library.

Dependencies

~43–77MB
~1.5M SLoC