{"id":21030980,"url":"https://github.com/azutoolkit/dashforge","last_synced_at":"2025-08-01T00:37:21.325Z","repository":{"id":95807830,"uuid":"292266552","full_name":"azutoolkit/dashforge","owner":"azutoolkit","description":"Dashforge is JoobQ Server Web Interface that allows you o monitor job queues processing, job latency, and errors in a beautiful LIVE components interface","archived":false,"fork":false,"pushed_at":"2022-05-30T12:33:19.000Z","size":23408,"stargazers_count":5,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-15T11:38:06.237Z","etag":null,"topics":["crystal","job","processing","queues","redis","ui"],"latest_commit_sha":null,"homepage":"https://dashforge.io","language":"JavaScript","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/azutoolkit.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":"2020-09-02T11:40:57.000Z","updated_at":"2022-05-29T02:16:51.000Z","dependencies_parsed_at":"2023-03-03T03:00:23.380Z","dependency_job_id":null,"html_url":"https://github.com/azutoolkit/dashforge","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/azutoolkit/dashforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azutoolkit%2Fdashforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azutoolkit%2Fdashforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azutoolkit%2Fdashforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azutoolkit%2Fdashforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/azutoolkit","download_url":"https://codeload.github.com/azutoolkit/dashforge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azutoolkit%2Fdashforge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268147477,"owners_count":24203280,"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-31T02:00:08.723Z","response_time":66,"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":["crystal","job","processing","queues","redis","ui"],"created_at":"2024-11-19T12:23:06.192Z","updated_at":"2025-08-01T00:37:21.318Z","avatar_url":"https://github.com/azutoolkit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/azutoolkit/dashforge\"\u003e\n    \u003cimg src=\"images/logo.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eDashforge\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A real-time Dashboard UI to monitor jobs for the background\njob processing library \u003ca href=\"https://github.com/azutoolkit/joobq\"\u003e\u003cstrong\u003eJoobQ\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/azutoolkit/dashforge\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://dashforge.io\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/azutoolkit/dashforge/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/azutoolkit/dashforge/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## About The Project\n\n[![DashForge Screen Shot][product-screenshot]](https://dashforge.io)\n\nMany types of applications require background tasks that run independently of the\nuser interface (UI). Examples include batch jobs, intensive processing tasks, and\nlong-running processes such as workflows. Background jobs can be executed without\nrequiring user interaction--the application can start the job and then continue to\nprocess interactive requests from users. This can help to minimize the load on the\napplication UI, which can improve availability and reduce interactive response times.\n\nDashforge Basic features include:\n\n- Monitor current job processed (Total processed, completed, retried, dead)\n- Job Queue Monitor (Jobs per Second, Total Errors, and Job Processing Latency)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Installation\n\n#### Fly.io Deployment\n\nTo deploy to [Fly.io](https://fly.io) use the fly.io directory `toml` file and\ncustomize it as per your application needs.\n\nThen using the `fly` command-line tool deploy your apps:\n\n```ssh\nfly deploy -c ./fly.io/redis.toml\nfly deploy -c ./fly.io/dashforge-worker.toml\nfly deploy -c ./fly.io/dashforge.toml\n```\n\n#### Redis DB\n\nRedis DB is where JoobQ stores and maintains the state of your Jobs as well as\ncreate statistics using the Redis Timeseries module, and for this reason we recommend\ndeploy the time-series version of Redis which can be found at `docker.io/redislabs/redistimeseries:latest`\n\n#### Worker Nodes\n\nThese worker nodes are your minions that process the Jobs, the more worker nodes\nthe more throughput.\n\n```crystal\n# Load JoobQ Shard\nrequire \"joobq\"\n\n# Only needed for the Scheduler below\nrequire \"../src/jobs/**\"\n\n\n# Configure JoobQ\nJoobQ.configure do\n  queue \"queue:Email\", ENV[\"EMAIL_QUEUE_WORKERS\"].not_nil!.to_i, EmailJob\n  queue \"queue:Fail\", ENV[\"FAIL_QUEUE_WORKERS\"].not_nil!.to_i, FailJob\n  queue \"queue:Test\", ENV[\"TEST_QUEUE_WORKERS\"].not_nil!.to_i, TestJob\n\n  # Define periodic schedule these Jobs will execute at an interval\n  scheduler do\n    cron \"5 4 * * *\" { TestJob.perform(1) }\n    delay TestJob.new(1), for: 1.minute\n    every 1.hour, EmailJob\n  end\nend\n\n# Starts processing the queue\nJoobQ.forge\n\nsleep\n```\n\n#### Docker\n\nTo build the `Dockerfile` in the root directory\n\n```ssh\ndocker build .\n```\n\n#### Docker Compose\n\n```ssh\ndocker-compose up\n```\n\n## Roadmap\n\n- [ ] Pagination of jobs\n- [ ] Better Job Details\n\nSee the [open issues](https://github.com/gazutoolkit/dashforge/issues) for a\nfull list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Contributing\n\nContributions are what the makes open-source community such an amazing place to learn,\ninspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and\ncreate a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork it (\u003chttps://github.com/your-github-user/dashforge/fork\u003e)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Contributors\n\n- [Elias J. Perez](https://github.com/eliasjpr) - creator and maintainer\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/azutoolkit/dashforge.svg?style=for-the-badge\n[contributors-url]: https://github.com/azutoolkit/dashforge/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/azutoolkit/dashforge.svg?style=for-the-badge\n[forks-url]: https://github.com/azutoolkit/dashforge/network/members\n[stars-shield]: https://img.shields.io/github/stars/azutoolkit/dashforge.svg?style=for-the-badge\n[stars-url]: https://github.com/azutoolkit/dashforge/stargazers\n[issues-shield]: https://img.shields.io/github/issues/azutoolkit/dashforge.svg?style=for-the-badge\n[issues-url]: https://github.com/azutoolkit/dashforge/issues\n[license-shield]: https://img.shields.io/github/license/azutoolkit/dashforge.svg?style=for-the-badge\n[license-url]: https://github.com/azutoolkit/dashforge/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[product-screenshot]: images/DashForge.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazutoolkit%2Fdashforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazutoolkit%2Fdashforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazutoolkit%2Fdashforge/lists"}