Skip to content

foundation/inky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

430 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inky

Inky is a complete email framework that converts simple HTML into complex, responsive email-ready HTML. It includes a templating engine, built-in responsive CSS, CSS inlining, validation, and a CLI toolchain.

Written in Rust. Distributed as a CLI binary, WASM module, native shared library, and Rust crate — with official bindings for Node.js, PHP, Python, Ruby, and Go.

Inky was formerly known as "Foundation for Emails." Starting with v2, everything is unified under the Inky brand.

Give Inky simple HTML like this:

<container>
  <row>
    <column lg="6">Left</column>
    <column lg="6">Right</column>
  </row>
</container>

And get email-ready HTML like this:

<table role="presentation" align="center" class="container">
  <tbody><tr><td>
    <table role="presentation" class="row">
      <tbody><tr>
        <th class="small-12 large-6 columns first">
          <table role="presentation"><tbody><tr><th>Left</th></tr></tbody></table>
        </th>
        <th class="small-12 large-6 columns last">
          <table role="presentation"><tbody><tr><th>Right</th></tr></tbody></table>
        </th>
      </tr></tbody>
    </table>
  </td></tr></tbody>
</table>

Install

# Homebrew
brew install foundation/inky/inky

# Cargo
cargo install inky-cli

# npm (WASM)
npm install inky-email

Quick Start

# Scaffold a new project
inky init my-email
cd my-email

# Build
inky build

# Watch for changes
inky watch

What's New in v2

  • Rust rewrite — fast, single binary, cross-platform
  • Modern syntax — attributes over classes (size="small" instead of class="small")
  • 27 components — layout, buttons, cards, alerts, hero sections, social links, video, and more
  • CSS inlining — built-in, enabled by default
  • SCSS framework — responsive email styles with per-template variable overrides
  • Layouts & includes<layout>, <include>, custom <ink-*> components, and template variables
  • Validation — catches missing alt text, Gmail clipping risks, Outlook issues
  • Data merging — optional Jinja2-compatible data merge via MiniJinja (--data data.json)
  • Hybrid output--hybrid mode emits <div> layout with Outlook MSO ghost table fallbacks
  • Bulletproof buttons — VML <v:roundrect> fallbacks for styled buttons in Outlook
  • Live previewinky serve starts a local dev server with auto-reload
  • Template friendly — auto-preserves ERB, Jinja2, Handlebars, and other merge tag syntax
  • Plain text generation — auto-generate .txt multipart email version (--plain-text)
  • Spam checkerinky spam-check detects common spam triggers
  • 22 validation rules — links, accessibility, rendering quirks, Gmail clipping, spam detection
  • Per-template data--data-dir auto-pairs JSON data files with templates
  • Migration toolinky migrate converts v1 syntax to v2 automatically
  • Language bindings — Node.js, PHP, Python, Ruby, Go

Documentation

Examples

Language Repository
Node.js inky-example-node
PHP inky-example-php
Python inky-example-python
Ruby inky-example-ruby
Go inky-example-go

Building from Source

git clone https://github.com/foundation/inky.git
cd inky

# Build the CLI
cargo build -p inky-cli --release
# Binary at: target/release/inky

# Run tests
cargo test --workspace

Architecture

Crate Purpose Output
inky-core Core transformation engine Rust library
inky-cli Command-line tool inky binary
inky-wasm Browser/Node.js bindings .wasm module
inky-ffi PHP/Python/Ruby/Go bindings .so / .dylib / .dll

License

MIT

About

An email framework that converts simple HTML into responsive email-ready HTML.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors