{"id":37019336,"url":"https://github.com/bekk/db-scheduler-ui","last_synced_at":"2026-02-12T09:04:34.064Z","repository":{"id":187512336,"uuid":"676955230","full_name":"bekk/db-scheduler-ui","owner":"bekk","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-03T10:25:56.000Z","size":2644,"stargazers_count":72,"open_issues_count":8,"forks_count":23,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-14T04:45:38.233Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bekk.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-10T11:57:41.000Z","updated_at":"2025-12-24T05:25:06.000Z","dependencies_parsed_at":"2023-12-08T16:25:34.405Z","dependency_job_id":"2d610be8-8a52-4b4e-bccd-6184e768bef0","html_url":"https://github.com/bekk/db-scheduler-ui","commit_stats":null,"previous_names":["bekk/db-scheduler-ui"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/bekk/db-scheduler-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bekk%2Fdb-scheduler-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bekk%2Fdb-scheduler-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bekk%2Fdb-scheduler-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bekk%2Fdb-scheduler-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bekk","download_url":"https://codeload.github.com/bekk/db-scheduler-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bekk%2Fdb-scheduler-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29362205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"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":[],"created_at":"2026-01-14T02:08:20.614Z","updated_at":"2026-02-12T09:04:34.046Z","avatar_url":"https://github.com/bekk.png","language":"Java","funding_links":[],"categories":["\u003ca name=\"Java\"\u003e\u003c/a\u003eJava"],"sub_categories":[],"readme":"# DB Scheduler UI\n\n![build status](https://github.com/bekk/db-scheduler-ui/workflows/Build/badge.svg)\n[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)\n\nA UI extension for [db-scheduler](https://github.com/kagkarlsson/db-scheduler) that provides a browser accessible\ndashboard for monitoring and basic administration of tasks.\n\n## Features\n\n* **View tasks** that are Scheduled, Running or Failed.\n* **Re-run or Run** your task directly from the User Interface\n* **Delete tasks**\n* **Uses SpringBoot** to launch a UI\n* **View the history of all tasks** (optional)\n\n\u003cimg alt=\"Screenshot\" src=\"Screenshot_Frontpage.png\" width=700/\u003e\n\u003cimg alt=\"Screenshot\" src=\"Screenshot_Group.png\" width=700/\u003e\n\u003cimg alt=\"Screenshot\" src=\"Screenshot_History.png\" width=700/\u003e\n\n## Table of contents\n\n* [Getting started](#getting-started)\n* [Prerequisites](#prerequisites)\n* [How it works](#how-it-works)\n* [Configuration](#configuration)\n\n### Prerequisites\n\n* An existing Spring Boot application, with [db-scheduler](https://github.com/kagkarlsson/db-scheduler)\n* Minimum db-scheduler version 15\n* Minimum Java 17 and SpringBoot 3.3\n* Optional (if you want task history): db-scheduler-log version 0.7.0\n\n## Getting started\n\n1. Add the db-scheduler-ui spring boot starter maven dependency\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eno.bekk.db-scheduler-ui\u003c/groupId\u003e\n    \u003cartifactId\u003edb-scheduler-ui-starter\u003c/artifactId\u003e\n    \u003cversion\u003e4.3.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n2. Read the [db-scheduler](https://github.com/kagkarlsson/db-scheduler) readme and follow the getting started guide. The\n   most important is to create the `scheduled_tasks` table correctly.\n   You do not need to add db-scheduler as a dependency.\n3. Start your application. The db-scheduler UI can be reached at `\u003cyour-app-url\u003e/db-scheduler`\n\n## Optional: task history\n\nIf you want to add task history to your UI you need to add the following dependency:\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.rocketbase.extension\u003c/groupId\u003e\n    \u003cartifactId\u003edb-scheduler-log-spring-boot-starter\u003c/artifactId\u003e\n    \u003cversion\u003e0.7.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nFollow the [readme](https://github.com/rocketbase-io/db-scheduler-log) to create the correct database table.\n\nYou also need to set `db-scheduler-ui.history=true` in your application.properties file, and consider setting a limit to\nthe number of logs fetched: `db-scheduler-ui.log-limit=1000`.\n\n## How it works\n\ndb-scheduler-ui adds a REST-api package that has a bundled frontend application.\nSpringboot is used to configure beans and handle dependencies within the library and your application.\nThe user interface makes calls to the scheduler-client, where it can fetch, delete, run, and reschedule tasks.\nThese tasks are then shown in the web application.\nAn optional log module can also be added, making it possible to view the history of all your task executions.\n\n## Configuration\n\ndb-scheduler-ui can be configured using the following options:\n\n`history`: Turns on db-scheduler-log, default value is `false`. You can also limit the number of logs to fetch\nwith `log-limit`.\n\n```\ndb-scheduler-ui.history=true\ndb-scheduler-ui.log-limit=1000\n```\n\nIf you for some reason want to hide the task data you can set this to false. defaults to `true`\n\n```\ndb-scheduler-ui.task-data=false\n```\n\nOr if you want a _read-only_ mode (in which tasks cannot be manually run, deleted or scheduled) set `read-only` to `true`, defaults to `false`\n\n````\ndb-scheduler-ui.read-only=true\n````\n\nIf you want to add a _prefix_ for the ui you can set the property below.\n\n````\ndb-scheduler-ui.context-path=prefix\n````\n\n## Security\n\nIn case you want to secure db-scheduler-ui you can use [Spring Security](https://spring.io/projects/spring-security), you should secure the paths `/db-scheduler` and `/db-scheduler-api`.\n\nIn a more advanced scenario, you could assign an _admin role_ and a _read-only user_ role.\nAn example _filter chain_ with basic security:\n```java\n@Bean\nSecurityFilterChain filterChain(HttpSecurity http) throws Exception {\n  return http\n      .csrf(CsrfConfigurer::disable)\n      .authorizeHttpRequests(\n          authz -\u003e\n              authz\n                  // protect the UI\n                  .requestMatchers(\"/db-scheduler/**\").hasAnyRole(\"ADMIN\", \"USER\")\n                  // allow read access to the API for both users and admins\n                  .requestMatchers(HttpMethod.GET, \"/db-scheduler-api/**\").hasAnyRole(\"ADMIN\", \"USER\")\n                  // only admins can delete tasks, alter scheduling, ...\n                  .requestMatchers(HttpMethod.POST, \"/db-scheduler-api/**\").hasAnyRole(\"ADMIN\")\n                  // other application specific security\n                  .anyRequest().permitAll())\n      .httpBasic(withDefaults())\n      .build();\n}\n```\nadditionally you might want to hide delete, run, ... buttons in the UI. To achieve this, declare the following bean:\n```java\n@Bean\nConfigController configController(DbSchedulerUiProperties properties) {\n  return new ConfigController(properties.isHistory(), readOnly(properties));\n}\n\nprivate Supplier\u003cBoolean\u003e readOnly(DbSchedulerUiProperties properties) {\n  // either global readonly mode is active or user has no admin rights  \n  return () -\u003e properties.isReadOnly() || !isAdmin();\n}\n\nprivate boolean isAdmin() {\n  Authentication auth = SecurityContextHolder.getContext().getAuthentication();\n  if (auth == null) {\n    return false;\n  }\n  return auth.getAuthorities().stream().anyMatch(a -\u003e \"ROLE_ADMIN\".equals(a.getAuthority()));\n}\n```\n\n## Contributing\n\nFeel free to create pull requests if there are features or improvements you want to add.\nPR's need to be approved by one of the maintainers. To publish a new version, create a release in Github and tag it with\na SemVer version.\nA new release will then be released to maven central by a github action using JReleaser.\n\nBefore submitting a PR make sure to run `mvn spotless:apply` to format the code correctly.\nPlease use the prettier config when making frontend changes\n\n## Local development\n\nPrerequisites:\n\n* Maven\n* JDK17\n* Node\n* npm\n\nThere are two ways to run the frontend locally.\n\n1. running `npm run dev` inside the db-scheduler-ui-frontend folder\n2. running `mvn install` will build the frontend and copy the output to the resources folder in the `db-scheduler-ui`\n   module. The frontend will then be available at the same port as the example app.\n\nTo run the backend run `mvn clean install` and then run the example app.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbekk%2Fdb-scheduler-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbekk%2Fdb-scheduler-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbekk%2Fdb-scheduler-ui/lists"}