Skip to content

stackabletech/stackable-cockpit

Repository files navigation

Stackable Logo

Stackable Cockpit

PRs Welcome Apache License 2.0

Stackable Data Platform | Platform Docs | Discussions | Discord

This repository contains the Stackable library stackable-cockpit, the Stackable CLI tool stackablectl, the Stackable Cockpit server stackable-cockpitd, and the web-based admin user interface.

Components

  • stackable-cockpit: The underlying library for all actions related to the Stackable Data Platform
  • stackablectl: CLI tool to interact with local and remote deployments of the data platform
  • stackable-cockpitd: API server used by frontends to interact with the data platform
  • stackable-cockpit-web: The web-based admin UI powered by SolidJS, TypeScript and Vite

Developer Setup

Prerequisites

  • A working (and up2date) NodeJS installation, with Yarn as the preferred package manager
  • A working (and up2date) Rust installation including rustc, clippy, and cargo
  • Optional, but strongly advised: a working pre-commit installation

Getting started

git clone git@github.com:stackabletech/stackable-cockpit.git
cd stackable-cockpit

The admin UI is registered as a crate and is part of the build process, as the HTML/CSS/JS bundle is included in the final stackable-cockpitd binary. To get the build process running, first execute yarn install to install all required NodeJS dependencies in the node_modules folder.


Each component can be build separately like this:

cargo build --release -p stackablectl                     # Builds stackablectl
cargo build --release -p stackable-cockpitd               # Builds the Stackable Cockpit API server
cargo build --release -p stackable-cockpitd --features ui # Builds the Stackable Cockpit API server bundled with the admin UI
cd web && yarn run build && cd -                          # Builds the admin UI

Pre-commit hooks and xtasks

This repository uses multiple pre-commit hooks to run checks, formatting and code-generation on different files. The hooks are:

  • trailing-whitespace: Trims trailing whitespace in all files
  • end-of-file-fixer: Files need to end with newlines
  • detect-aws-credentials: Detect AWS secrets
  • detect-private-key: Detect private keys
  • yamllint: Runs linting on all YAML files
  • markdownlint: Runs linting on all Markdown files
  • prettier: Runs prettier on files located in web
  • cargo clippy -- -D warnings: Runs Clippy on all files and errors on warnings
  • cargo fmt -- --check: Checks if Rust code needs formatting
  • cargo xtask gen-comp: Runs shell completions generation for stackablectl
  • cargo xtask gen-man: Runs man page generation for stackablectl
  • cargo xtask gen-openapi: Runs OpenAPI spec generation to connect backend with frontend
  • cargo xtask gen-ctl-readme: Generates and inserts stackablectl help text into README