{"id":23132454,"url":"https://github.com/merlinfuchs/kite","last_synced_at":"2026-01-06T20:28:15.601Z","repository":{"id":219495925,"uuid":"741680303","full_name":"merlinfuchs/kite","owner":"merlinfuchs","description":"Custom Discord Bots made easy","archived":false,"fork":false,"pushed_at":"2025-07-22T18:50:59.000Z","size":24342,"stargazers_count":34,"open_issues_count":56,"forks_count":23,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-07-22T19:24:31.251Z","etag":null,"topics":["discord","discord-bot","discord-bot-maker","no-code"],"latest_commit_sha":null,"homepage":"https://kite.onl","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/merlinfuchs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-10T22:18:42.000Z","updated_at":"2025-07-22T18:51:04.000Z","dependencies_parsed_at":"2024-04-22T08:52:31.869Z","dependency_job_id":"0f88a5fd-1c8d-4063-a80c-17bbd5b5ede2","html_url":"https://github.com/merlinfuchs/kite","commit_stats":null,"previous_names":["merlinfuchs/kite"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/merlinfuchs/kite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlinfuchs%2Fkite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlinfuchs%2Fkite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlinfuchs%2Fkite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlinfuchs%2Fkite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merlinfuchs","download_url":"https://codeload.github.com/merlinfuchs/kite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merlinfuchs%2Fkite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266580321,"owners_count":23951198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","discord-bot","discord-bot-maker","no-code"],"created_at":"2024-12-17T11:18:49.856Z","updated_at":"2026-01-06T20:28:15.595Z","avatar_url":"https://github.com/merlinfuchs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🪁 Kite\n\n[![Release](https://github.com/merlinfuchs/kite/actions/workflows/release.yaml/badge.svg)](https://github.com/merlinfuchs/kite/releases)\n[![Docker image](https://github.com/merlinfuchs/kite/actions/workflows/docker-push.yaml/badge.svg)](https://hub.docker.com/r/merlintor/kite)\n\n[![Release](https://img.shields.io/github/v/release/merlinfuchs/kite)](https://github.com/merlinfuchs/kite/releases/latest)\n[![MIT License](https://img.shields.io/github/license/merlinfuchs/kite)](LICENSE)\n[![Discord Server](https://img.shields.io/discord/845800518458540083)](https://discord.gg/rNd9jWHnXh)\n\nMake your own Discord Bot with Kite for free without a single line of code. With support for slash commands, buttons, events,and more.\n\n![Flow Example](./example-flow.png)\n\nThis project is very much work in progress and doesn't have all the features yet. Only some parts of the Discord API are covered and more complex logic is hard to implement right now.\n\n## Self Hosting\n\nThis describes the easiest way to self host an instance of Kite by using a single binary that contains both the backend and frontend.\n\nYou can find prebuilt binaries of the server with the frontend files included [here](https://github.com/merlinfuchs/kite/releases/latest).\n\nTo run Kite you will also need to run a [Postgres](https://www.postgresql.org/) server alongside it, so it's recommended to use `docker-compose` to simplify the process.\n\n### Configure the server\n\nTo configure the server you can create a file called `kite.toml` with the following fields:\n\n```toml\n[discord]\nclient_id = \"...\" # Your Discord client ID used for Oauth2\nclient_secret = \"...\" # Your Discord client secret used for Oauth2\n\n[encryption]\ntoken_encryption_key = \"...\" # HEX encoded AES key for encrypting Discord tokens\n```\n\nTo generate an encryption key for tokens you can use `openssl enc -aes-256-cbc -k secret -P -md sha1`.\n\nYou can also set the config values using environment variables. For example `KITE_DISCORD__CLIENT_ID` will set the discord client id.\n\n### Using Docker (docker-compose)\n\nInstall Docker and docker-compose and create a docker-compose.yaml file with the following contents:\n\n```yaml\nservices:\n  postgres:\n    image: postgres\n    restart: always\n    volumes:\n      - kite-local-postgres:/var/lib/postgresql/data\n    environment:\n      POSTGRES_USER: postgres\n      POSTGRES_DB: kite\n      PGUSER: postgres\n      PGDATA: /var/lib/postgresql/data/pgdata\n      POSTGRES_HOST_AUTH_METHOD: trust\n    healthcheck:\n      test: [\"CMD\", \"pg_isready\"]\n      interval: 3s\n      timeout: 30s\n      retries: 3\n\n  minio:\n    image: quay.io/minio/minio\n    command: server --console-address \":9001\" /data\n    ports:\n      - \"9000:9000\"\n      - \"9001:9001\"\n    environment:\n      MINIO_ROOT_USER: kite\n      MINIO_ROOT_PASSWORD: 1234567890\n    volumes:\n      - kite-local-minio:/data\n\n  kite:\n    image: merlintor/kite:latest\n    restart: always\n    ports:\n      - \"8080:8080\"\n    environment:\n      - KITE_API__HOST=0.0.0.0\n      - KITE_DATABASE__POSTGRES__HOST=postgres\n      - KITE_DATABASE__POSTGRES__USER=postgres\n      - KITE_DATABASE__POSTGRES__DB_NAME=kite\n      - KITE_DATABASE__S3__ENDPOINT=minio:9000\n      - KITE_DATABASE__S3__ACCESS_KEY_ID=kite\n      - KITE_DATABASE__S3__SECRET_ACCESS_KEY=1234567890\n      - KITE_DATABASE__S3__SECURE=false\n      - KITE_APP__PUBLIC_BASE_URL=http://localhost:8080\n      - KITE_API__PUBLIC_BASE_URL=http://localhost:8080\n    volumes:\n      - ./kite.toml:/root/kite.toml\n    depends_on:\n      postgres:\n        condition: service_healthy\n\nvolumes:\n  kite-local-postgres:\n  kite-local-minio:\n```\n\nRun the file using `docker-compose up`. It will automatically mount the `kite.toml` file into the container. You should not configure postgres in your config file as it's using the postgres instance from the container.\n\nKite should now be accessible in your browser at [localhost:8080](http://localhost:8080).\n\n### Building from source\n\n#### Building the website\n\nYou can download NodeJS and NPM from [nodejs.org](https://nodejs.org/en/download/).\n\n```shell\n# Switch to the kite-web directory\ncd kite-web\n\n# Install dependencies\nnpm install\n\n# Start the development server (optional)\nnpm run dev\n\n# Build for embedded use in kite-service (recommended)\nOUTPUT=export npm run build\n\n# Build for standalone use\nnpm run build\n```\n\n#### Building the docs\n\nYou can download NodeJS and NPM from [nodejs.org](https://nodejs.org/en/download/).\n\n```shell\n# Switch to the kite-docs directory\ncd kite-docs\n\n# Install dependencies\nnpm install\n\n# Start the development server (optional)\nnpm run start\n\n# Build for production use\nnpm run build\n```\n\n#### Building the server (kite-service)\n\nInstall Go \u003e=1.22 from [go.dev](https://go.dev/doc/install).\n\n```shell\n# Switch to the backend directory\ncd kite-service\n# or if you are in the kite-web / kite-docs directoy\ncd ../kite-service\n\n# Configure the server (see steps above)\n\n# Run database migrations\ngo run main.go database migrate postgres up\n\n# Start the development server (optional)\ngo run main.go server\n\n# Build and include the kite-web files in the backend binary (build website first)\ngo build --tags  \"embedweb\"\n\n# Build without including the frontend files in the backend binary (you need to serve them yourself)\ngo build\n```\n\n## High Level Progress\n\n- [x] Slash Commands\n  - [x] Sub Commands\n  - [x] Basic Placeholders\n  - [x] Advanced Placeholders\n- [x] Message Templates (MVP)\n  - [x] Embeds\n  - [x] Attachments\n  - [x] Interactive Components\n  - [x] Basic placeholders\n  - [x] Advanced Placeholders\n- [x] Event Listeners\n- [x] Stored Variables\n  - [x] Basic infrastrcuture\n  - [x] Connect variables to commands\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerlinfuchs%2Fkite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerlinfuchs%2Fkite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerlinfuchs%2Fkite/lists"}