30 open-source projects similar to alecaivazis/survey, ranked by how many features they have in common. Compare stars, activity and what each one does to find the best Survey alternative.
This project is a Node.js CLI input library and toolkit for building interactive command-line user interfaces. It functions as a questionnaire framework and prompt orchestrator designed to capture structured user data through a variety of visual input controls. The system differentiates itself through a logic-driven engine that supports dynamic prompt chains, allowing the sequence and properties of questions to adapt at runtime based on previous user answers. The toolkit provides a wide range of specialized input types, including date pickers, searchable lists, masked passwords, and numeric
Asciimatics is a cross-platform terminal user interface framework and console wrapper. It functions as a curses-compatible library providing a toolkit for building interactive text-based applications, an ASCII art generator, and a terminal animation engine. The project distinguishes itself through a visual effects engine capable of rendering sprites, particle systems, and anti-aliased lines. It includes specialized systems for creating moving text-based graphics and tools for converting image files into character-based representations. The framework covers core terminal management including
Terminal-kit is a Node.js toolkit for building command-line applications and console user interfaces. It provides a comprehensive suite of utilities for console text styling, terminal graphics rendering, input parsing, and interactive interface construction. The library features a cell-based text grid model, a component document tree for hierarchical layout of interactive widgets, and off-screen pixel buffering for multi-layered image composition and manipulation. It handles direct escape-sequence output control and raw-mode input parsing to manage display regions and capture user interaction
go-prompt is a library for building interactive command-line interfaces in Go. It serves as a cross-platform console UI framework and terminal input manager, providing the tools necessary to capture user input and execute commands through a persistent interactive loop. The library features a dedicated auto-completion engine that provides real-time command suggestions. It also supports dynamic prompt prefixes updated via callback functions and a system for managing and recalling command history. The framework covers a broad range of terminal capabilities, including keyboard shortcut mapping,
gocui is a console user interface library for the Go programming language. It provides a toolkit for building interactive terminal applications using a layout engine that organizes overlapping rectangular views and coordinates. The library features a terminal input handler to capture and map keyboard shortcuts and mouse events to specific application actions. It includes an ANSI escape sequence parser to manage text attributes, colors, and cursor positioning. The framework covers interface view management and overlapping window layering, allowing for a structured arrangement of content. Rend
This project is a terminal user interface library for Node.js, designed to facilitate the construction of interactive command-line applications. It provides a comprehensive toolkit of high-level widgets that abstract complex terminal escape codes and rendering logic, allowing developers to build functional interfaces using reusable components. The framework distinguishes itself by implementing a box-model-based layout engine and a virtual DOM-style reconciliation system. These mechanisms enable responsive design patterns—such as percentage-based sizing and relative positioning—to function wit
Huh is a Go library for building interactive terminal forms, designed to work with the Bubbletea TUI framework. It provides a complete form-building system with text inputs, selection lists, confirmation prompts, and file pickers, all navigable using only the keyboard without requiring a mouse. The library distinguishes itself through dynamic form adaptation, allowing fields to be shown, hidden, or modified at runtime based on user selections and conditional rules. It includes screen reader support that announces form fields and falls back to text prompts when a visual interface is unavailabl
This project is a framework for building interactive, graphical-style terminal applications. It provides a declarative component model that organizes user interfaces into a tree of nested widgets, each managing its own lifecycle, state, and rendering. By subclassing the base application class, developers can construct complex, keyboard-navigable interfaces that run directly within terminal emulators. The framework distinguishes itself through a reactive architecture and a CSS-based layout engine. It uses a reactive attribute system to automatically track state changes and trigger targeted int
Mosaic is a declarative terminal user interface framework and display engine. It provides a toolkit for building interactive command-line applications by synchronizing a data model with the terminal screen to minimize manual redraws. The library functions as a layout engine for designing structured visual interfaces and real-time displays. It enables the development of interactive console programs, such as system monitors and games, by managing responsive user input and dynamic output updates.
Ratatui is a terminal rendering engine and library for the Rust language used to build interactive text-based user interfaces. It provides a framework for creating command-line dashboards and visual applications by rendering widgets and layouts directly to a terminal screen. The project utilizes a backend-agnostic interface to decouple UI logic from terminal drivers and employs a constraint-based layout engine to divide screen space into nested rectangular areas. It manages rendering through an immediate-mode drawing loop and a buffer-based system to minimize screen flicker. The library supp
Inquirer.js is a command line input framework and prompt library for Node.js applications. It provides a structured set of tools for building interactive terminal interfaces, including menus, checklists, and text inputs, to gather user data and manage complex interactions. The framework allows for the creation of dynamic user experiences through branching prompt logic and the resolution of asynchronous configurations. Users can define custom prompts using a provided API and localize interface text into different languages. The library covers a wide range of input capabilities, including sing
Linenoise is a lightweight C library for terminal line editing, command history management, and asynchronous input processing. It functions as a self-contained alternative for capturing user input from the command line without requiring external dependencies. The utility provides a non-blocking input processor that handles keyboard data via a feed mechanism, allowing applications to process user typing and external events simultaneously. It supports the implementation of custom shells and REPLs through features such as callback-based autocompletion, input hinting, and a circular history buffe
This project is an educational resource designed to teach low-level software development through the incremental construction of a functional terminal-based text editor. It provides a step-by-step curriculum that guides users through the process of building an interactive application from scratch using C and standard terminal input handling. The tutorial distinguishes itself by utilizing an incremental implementation pattern, where each functional milestone builds upon previous code to ensure a manageable learning curve. To support this process, the project includes a command-line utility tha
Cursive is a cross-platform terminal user interface toolkit and framework for building interactive applications in Rust. It provides a modular system for creating text-based graphical interfaces, utilizing a dedicated engine to manage the main display loop and view hierarchies. The toolkit features a backend-agnostic abstraction layer to ensure consistent rendering and input handling across different operating systems. It distinguishes itself through a palette-based theme engine that supports runtime theme loading and true color rendering, as well as the ability to generate user interface hie
Promptui is a Go library for building interactive command-line prompts, providing components for collecting text input with validation, presenting scrollable selection lists, and enabling dynamic addition of list items. It serves as a toolkit for creating terminal user interfaces where users can navigate menus, search options, and enter text with live validation and masking. The library implements interactive prompts through a synchronous blocking I/O model combined with ANSI cursor control and terminal-event-driven rendering, allowing for real-time UI updates. Its template-driven output form
react-blessed is a React renderer for the blessed library that enables the construction of interactive command-line interfaces using a component-based architecture. It functions as a terminal user interface framework that maps a virtual component tree to a terminal environment, allowing React's declarative state management to control blessed terminal widgets and layout nodes. The system supports the integration of custom renderers through a dedicated creation function to change how nodes are instantiated. It provides a mechanism to retrieve original terminal library objects through references
This project is a framework for building stateful, component-driven terminal user interfaces in Rust. It provides a structured architecture for managing complex command line applications by decoupling rendering logic from application state through a centralized message-passing system. By utilizing a component-based model, it enables developers to construct interactive interfaces that handle event routing, focus management, and lifecycle orchestration in a predictable manner. The framework distinguishes itself through its focus on modularity and developer productivity. It employs trait-based c
Opentui is a terminal user interface framework for building interactive command line applications. It provides a component-based system featuring a flexbox layout engine, a virtual node component tree, and a low-level 2D cell array renderer. The project is distinguished by a sophisticated keyboard binding engine that maps complex multi-stroke sequences and chords to named commands using prioritized, reactive layers. It also implements a plugin architecture that allows external modules to inject custom UI components into designated layout slots and extend input logic at runtime. Its capabilit
Bubbles is a terminal user interface toolkit and component library providing a set of pre-built, reusable widgets for creating interactive command-line applications. It functions as a framework for building complex tools that require real-time updates and keyboard navigation. The library includes a variety of specialized interface elements such as fuzzy-filterable item lists, single-line and multi-line text inputs, and tabular data grids. It also provides visual feedback components including animated loading spinners, progress meters, countdown timers, and stopwatches. Additional capabilitie
termbox-go is a Go terminal user interface library and cross-platform terminal emulator abstraction. It provides a system for creating text-based graphical interfaces by managing a terminal cell buffer and handling raw input events. The library functions as a terminal cell buffer manager and input handler. It maintains an internal grid of characters and colors, using a back buffer to synchronize updates to the physical screen and translate keyboard and mouse events into structured data. Its capability surface covers text user interface rendering and terminal display management, including cur
Ratatui is a Rust framework for building interactive, stateful terminal user interfaces. It provides a modular architecture that maps application data to visual components, enabling the creation of complex, text-based applications that run directly in the terminal. The library distinguishes itself through an immediate-mode rendering system that utilizes double-buffering to minimize flickering and reduce communication overhead. It employs a constraint-based layout engine to partition screen space into nested segments, allowing for the construction of sophisticated visual hierarchies that remai
Enquirer is a Node.js library for creating interactive command-line interfaces to gather structured user input. It provides a set of terminal prompts, including menus, forms, and text fields, to collect data via autocomplete, multiselect, and boolean confirmations. The project serves as a customizable framework that allows for the creation of custom prompt types through a base class and the extension of functionality via a plugin architecture. The library covers a wide range of interaction patterns, such as capturing numerical and sensitive data, validating user input against custom rules, a
python-prompt-toolkit is a Python library and terminal user interface framework used for building interactive command line interfaces. It provides a toolkit for constructing complex terminal applications with advanced input handling and layout management. The project features a real-time syntax highlighting engine and a rendering system that ensures correct alignment and display of double-width Unicode characters. It includes specialized capabilities for command line autocompletion, providing ghost text suggestions and searchable input history. The framework covers a broad range of interface
Harlequin is a terminal-based SQL IDE that runs queries against DuckDB and SQLite databases, with a plug-in adapter system for connecting to additional database engines. It provides a full-screen text editor with syntax highlighting and fuzzy autocomplete for writing SQL, and displays query results in a scrollable table within the terminal. The application distinguishes itself through a tree-based data catalog that lets you browse database schemas, local files, and remote S3 objects, with the ability to insert or copy paths directly into the query editor. It supports custom key bindings throu
Prompt is a terminal interface management library for Node.js applications that collects, validates, and styles interactive command-line user input. It handles user response collection and input stream controls, allowing developers to build command-line scripts and automation tools that require structured user input. The library supports asynchronous event-driven prompt flows through both callback patterns and modern promises, alongside conditional prompt bypassing driven by command-line arguments, default values, preset overrides, and previous answers. Captured terminal responses can be appe
Spectre.Console is a .NET framework designed for building structured, feature-rich command-line applications. It provides a comprehensive toolkit for managing complex command hierarchies, type-safe argument parsing, and dependency injection, allowing developers to decouple business logic from input processing while maintaining modular application designs. The framework distinguishes itself through a sophisticated terminal user interface toolkit that enables the creation of dynamic, interactive console experiences. It utilizes a markup-based rendering system to display styled text, tables, cha
This project is a terminal-based text editor and local file manipulation utility designed for modifying documents directly within a command-line environment. It functions as a text processing tool that enables users to perform file updates and content adjustments without requiring a graphical user interface. The editor provides a terminal-based user interface framework that renders interactive components through low-level character stream manipulation. It supports automated text processing by utilizing regular expression-based pattern matching to locate and replace character sequences across
Vuido is a framework for building native desktop applications for Windows, macOS, and Linux using Vue.js components, without requiring Electron or Chromium. It maps Vue components directly to native widgets from the libui library, creating lightweight applications that run on a single-threaded event loop and compile templates at build time for optimized runtime performance. The framework provides a complete Vue.js component-to-native bridge, enabling two-way data binding via v-model, component-based window composition, and platform-specific package generation for distributing executables. It
CLI11 is a header-only C++ library for parsing command line arguments and managing configuration files. It maps shell input to typed variables and supports the creation of complex command hierarchies. The library is distinguished by its support for nested subcommands with infinite depth and prefix matching. It integrates configuration management by allowing application settings to be loaded from TOML or INI files, with the ability to fall back to environment variables. The project provides a comprehensive set of tools for argument parsing, including flags and positional arguments, alongside
Kit is a desktop automation framework and scriptable UI toolkit designed for building personalized productivity tools. It serves as a cross-platform CLI wrapper and macOS system automator, providing an environment to execute scripts that manage operating system tasks, file management, and application workflows. The project distinguishes itself with a dedicated LLM integration layer for structured data extraction and text generation, alongside a specialized UI framework for creating interactive input forms, HTML windows, and floating widgets. It features deep macOS integration through AppleScr