Skip to content

fwdslsh/unify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

unify - an SSG for a more peaceful future

unify banner

A modern, lightweight static site generator that brings the power of server-side includes, markdown processing, and live development to your workflow. Build maintainable static sites with component-based architectureβ€”no more copying and pasting headers, footers, and navigation across multiple pages!

So simple, it shouldn't be this powerful!

✨ Perfect for Frontend Developers

  • Zero Learning Curve: Uses familiar Apache SSI syntax (<!--#include file="header.html" -->) and modern DOM templating (<include>, data-slot, <template>)
  • Modern Tooling: Built with ESM modules, powered by Bun for maximum performance
  • Live Development: Built-in dev server with live reload via Server-Sent Events
  • Multi-Format Support: HTML, Markdown with YAML frontmatter, and static assets
  • Convention-Based: Files starting with _ are non-emitting partials/layouts by convention
  • SEO Optimized: Automatic sitemap.xml generation
  • Framework-Free: Pure HTML and CSS outputβ€”no build complexity or JavaScript frameworks required
  • High Performance: Native Bun APIs with HTMLRewriter, fs.watch, and Bun.serve
  • Cross-Platform: Standalone executables for Linux, macOS, and Windows

πŸš€ Quick Start

Installation

# Install Bun (required runtime)
curl -fsSL https://bun.sh/install | bash

# Option 1: Install globally via Bun
bun add -g @fwdslsh/unify

# Option 2: Install cross-platform binary (Linux, macOS, Windows)
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash

# Option 3: User installation (to ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash -s -- --user

# Basic usage with defaults (src => dist)
unify build                    # Build from src/ to dist/
unify serve                    # Serve with live reload on port 3000
unify watch                    # Watch for changes and rebuild
unify init                     # Initialize new project

# Advanced usage with custom options
unify build --pretty-urls --base-url https://mysite.com
unify build --copy "./assets/**/*.*" --clean
unify serve --port 8080 --host 0.0.0.0

🏎️ Bun-Native Performance

unify is built exclusively for Bun and uses native APIs for maximum performance:

Feature Implementation Performance
HTML Processing HTMLRewriter Ultra-fast DOM processing
File Watching fs.watch Native file system events
Dev Server Bun.serve High-performance HTTP server
Build Caching Bun.hash Native cryptographic hashing
Cold Start Bun native ~800ms startup time

πŸ“ Quick Example

<!-- src/index.html -->
<!--#include virtual="/_includes/header.html" -->
<main>
  <h1>Welcome!</h1>
  <p>Build maintainable sites with includes and layouts.</p>
</main>
<!--#include virtual="/_includes/footer.html" -->
<!-- Alternative modern DOM syntax -->
<include src="/_includes/header.html"></include>
<main>
  <template data-slot="title">My Page Title</template>
  <h1>Welcome!</h1>
  <p>Use data-slot attributes and templates for advanced layouts.</p>
</main>
<include src="/_includes/footer.html"></include>

See the Getting Started Guide for a complete tutorial.

πŸ“š Documentation

⚑ Core Commands

# Build your site (default command)
unify
unify build

# Development server with live reload
unify serve

# Watch for changes without serving
unify watch

# Initialize new project
unify init

# Get help
unify --help

See CLI Reference for all options.

🎯 Why unify?

  • Simple: Familiar HTML and Apache SSI syntax with modern templating
  • Fast: Incremental builds and smart dependency tracking
  • Modern: ESM modules, live reload, cross-platform binaries
  • Flexible: Works with HTML, Markdown, and convention-based architecture
  • Portable: Runs on Bun (optimal), Node.js, and Deno
  • Secure: Path traversal prevention and input validation
  • Developer-Friendly: Built-in development server with comprehensive error handling

πŸ”’ Security

  • Path traversal prevention: All file operations validated against source boundaries
  • Input validation: CLI arguments and file paths sanitized
  • Static output: No client-side template execution vulnerabilities
  • Secure serving: Development server restricted to output directory

πŸ§ͺ Testing

unify has comprehensive test coverage:

  • Security tests: Path traversal and validation
  • CLI tests: All commands and options
  • Build process tests: Complete workflows
  • Error handling tests: Graceful degradation

πŸ”— Cross-Platform Support

Runtime Requirements

  • Bun: Minimum version 1.2.19 (recommended for best performance)
  • Node.js: 14+ with native ESM support
  • Deno: Latest stable version

Installation Options

1. Cross-Platform Binary (Recommended)

Download and install standalone executables for Linux, macOS, and Windows:

# System-wide installation
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash

# User installation (to ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash -s -- --user

# Specific version
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash -s -- --version v0.4.3

# Manual download from GitHub Releases
# https://github.com/fwdslsh/unify/releases

2. Via Package Manager

# Bun (fastest execution)
bun add -g @fwdslsh/unify
bun unify serve

# npm/Node.js
npm install -g @fwdslsh/unify
unify serve

# Deno
deno run --allow-read --allow-write --allow-net npm:@fwdslsh/unify serve

Supported Platforms

Platform Architecture Binary Package Manager
Linux x86_64, ARM64 βœ… βœ…
macOS x86_64, ARM64 (Apple Silicon) βœ… βœ…
Windows x86_64, ARM64 βœ… βœ…

The cross-platform binaries are compiled from Bun and include all dependencies, requiring no additional runtime installation.

πŸ—ΊοΈ Roadmap

See our detailed roadmap for completed features, current development, and future plans.

🀝 Contributing

We welcome contributions! See our Contributing Guide for details.

Development Setup

git clone https://github.com/fwdslsh/unify
cd unify
bun install
bun test
bun run build

CI/CD Workflows

Our GitHub Actions workflows are optimized for performance and cost efficiency. See CI/CD Workflows Documentation for details on:

  • Fast test feedback loops
  • Docker build validation on PRs
  • Automated publishing on releases

Built with ❀️ for frontend developers who love simple, powerful tools.

About

Simple foundations focused SSG

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •