Building Rich Terminal Dashboards

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • blessed

    A high-level terminal interface library for node.js.

  • I commented on this in another HN discussion thread [1] on Blessed [2]. You might want to look at what Vermont Views did [3] to avoid reinventing the wheel of what to implement. I'm sure if you put the call out for it, someone, somewhere, reading on HN, will be able to post up the documentation if you want a detailed look, or send you the obfuscated source code. I tried emailing and hard copy mail contacting them a few years back to buy the rights so I could turn around to open source it as I anticipated a resurgence of interest in TUI's because the browser-based latency issue is simply not improving fast enough, but never got a response, so as far as I can tell, they went abandonware.

    [1] https://news.ycombinator.com/item?id=14405186

    [2] https://github.com/chjj/blessed

    [3] http://web.archive.org/web/20091011010412/http://www.vtsoft....

  • blessed-contrib

    Build terminal dashboards using ascii/ansi art and javascript

  • If you plan on using blessed, there’s also (blessed-contrib)[https://github.com/yaronn/blessed-contrib], which is a library of widgets for blessed.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • pkg

    Discontinued Package your Node.js project into an executable

  • Except you can bake apps into a single stand-alone binary executable for both Node.JS[1] and Python[2]

    [1] https://www.npmjs.com/package/pkg

  • rosshow

    Visualize ROS topics inside a terminal with Unicode/ASCII art

  • I built a visualization tool for ROS topics that uses Braille to achieve a dot-based interface in the terminal:

    https://github.com/dheera/rosshow

    I imagine a lot of it could also be re-used in creating terminal dashboards for other purposes.

  • GoAccess

    GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.

  • If you like terminal dashboards, Go Access has a nice one for web analytics.

    https://goaccess.io/

  • python-prompt-toolkit

    Library for building powerful interactive command line applications in Python

  • The Console and Layout api looks really simple for creating dashboards.

    Another option for full-screen apps is Python Prompt Toolkit[1], which also handles keyboard and mouse input and be used to implement editors[2].

    [1] https://github.com/prompt-toolkit/python-prompt-toolkit

  • notcurses

    blingful character graphics/TUI library. definitely not curses.

  • And there's also Notcurses[0][1], which facilitates the creation of modern TUI programs, making full use of Unicode and 24-bit TrueColor. It presents an API similar to that of Curses, riding atop Terminfo. It's made in C, with C++, Python & Rust wrappers.

    [0] https://notcurses.com/

    [1] https://github.com/dankamongmen/notcurses

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • dashing

    Terminal dashboards for Python (by FedericoCeratto)

  • [Sorry for the spam]

    If you want to create charts quickly there's also: https://github.com/FedericoCeratto/dashing

  • Turbo Vision

    A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support.

  • Well, you’re in luck! There’s a modern version of TurboVision that works on modern systems. I used it the other day to show tvedit to some of the folks at work who were using nano. They were kinda mind-blown by the fact that editors in the late 80’s/early 90’s weren’t terrible.

    https://github.com/magiblot/tvision

  • reflex-vty

    Build terminal applications using functional reactive programming (FRP) with Reflex FRP.

  • There's a slick little Haskell library that does something similar called reflex-vty:

    https://github.com/reflex-frp/reflex-vty#reflex-vty

    One thing neither of these libraries appear to have done yet that I would really like is create a more compact window rendering. Currently each window gets a 1-character border. What I would like is something that saves space by collapsing adjacent windows' borders into a single character instead of having two redundant borders next to each other. Of course I get why they do it the way they do, but terminals are often more constrained for space and with complex UIs you can lose a fair amount due to these unnecessary borders. That would be the next thing I'd hack on to improve these kinds of libraries. But alas...too many fun projects to hack on and not enough hours in the day.

  • turbo

    An experimental text editor based on Scintilla and Turbo Vision. (by magiblot)

  • Show them this, too:

    https://github.com/magiblot/turbo

    Applications like tvedit were designed for MS-DOS, which offered full interaction with the mouse and keyboard, and many of them were commercial products aimed at a general audience. TUI applications from the Unix tradition, however, were designed for use in terminals with limited capabilities, and were aimed at more technical users (or were created by the users themselves).

    User-friendly TUI applications in MS-DOS were succeeded by Windows applications, while the largest revolution in the last 20 years in Unix TUIs has been the widespread support of 256/24-bit colors and UTF-8. Hence the gap in usability between the two worlds.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts