{"id":18400289,"url":"https://github.com/devluxor/kingfisher","last_synced_at":"2026-04-04T21:32:41.673Z","repository":{"id":259946356,"uuid":"837886048","full_name":"devluxor/kingfisher","owner":"devluxor","description":"A web service to inspect, test and debug APIs, webhooks and HTTP requests, with a minimalist, colorful UI.","archived":false,"fork":false,"pushed_at":"2024-11-05T21:07:37.000Z","size":844,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T16:20:13.935Z","etag":null,"topics":["express","javascript","nginx","node","postgres","react"],"latest_commit_sha":null,"homepage":"https://luxor.dev/kingfisher","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devluxor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-08-04T10:39:41.000Z","updated_at":"2025-10-07T18:32:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"5648ba73-8f8f-4967-8a16-e73fa7aa24e4","html_url":"https://github.com/devluxor/kingfisher","commit_stats":null,"previous_names":["devluxor/kingfisher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devluxor/kingfisher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devluxor%2Fkingfisher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devluxor%2Fkingfisher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devluxor%2Fkingfisher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devluxor%2Fkingfisher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devluxor","download_url":"https://codeload.github.com/devluxor/kingfisher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devluxor%2Fkingfisher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["express","javascript","nginx","node","postgres","react"],"created_at":"2024-11-06T02:31:50.227Z","updated_at":"2026-04-04T21:32:41.646Z","avatar_url":"https://github.com/devluxor.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kingfisher\n\n![Kingfisher logo](assets/2024-10-04-13-26-50.png)\n\nKingfisher is a web service to inspect, test and debug APIs, webhooks and HTTP requests, with a minimalist, colorful UI. It also provides a channel for custom Websocket connections testing and debugging.\n\nYou can see a live demo [here](https://luxor.dev/kingfisher).\n\n## Usage and UI\n\n![Kingfisher UI](assets/2024-10-04-13-25-51.png)\n\nEach endpoint is called a **nest**, and is represented by a URL with the format:\n\n```txt\nhttp://kingfisher.luxor.dev/!/[nest id]\n```\n\nwhere [nest id] is a unique alphanumeric string, like, i.e.: 5KK7yyp7QFvRHVpvEQZ8f1. This is a compressed form for a valid UUID.\n\nYou can use a nest to receive any kind of HTTP request, API call or test Webhooks functionality. Each nest creates a Websocket client connected to the Kingfisher server, so, when the Kingfisher backend receives a request, it can send a message to the nest client. This way, the DOM in the frontend app is updated on real time, and a colored circle appears on the left side.\n\nBesides that, we can establish a connection between the nest and any Websocket server. In the backend, the Kingfisher server will create a custom client connected to that server. From the other hand, a new, additional Websocket connection will be established between the Kingfisher backend and the frontend, so the DOM on the frontend's side is updated on real time when the external Websocket servers sends a message.\n\nThe UI is comprised by two main elements:\n\n- On the left side of the top part you will see incoming requests, in order of arrival, represented by colored circles, in which each color corresponds with an HTTP method. When you click on a request, you will see its details on the bottom left panel (date of arrival, headers, path, etc.). On the right side you will see the incoming Websocket messages if there is an active Websocket connection; if you click on it, the date of arrival and the message's content will be displayed on the bottom right panel.\n\n- The bottom element contains the main controls panel and the Websocket connection panel, besides the left and rightmost panels already described, with the requests and messages details. Each icon represents a function (each icon is described when you hover the mouse over it):\n\n![Main controls](assets/2024-10-04-14-12-25.png)\n\n    - The feather performs a test request to the server using a random HTTP method.\n    - The two squares copy the current nest URL to the clipboard\n    - The plus sign generates a new nest\n    - The clock displays a panel with the last 6 nests generated, from the more recent to the oldest.\n    - The envelope opens the custom Websocket connection panel.\n\n## How to test it locally\n\n### Requirements\n\nYou will need:\n\n- Docker\n- Node.js, v20.8.0\n\n### Instructions\n\nCloned the repo, and create a `.env` file within the `backend` (or `typescript-backend`) with the configuration environment variables. Port numbers can be changed, and the PostgreSQL database variables too, just remember to also change them in the `db/docker-compose.yml` file accordingly. As an example, the `.env` file could look like this:\n\n```txt\nPORT=3000\nWS_PORT=8080\nWS_PORT_CUSTOM=9090\nPG_USER=luxor \nPG_HOST=localhost \nPG_DB=test-db\nPG_PASSWORD=development\nPG_PORT=5432\n```\n\nOnce the file is created, go to the `db` folder and run:\n\n```sh\ndocker compose up --detached\n```\n\nWithin the `backend` (or `typescript-backend`) folder, run:\n\n```sh\nnpm install\n```\n\nOnce the dependencies have been installed, run this to start the server:\n\n```sh\nnpm run start:dev\n```\n\nOn another terminal, go to the `frontend` folder and run:\n\n```sh\nnpm run dev\n```\n\nThen, visit \u003chttp://localhost:5173/kingfisher\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevluxor%2Fkingfisher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevluxor%2Fkingfisher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevluxor%2Fkingfisher/lists"}