kitproj / kit

Kit makes your dev loop crazy fast
48 stars 2 forks source link
codespaces darwin development docker gitpod linux

Kit

CodeQL Go goreleaser

Why

Make the dev loop crazy fast.

What

Kit is a software development tool designed to turbo-charge the software development process, with inspiration from several tools, including Foreman, Docker Compose, Podman, Tilt, Skaffold, and Garden. It combines key features and capabilities of these tools, while also offering additional functionality and flexibility.

It is designed to work seamlessly with both local-dev and cloud-dev environments, such as Codespaces and Gitpod.

Watch the video

Key features of Kit include:

Kit was written with extensive help from AI.

Install

Like jq, kit is a tiny (8Mb) standalone binary. You can download it from the releases page.

If you're on MacOS, you can use brew:

brew tap kitproj/kit --custom-remote https://github.com/kitproj/kit
brew install kit

Otherwise, you can use curl:

curl -q https://raw.githubusercontent.com/kitproj/kit/main/install.sh | sh

We do not support go install.

Usage

Apps are described by a DAG, for example:

---
title: Example of an app
---
flowchart LR
    api(name: api\ncommand: java -jar target/api.jar\nworkingDir: ./api\nports: 8080):::host --> build-api(name: build-api\ncommand: mvn package\nworkingDir: ./api\nwatch: ./api):::host
    api --> mysql(name: mysql\n image: mysql:latest):::container
    processor(name: processor\ncommand: ./processor):::host --> build-processor(name: build-processor\ncommand: go build ./processor\nwatch: ./processor):::host
    processor --> kafka(name: kafka\nimage: ./src/images/kafka):::container
    processor --> object-storage(name: object-storage\nimage: minio:latest):::container
    processor --> api
    ui(name: ui\ncommand: yarn start\nworkingDir: ./ui\nports: 4000):::host --> build-ui(name: build-ui\ncommand: yarn install\nworkingDir: ./ui):::host
    ui --> api

Create a tasks.yaml file, e.g.:

apiVersion: kit/v1
kind: Tasks
metadata:
  name: my-proj
spec:
  tasks:
    - command: go build -v .
      name: build-bar
      watch: demo/bar/main.go
      workingDir: demo/bar
    - command: ./demo/bar/bar
      dependencies: build-bar
      env:
        - PORT=9090
      name: bar
      ports: "9090"
    - dependencies: bar
      name: up

Start:

kit up

You'll see something like this:

screenshot

Logs are stored in ./logs.

Documentation