Skip to content

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

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

sebastienrousseau/nucleusflow

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.

About

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

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 2

  •  
  •  
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy