A high-level terminal interface library for Node.js with a curses-like API and DOM-like widgets.
Blessed is a high-level terminal interface library for Node.js that enables developers to build rich, interactive command-line applications with a curses-like API. It solves the problem of creating complex terminal UIs by providing a DOM-like widget system, efficient rendering, and broad terminal compatibility without relying on native ncurses bindings.
Node.js developers building terminal applications, CLI tools, dashboards, or interactive command-line interfaces that require sophisticated UI components and efficient screen management.
Developers choose Blessed for its comprehensive widget library, terminal-agnostic compatibility, and optimized rendering performance, offering a more accessible and feature-rich alternative to low-level curses bindings or simpler terminal libraries.
A high-level terminal interface library for node.js.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Blessed parses terminfo and termcap to generate escape sequences compatible with any terminal, ensuring broad support without relying on native curses, as stated in the README's goal to reimplement ncurses entirely.
Uses CSR (change-scroll-region) and BCE (back-color-erase) to draw only changed areas, making updates efficient and reducing flicker, which is highlighted in the README for minimizing screen damage.
Provides a hierarchical widget system reminiscent of web DOM, making UI construction intuitive and familiar for web developers, as described in the README's philosophy.
Includes a comprehensive set of widgets like boxes, lists, forms, tables, logs, and even terminal emulation, covering most terminal UI needs out of the box, as detailed in the Widgets section.
Some widgets like ScrollableBox and ScrollableText are marked as deprecated in the documentation, which can lead to confusion and maintenance issues for new projects.
Requires careful tuning of options like smartCSR and fastCSR for optimal performance, and the extensive API with over 16,000 lines of code adds a steep learning curve, as noted in the README's setup recommendations.
As a reimplementation of ncurses in JavaScript, it may not match the performance of native bindings for CPU-intensive applications, and the large codebase increases bundle size, which is a trade-off mentioned in the README's optimization notes.