Development overview
datui is Rust: Ratatui draws it, Polars reads and computes, the book is mdBook and the demos are recorded with VHS.
git clone https://github.com/derekwisong/datui.git
cd datui
cargo build
cargo run -- --help
cargo build writes the debug binary to target/debug/datui;
cargo build --release builds the one that is packaged, slower to build and
faster to run. Install Rust with rustup.
Workspace
| Package | Path | Role |
|---|---|---|
datui | repository root | The binary: src/main.rs parses the arguments and runs datui_lib::run |
datui-lib | crates/datui-lib | Everything else: the app, its screens, the readers, config |
datui-cli | crates/datui-cli | The clap Args, the option registry, the format descriptors, and gen_docs, which writes the generated docs |
datui-pyo3 | crates/datui-pyo3 | The Python bindings. Not a workspace member; see Build Python bindings |
cargo build --workspace and cargo test --workspace cover the first three.
Guides
| Page | Covers |
|---|---|
| Set up and contribute | The setup script, pre-commit hooks, what a pull request needs |
| Run tests | Choosing tests, fixtures, the heavy-run queue |
| Build documentation | The book, its generated pages and its checked code blocks |
| Check the examples | The numbers the guides quote |
| Record demos | The GIFs, screenshots and theme gallery |
| Add configuration options | The option registry |
| Add a format | A descriptor and a reader |
| Run benchmarks | Time to first rows and peak memory |
| Build Python bindings | The extension and its tests |
| Build and publish packages | deb, rpm, AUR, PyPI, WinGet |
| Security checks | cargo-deny and zizmor |
| Fuzzing | The fuzz targets |
| Check glyph coverage | Symbols and their ASCII twins |