{"id":38803477,"url":"https://github.com/etf1/kafka-message-scheduler-admin","last_synced_at":"2026-01-17T12:48:37.958Z","repository":{"id":46122511,"uuid":"339410932","full_name":"etf1/kafka-message-scheduler-admin","owner":"etf1","description":"GUI for managing list of kafka message schedulers","archived":false,"fork":false,"pushed_at":"2022-03-24T16:50:14.000Z","size":23970,"stargazers_count":12,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-06-20T13:30:58.916Z","etag":null,"topics":["go","kafka","reactjs"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etf1.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}},"created_at":"2021-02-16T13:41:11.000Z","updated_at":"2022-12-09T05:25:06.000Z","dependencies_parsed_at":"2022-07-26T10:32:13.794Z","dependency_job_id":null,"html_url":"https://github.com/etf1/kafka-message-scheduler-admin","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/etf1/kafka-message-scheduler-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-message-scheduler-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-message-scheduler-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-message-scheduler-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-message-scheduler-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etf1","download_url":"https://codeload.github.com/etf1/kafka-message-scheduler-admin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-message-scheduler-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T11:50:55.898Z","status":"ssl_error","status_checked_at":"2026-01-17T11:50:55.569Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["go","kafka","reactjs"],"created_at":"2026-01-17T12:48:37.776Z","updated_at":"2026-01-17T12:48:37.945Z","avatar_url":"https://github.com/etf1.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/etf1/kafka-message-scheduler-admin/actions/workflows/build.yml/badge.svg)](https://github.com/etf1/kafka-message-scheduler-admin/actions/workflows/build.yml)\n[![docker](https://github.com/etf1/kafka-message-scheduler-admin/actions/workflows/docker.yml/badge.svg)](https://github.com/etf1/kafka-message-scheduler-admin/actions/workflows/docker.yml)\n\n**Scheduler admin** is a GUI for managing a list of [kafka message schedulers](https://github.com/etf1/kafka-message-scheduler)\n\n\n### User Interface\n\n![Home](docs/screenshots/one.png)\n![List](docs/screenshots/two.png)\n![Detail](docs/screenshots/three.png)\n\n## Getting started\n\nTo run the scheduler admin you can use docker, it will need a scheduler to connect to, you can specify in the variable env. `SCHEDULERS_ADDR` for example: `SCHEDULERS_ADDR=scheduler`.\n\n### Regular version\n\n```\ndocker run -d -p 9000:9000 -e SCHEDULERS_ADDR=\u003cschedulers-address\u003e etf1/kafka-message-scheduler-admin\n```\n\n### Mini version\n\nThe mini version is a \"mocked\" version of the admin all in one, for demonstration purpose\n\n```\ndocker run -d -p 9000:9000 etf1/kafka-message-scheduler-admin:mini\n```\n\nThen open browser at `localhost:9000`\n\n## Usage\n\nThe server exposes two ports:\n\n- `9000` is the server port. \n- `9001` is the port for exposing prometheus metrics.\n\n- `/` will expose the user interface\n- `/api` will expose the api endpoints\n\n## API Routes\n\nGET methods\n\nURL Parameters:\n- `{name}`: scheduler name\n- `{id}`: schedule ID\n\n### config\n- `/stats` : expose some statistics\n- `/schedulers` : list of registered schedulers\n\n### all schedules\n- `/scheduler/{name}/schedules`: search for schedules \n- `/scheduler/{name}/schedule/{id}`: get schedule detail\n\n### live schedules\n- `/live/scheduler/{name}/schedules`: search for schedules\n- `/scheduler/{name}/schedule/{id}`: get schedule detail\n\n### history schedules\n- `/history/scheduler/{name}/schedules`: search for schedules\n- `/history/scheduler/{name}/schedule/{id}`: get schedule detail\n\n### search parameters\n\n- `schedule-id`: part of the schedule ID\n- `epoch-from`: lower range of schedule epoch\n- `epoch-to`: upper range of schedule epoch\n- `max`: max number of result returned (cannot be more than 1000)\n- `sort-by`: sort field, format is `field order`. \n   - Available options for field are: `timestamp`, `id`, `epoch`\n   - Available options for order are: `asc`, `desc`\n   - Default is `timestamp desc`\n\n## Configuration\n\n| Env. variable    | Default         | Description                                                                                                                                                |\n|------------------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| LOG_LEVEL        | info            | logging level (panic, fatal, error, warning, info, debug, trace)                                                                                           |\n| GRAYLOG_SERVER   |                 | graylog server address                                                                                                                                     |\n| METRICS_ADDR     | :9001           | prometheus metrics port                                                                                                                                    |\n| SERVER_ADDR      | :9000           | server address port                                                                                                                                        |\n| SCHEDULERS_ADDR  | localhost:8000  | comma separated list of address of schedulers, may or may not contain port (default port is 8000), for example: SCHEDULERS_ADDR=scheduler1,scheduler2:8000 |\n| STATIC_FILES_DIR | ../client/build | location of the UI static files for the HTML \u0026 js files                                                                                                    |\n| DATA_ROOT_DIR    | ./.db           | Default location of internal database files                                                                                                                |\n| API_SERVER_ONLY  | false           | when true, only the rest api is exposed without serving the static files and default route is / (instead of /api)                                          |\n| KAFKA_MESSAGE_BODY_DECODER  |            | set an endpoint for decoding kafka message payload. Post with payload {id:xxx target-topic:yyy value:[base64 of the kafka message body]}                                          |\n\n## Development\n\n### Backend (in folder ./server)\n\n#### Prerequisities\n\nFor development you will need external dependencies such as kafka, in order to start this dependencies you can run :\n\n- `make up`: startup development environment with external dependencies (kafka, scheduler, ...)\n- `make down`:  shutdown development environment\n\nThe backend is written in Go. You can use the following commands to manage the development lifecycle:\n\n- `make start`: start GO server\n- `make build`: compile the code\n- `make bin`: generate a binary\n- `make lint`: run static analysis on the code\n- `make test`: execute unit tests\n- `make test.integration`: execute integration tests\n- `make tests`: execute all tests\n- `make tests.docker`: execute all tests in \"black box\" inside docker containers\n\nThen start the server `make start`\n\n#### Quick start\n\n```\ncd server\nmake up\nmake start\n```\n\n### Frontend (in folder ./client)\n\n#### Prerequisities\n\nFor development you will need a running admin server launched as described before or the mini version of the scheduler admin which is running without any external dependencies:\n\n- `docker run -p 9000:9000 etf1/kafka-message-scheduler-admin:mini`: startup mini version of the scheduler (no external dependencies required)\n\nor start a standard admin server\n\n- `make start` (inside /server): startup GO server on local\n\nThe frontend is written with TypeScript and React. You can use the following commands to manage the development lifecycle:\n\n- `yarn`: install the dependencies\n- `yarn start`: start the frontend in development mode, with live reload\n- `yarn build`: generate the transpiled and minified files and assets\n- `yarn test`: execute unit tests\n\nTo start the nodejs dev. server `yarn \u0026\u0026 yarn start`\n\nThen open browser at: http://localhost:3000\n\n#### Quick start\n\n```\ncd client\ndocker run -d -p 9000:9000 etf1/kafka-message-scheduler-admin:mini\nyarn\nyarn start\n```\n\n## Contributors\n\n- [Fatih KARAKAŞ](https://github.com/fkarakas)\n- [Emmanuel FERTE](https://github.com/eferte)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetf1%2Fkafka-message-scheduler-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetf1%2Fkafka-message-scheduler-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetf1%2Fkafka-message-scheduler-admin/lists"}