<p align="center">
<a href="https://github.com/sauljabin/kayak"><img alt="kayak" src="https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/banner.png"></a>
</p>
<a href="https://github.com"><img alt="GitHub" width="60" height="20" src="https://img.shields.io/badge/-github-blueviolet?logo=github&logoColor=white"></a>
<a href="https://github.com/sauljabin/kayak/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/github/license/sauljabin/kayak"></a>
<a href="https://github.com/sauljabin/kayak/actions"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/sauljabin/kayak/main.yml?branch=main"></a>
<br>
<a href="https://www.python.org/"><img alt="Python" width="60" height="20" src="https://img.shields.io/badge/-python-brightgreen?logo=python&logoColor=white"></a>
<a href="https://pypi.org/project/kayak"><img alt="Version" src="https://img.shields.io/pypi/v/kayak"></a>
<a href="https://pypi.org/project/kayak"><img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/kayak"></a>
<a href="https://pypi.org/project/kayak"><img alt="Platform" src="https://img.shields.io/badge/platform-linux%20%7C%20osx-0da5e0"></a>
<br>
<a href="https://ksqldb.io/"><img alt="ksqlDB" width="60" height="20" src="https://img.shields.io/badge/-ksqlDB-F05662?logo=apache-kafka&logoColor=white"></a>
<a href="https://pypi.org/project/ksql/"><img alt="ksqlDB Client" src="https://img.shields.io/pypi/v/ksql?label=client">
<a href="https://ksqldb.io/"><img alt="ksqlDB" src="https://img.shields.io/badge/version-0.28.3-blue"></a>
<br>
<a href="https://www.docker.com/"><img alt="Docker" width="60" height="20" src="https://img.shields.io/badge/-docker-blue?logo=docker&logoColor=white"></a>
<a href="https://hub.docker.com/r/sauljabin/kayak"><img alt="Docker Image Version (latest by date)" src="https://img.shields.io/docker/v/sauljabin/kayak?label=tag"></a>
<a href="https://hub.docker.com/r/sauljabin/kayak"><img alt="Docker Image Size (latest by date)" src="https://img.shields.io/docker/image-size/sauljabin/kayak"></a>
**kayak** is a [ksqlDB](https://ksqldb.io/) TUI (text user interface).
:rocket: This project is powered by [textual](https://github.com/Textualize/textual)
and [rich](https://github.com/Textualize/rich)!.
# Table of Contents
<!-- TOC -->
* [Table of Contents](#table-of-contents)
* [Features](#features)
* [Screenshots](#screenshots)
* [Installation and Usage](#installation-and-usage)
* [Running with Docker](#running-with-docker)
* [Development](#development)
* [Scripts](#scripts)
* [Kafka Cluster](#kafka-cluster)
* [Docker](#docker)
* [Bumping Version](#bumping-version)
* [ksqlDB References](#ksqldb-references)
<!-- TOC -->
# Features
- Execute statements, pull and push queries (http2)
- List of streams, tables, queries and topics
- Settings panel
- Basic auth supported
- Docker image
# Screenshots
<p align="center">
<img width="45%" alt="kaskade" src="https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/pull-query.png">
<img width="45%" alt="kaskade" src="https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/statement.png">
</p>
<p align="center">
<img width="45%" alt="kaskade" src="https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/settings.png">
<img width="45%" alt="kaskade" src="https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/error.png">
</p>
# Installation and Usage
Install with pip:
```shell
pip install kayak
```
> `pip` will install `kayak` and `kyk` aliases.
Upgrade with pip:
```shell
pip install --upgrade kayak
```
Help:
```shell
kayak --help
```
Version:
```shell
kayak --version
```
Run:
```shell
kayak http://ksqldb:8088
```
Run id debug mode:
```shell
kayak http://ksqldb:8088 --debug
```
Run authenticated:
```shell
kayak --user <user> --password <password> http://ksqldb:8088
```
Run authenticated with interactive input:
```shell
kayak http://ksqldb:8088 --user <user> --password
```
or
```shell
kayak --user <user> --password -- http://ksqldb:8088
```
> `kayak` will wait until you enter the password.
### Running with Docker
Using docker:
```shell
docker run --rm -it --network cluster sauljabin/kayak:latest http://ksqldb:8088
```
Aliases:
```shell
alias kayak='docker run --rm -it --network cluster sauljabin/kayak:latest'
alias kyk=kayak
```
# Development
Installing poetry:
```shell
pip install poetry
```
Installing development dependencies:
```shell
poetry install
```
Installing pre-commit hooks:
```shell
poetry run pre-commit install
```
Running kayak:
```shell
poetry run kayak --help
```
### Scripts
Running unit tests:
```shell
poetry run python -m scripts.tests
```
Applying code styles:
```shell
poetry run python -m scripts.styles
```
Running code analysis:
```shell
poetry run python -m scripts.analyze
```
Generate readme banner:
```shell
poetry run python -m scripts.banner
```
### Kafka Cluster
Run local cluster:
```shell
cd cluster
docker compose up -d
```
> Open <http://localhost:8080/>
Run ksqlDB cli:
```shell
ksql http://localhost:8088
```
Import example:
```shell
ksql -f ksql/create-orders.ksql http://localhost:8088
ksql -f ksql/insert-orders.ksql http://localhost:8088
ksql -e "PRINT 'ksqldb.order_sizes' FROM BEGINNING;" http://localhost:8088
```
### Docker
Build docker image:
```shell
poetry run python -m scripts.docker
```
> Image tagged as `sauljabin/kayak:latest`.
Run with docker:
```shell
docker run --rm -it --network cluster sauljabin/kayak:latest http://ksqldb:8088
```
### Bumping Version
Help:
```shell
poetry run python -m scripts.bump --help
```
> More info at https://python-poetry.org/docs/cli/#version and https://semver.org/.
> For changelog management check https://github.com/sauljabin/changeloggh.
Upgrade (`major.minor.patch`):
```shell
poetry run python -m scripts.bump patch
```
### ksqlDB References
- https://docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/quick-reference/
- https://docs.ksqldb.io/en/latest/developer-guide/api/
Raw data
{
"_id": null,
"home_page": "https://github.com/sauljabin/kayak",
"name": "kayak",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "kafka,kayak",
"author": "Sa\u00fal Pi\u00f1a",
"author_email": "sauljabin@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/13/00/c0ee2632af8dacb8fc8e186e27381a9562b97298c2802ffd39785d014380/kayak-0.2.8.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n<a href=\"https://github.com/sauljabin/kayak\"><img alt=\"kayak\" src=\"https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/banner.png\"></a>\n</p>\n\n<a href=\"https://github.com\"><img alt=\"GitHub\" width=\"60\" height=\"20\" src=\"https://img.shields.io/badge/-github-blueviolet?logo=github&logoColor=white\"></a>\n<a href=\"https://github.com/sauljabin/kayak/blob/main/LICENSE\"><img alt=\"MIT License\" src=\"https://img.shields.io/github/license/sauljabin/kayak\"></a>\n<a href=\"https://github.com/sauljabin/kayak/actions\"><img alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/sauljabin/kayak/main.yml?branch=main\"></a>\n<br>\n<a href=\"https://www.python.org/\"><img alt=\"Python\" width=\"60\" height=\"20\" src=\"https://img.shields.io/badge/-python-brightgreen?logo=python&logoColor=white\"></a>\n<a href=\"https://pypi.org/project/kayak\"><img alt=\"Version\" src=\"https://img.shields.io/pypi/v/kayak\"></a>\n<a href=\"https://pypi.org/project/kayak\"><img alt=\"Python Versions\" src=\"https://img.shields.io/pypi/pyversions/kayak\"></a>\n<a href=\"https://pypi.org/project/kayak\"><img alt=\"Platform\" src=\"https://img.shields.io/badge/platform-linux%20%7C%20osx-0da5e0\"></a>\n<br>\n<a href=\"https://ksqldb.io/\"><img alt=\"ksqlDB\" width=\"60\" height=\"20\" src=\"https://img.shields.io/badge/-ksqlDB-F05662?logo=apache-kafka&logoColor=white\"></a>\n<a href=\"https://pypi.org/project/ksql/\"><img alt=\"ksqlDB Client\" src=\"https://img.shields.io/pypi/v/ksql?label=client\">\n<a href=\"https://ksqldb.io/\"><img alt=\"ksqlDB\" src=\"https://img.shields.io/badge/version-0.28.3-blue\"></a>\n<br>\n<a href=\"https://www.docker.com/\"><img alt=\"Docker\" width=\"60\" height=\"20\" src=\"https://img.shields.io/badge/-docker-blue?logo=docker&logoColor=white\"></a>\n<a href=\"https://hub.docker.com/r/sauljabin/kayak\"><img alt=\"Docker Image Version (latest by date)\" src=\"https://img.shields.io/docker/v/sauljabin/kayak?label=tag\"></a>\n<a href=\"https://hub.docker.com/r/sauljabin/kayak\"><img alt=\"Docker Image Size (latest by date)\" src=\"https://img.shields.io/docker/image-size/sauljabin/kayak\"></a>\n\n**kayak** is a [ksqlDB](https://ksqldb.io/) TUI (text user interface).\n\n:rocket: This project is powered by [textual](https://github.com/Textualize/textual)\nand [rich](https://github.com/Textualize/rich)!.\n\n# Table of Contents\n\n<!-- TOC -->\n* [Table of Contents](#table-of-contents)\n* [Features](#features)\n* [Screenshots](#screenshots)\n* [Installation and Usage](#installation-and-usage)\n * [Running with Docker](#running-with-docker)\n* [Development](#development)\n * [Scripts](#scripts)\n * [Kafka Cluster](#kafka-cluster)\n * [Docker](#docker)\n * [Bumping Version](#bumping-version)\n * [ksqlDB References](#ksqldb-references)\n<!-- TOC -->\n\n# Features\n\n- Execute statements, pull and push queries (http2)\n- List of streams, tables, queries and topics\n- Settings panel\n- Basic auth supported\n- Docker image\n\n# Screenshots\n\n<p align=\"center\">\n<img width=\"45%\" alt=\"kaskade\" src=\"https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/pull-query.png\">\n<img width=\"45%\" alt=\"kaskade\" src=\"https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/statement.png\">\n</p>\n\n<p align=\"center\">\n<img width=\"45%\" alt=\"kaskade\" src=\"https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/settings.png\">\n<img width=\"45%\" alt=\"kaskade\" src=\"https://raw.githubusercontent.com/sauljabin/kayak/main/screenshots/error.png\">\n</p>\n\n# Installation and Usage\n\nInstall with pip:\n\n```shell\npip install kayak\n```\n\n> `pip` will install `kayak` and `kyk` aliases.\n\nUpgrade with pip:\n\n```shell\npip install --upgrade kayak\n```\n\nHelp:\n\n```shell\nkayak --help\n```\n\nVersion:\n\n```shell\nkayak --version\n```\n\nRun:\n\n```shell\nkayak http://ksqldb:8088\n```\n\nRun id debug mode:\n\n```shell\nkayak http://ksqldb:8088 --debug\n```\n\nRun authenticated:\n\n```shell\nkayak --user <user> --password <password> http://ksqldb:8088\n```\n\nRun authenticated with interactive input:\n\n```shell\nkayak http://ksqldb:8088 --user <user> --password\n```\n\nor\n\n```shell\nkayak --user <user> --password -- http://ksqldb:8088\n```\n\n> `kayak` will wait until you enter the password.\n\n### Running with Docker\n\nUsing docker:\n\n```shell\ndocker run --rm -it --network cluster sauljabin/kayak:latest http://ksqldb:8088\n```\n\nAliases:\n\n```shell\nalias kayak='docker run --rm -it --network cluster sauljabin/kayak:latest'\nalias kyk=kayak\n```\n\n# Development\n\nInstalling poetry:\n\n```shell\npip install poetry\n```\n\nInstalling development dependencies:\n\n```shell\npoetry install\n```\n\nInstalling pre-commit hooks:\n\n```shell\npoetry run pre-commit install\n```\n\nRunning kayak:\n\n```shell\npoetry run kayak --help\n```\n\n### Scripts\n\nRunning unit tests:\n\n```shell\npoetry run python -m scripts.tests\n```\n\nApplying code styles:\n\n```shell\npoetry run python -m scripts.styles\n```\n\nRunning code analysis:\n\n```shell\npoetry run python -m scripts.analyze\n```\n\nGenerate readme banner:\n\n```shell\npoetry run python -m scripts.banner\n```\n\n### Kafka Cluster\n\nRun local cluster:\n\n```shell\ncd cluster\ndocker compose up -d\n```\n\n> Open <http://localhost:8080/>\n\nRun ksqlDB cli:\n\n```shell\nksql http://localhost:8088\n```\n\nImport example:\n\n```shell\nksql -f ksql/create-orders.ksql http://localhost:8088\nksql -f ksql/insert-orders.ksql http://localhost:8088\nksql -e \"PRINT 'ksqldb.order_sizes' FROM BEGINNING;\" http://localhost:8088\n```\n\n### Docker\n\nBuild docker image:\n\n```shell\npoetry run python -m scripts.docker\n```\n\n> Image tagged as `sauljabin/kayak:latest`.\n\nRun with docker:\n\n```shell\ndocker run --rm -it --network cluster sauljabin/kayak:latest http://ksqldb:8088\n```\n\n### Bumping Version\n\nHelp:\n\n```shell\npoetry run python -m scripts.bump --help\n```\n\n> More info at https://python-poetry.org/docs/cli/#version and https://semver.org/.\n\n> For changelog management check https://github.com/sauljabin/changeloggh.\n\nUpgrade (`major.minor.patch`):\n\n```shell\npoetry run python -m scripts.bump patch\n```\n\n### ksqlDB References\n\n- https://docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/quick-reference/\n- https://docs.ksqldb.io/en/latest/developer-guide/api/\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "kayak is a ksqlDB TUI (text user interface)",
"version": "0.2.8",
"split_keywords": [
"kafka",
"kayak"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c2c4f021fedd3e906896dbdbcb567016127a9ceb264fdb257b554cd77ffb0784",
"md5": "8f011a53ee4f22ba8e4d9875ebda4506",
"sha256": "57d3aa857e4d46f24cbc97ade523278207eacfba5bd558de32f7443ddb8dcb55"
},
"downloads": -1,
"filename": "kayak-0.2.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f011a53ee4f22ba8e4d9875ebda4506",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 14131,
"upload_time": "2023-03-26T21:19:11",
"upload_time_iso_8601": "2023-03-26T21:19:11.442977Z",
"url": "https://files.pythonhosted.org/packages/c2/c4/f021fedd3e906896dbdbcb567016127a9ceb264fdb257b554cd77ffb0784/kayak-0.2.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1300c0ee2632af8dacb8fc8e186e27381a9562b97298c2802ffd39785d014380",
"md5": "74904c66f5ba007077d153413b0ed192",
"sha256": "ec3f046d7f9a00a21e4b9f1138ba931764d20968c128840516a5b9102484e14a"
},
"downloads": -1,
"filename": "kayak-0.2.8.tar.gz",
"has_sig": false,
"md5_digest": "74904c66f5ba007077d153413b0ed192",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 12220,
"upload_time": "2023-03-26T21:19:12",
"upload_time_iso_8601": "2023-03-26T21:19:12.970450Z",
"url": "https://files.pythonhosted.org/packages/13/00/c0ee2632af8dacb8fc8e186e27381a9562b97298c2802ffd39785d014380/kayak-0.2.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-26 21:19:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "sauljabin",
"github_project": "kayak",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "kayak"
}