Zui.rs - Zookeeper TUI Client


Description


This project is part of the Ukraine Rust Community bootcamp study process. It introduces a basic implementation of a Terminal User Interface (TUI) for Zookeeper.

Zookeeper + TUI + Rust = zui.rs

At present, the application supports basic operations such as create, read, update, and delete (CRUD) for Zookeeper nodes. The backbone of this project is the Ratatui framework, which provides robust tools for creating TUI-based applications.

Available Operations


  1. Connect to Zookeeper using provided connection parameters (connection string can be passed as an app parameter or configured within the app).
  2. Create persistent nodes (other types of nodes will be added later).
  3. Delete nodes.
  4. Retrieve node children.
  5. Retrieve node statistics.
  6. Set node data.
  7. Retrieve node data in different formats:
    1. Raw bytes representation
    2. String representation
    3. JSON representation

TODO:


  1. Add options for node creation:
  2. Ephemeral node
  3. Persistent sequential node
  4. Ephemeral sequential node
  5. Node with TTL
  6. Add a DeleteAll operation to recursively delete nodes.
  7. Add functionality for retrieving ephemeral nodes.
  8. Implement node watching functionality.
  9. Add functionality for working with ACLs.
  10. Add different application modes:
  11. ReadOnly mode - only read operations are allowed.
  12. NonDelete mode - node deletion is forbidden.
  13. Refactor code to resolve architectural issues.
  14. Polish the UI/UX.

Disclaimer


This tool may contain bugs. Therefore, be very careful when working with real data.

If you have the ability and desire to contribute, you are welcome!

Demo video


Demo Videi

2 Likes

Good work!
It would be helpful to ensure the code structure is modular enough to easily integrate future features like node watching or working with ACLs.
It is good idea to add ReadOnly and NonDelete modes. It would be helpful to think about how users can easily switch between modes within the UI.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.