{"id":20850419,"url":"https://github.com/noteed/minicron","last_synced_at":"2025-10-30T21:20:40.436Z","repository":{"id":19422288,"uuid":"22664818","full_name":"noteed/minicron","owner":"noteed","description":"Simple cron-like tool","archived":false,"fork":false,"pushed_at":"2024-03-07T11:27:56.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T07:39:14.451Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noteed.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}},"created_at":"2014-08-06T01:01:36.000Z","updated_at":"2024-02-26T14:49:24.000Z","dependencies_parsed_at":"2024-03-07T12:51:35.654Z","dependency_job_id":null,"html_url":"https://github.com/noteed/minicron","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/noteed/minicron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteed%2Fminicron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteed%2Fminicron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteed%2Fminicron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteed%2Fminicron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noteed","download_url":"https://codeload.github.com/noteed/minicron/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteed%2Fminicron/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278909715,"owners_count":26066887,"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-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":[],"created_at":"2024-11-18T03:09:24.827Z","updated_at":"2025-10-08T07:39:16.442Z","avatar_url":"https://github.com/noteed.png","language":"Nix","readme":"# Minicron\n\nMinicron runs tasks.\n\n## Design\n\nThere is a wakeup service, and then the tasks service.\n\nThe wakeup service simply sends scheduled wakeup messages. It maintains a\nsingle pending wakeup, which can be replaced by another scheduled wakeup.\n\nThe tasks service maintains the set of tasks to be run. When it receives a\nwakeup message, it tries to run tasks. It schedules wakeups using the wakeup\nservice. It can do so either by returning a value after running a task (when it\nalready knows another task will need a wakeup), or by requesting explicitely a\nnew wakeup (e.g. when it is notified by another service that a new task has\nbeen added).\n\nIn the wakeup service, there are two threads. The main thread spawns the second\nthread. The second thread sleeps the requested amount of time, then notifies\nthe main thread it is time to send a wakeup. The main thread also listens for\nrequests for a new wakeup value.\n\n## Usage\n\nThe simple usage is to write a small Haskell script that creates a set of\ntasks, then call `System.Cron.Mini.cron`. This will result in a program that\nexecutes the tasks, until the set of tasks is empty (which might never be the\ncase if e.g. a task repeats endlessy).\n\nThe second usage is to write a client thread that will implement the tasks\nservice and communicate with the wakeup service. This makes it possible to\ndynamically change the set of tasks and continue to run even if it becomes\nempty. For instance the set of tasks can be recorded in a database, and the\nclient thread will wait for a record to appear before requesting a wakeup.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoteed%2Fminicron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoteed%2Fminicron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoteed%2Fminicron/lists"}