Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. ratatouille

ratatouille

MITElixir

A declarative terminal UI kit for Elixir that builds rich text-based applications using an HTML-like DSL.

GitHubGitHub
840 stars41 forks0 contributors

What is ratatouille?

Ratatouille is a declarative terminal UI kit for Elixir that allows developers to build rich text-based terminal applications using an HTML-like DSL. It solves the problem of creating structured, maintainable terminal interfaces by implementing The Elm Architecture for state management and providing a strict, validated view system.

Target Audience

Elixir developers who need to build terminal-based applications, such as CLI tools, monitoring dashboards, or interactive text interfaces, and prefer a declarative, structured approach over imperative drawing libraries.

Value Proposition

Developers choose Ratatouille for its declarative, HTML-like DSL that simplifies UI construction, its strict validation that catches errors early, and its implementation of The Elm Architecture, which brings predictable state management to terminal apps.

Overview

A TUI (terminal UI) kit for Elixir

Use Cases

Best For

  • Building interactive CLI tools with complex user interfaces
  • Creating terminal-based monitoring dashboards or observability tools
  • Developing educational or demo applications in Elixir with visual feedback
  • Prototyping terminal applications quickly using a declarative approach
  • Implementing text-based games or simulations in the terminal
  • Building custom Erlang/Elixir observer or debugging tools

Not Ideal For

  • Projects requiring high-performance, real-time terminal graphics or complex animations
  • Teams that prefer imperative, low-level control over terminal output without a structured framework
  • Applications needing a vast library of pre-built, production-ready UI widgets out of the box
  • Environments where installing Elixir/Erlang runtime is impractical or prohibited

Pros & Cons

Pros

Declarative HTML-like DSL

Provides an intuitive, HTML-like syntax with tags like view, row, and column, making UI construction familiar and reducing boilerplate code, as shown in the counter example.

Predictable State Management

Implements The Elm Architecture with Model-Update-View pattern, ensuring clear state transitions and updates, which fits naturally with Elixir's functional style.

Strict Validation

Enforces well-structured view trees and raises descriptive errors for invalid configurations, catching bugs early and simplifying debugging.

Flexible Styling and Events

Supports text colors, backgrounds, attributes, and handles terminal events like key presses and resizing, enabling rich, interactive UIs without low-level handling.

Cons

Immature Feature Set

The roadmap admits incomplete features like configurable charts and uniform styling support, limiting advanced use cases and requiring custom workarounds.

Complex Packaging

Packaging for distribution is described as 'rough around the edges' and requires additional tools like Distillery for executable releases, adding overhead.

Limited Ecosystem

Only a few projects are listed as using it, indicating a small community, fewer third-party libraries, and less shared knowledge or examples.

Frequently Asked Questions

Quick Stats

Stars840
Forks41
Contributors0
Open Issues17
Last commit3 years ago
CreatedSince 2019

Tags

#elixir#text-based-interface#terminal#tui#elm-architecture#declarative-ui#terminal-ui#elixir-library#terminal-applications

Built With

T
Termbox
E
Elixir

Included in

Elixir13.1k
Auto-fetched 1 day ago

Related Projects

owlowl

A toolkit for writing command-line user interfaces.

Stars520
Forks14
Last commit3 months ago
progress_barprogress_bar

Command-line progress bars and spinners for Elixir.

Stars338
Forks21
Last commit10 months ago
scribescribe

Pretty-print tables of Elixir structs and maps.

Stars306
Forks12
Last commit3 months ago
table_rextable_rex

An Elixir app which generates text-based tables for display

Stars262
Forks27
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub