{"id":22310819,"url":"https://github.com/azarattum/devboard","last_synced_at":"2025-03-26T02:13:24.018Z","repository":{"id":250858286,"uuid":"834995943","full_name":"Azarattum/Devboard","owner":"Azarattum","description":"A dashboard for developers to monitor project activity","archived":false,"fork":false,"pushed_at":"2024-09-18T02:42:24.000Z","size":791,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T23:30:30.805Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/Azarattum.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-07-28T23:50:14.000Z","updated_at":"2024-09-18T02:42:28.000Z","dependencies_parsed_at":"2025-01-30T23:29:02.778Z","dependency_job_id":"c15f7c49-7928-4212-894e-923226820f92","html_url":"https://github.com/Azarattum/Devboard","commit_stats":null,"previous_names":["azarattum/devboard"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azarattum%2FDevboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azarattum%2FDevboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azarattum%2FDevboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azarattum%2FDevboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Azarattum","download_url":"https://codeload.github.com/Azarattum/Devboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245573899,"owners_count":20637674,"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","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-12-03T21:16:07.181Z","updated_at":"2025-03-26T02:13:23.989Z","avatar_url":"https://github.com/Azarattum.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Devboard\n\nA dashboard for developers to monitor project activity. Dynamic configuration supports parsing slack messages or dispatching periodic web requests.\n\n![](./docs/demo.png)\n\n### Setup\nCreate a configuration `config.ts` file in the root of the project. The configuration follows schema defined in [src/types/config.ts](./src/types/config.ts). Here is an example of what it might look like (all values and tokens are AI generated):\n```ts\nimport type { Config } from \"~/types/config\";\n\nexport const config: Config = {\n  slack: {\n    appToken:\n      \"xapp-1-B12JK8K9DQA-9876543210-zyxwvutsrqponmlkjihgfedcba9876543210\",\n    token: \"xoxb-1234567890-0987654321098-abcdef123456ghijklmnopqrs\",\n  },\n\n  builds: {\n    development: {\n      success: {\n        match: /completed\u003c[^\u003e]+\u003e\\s\\((\\w+)\\)/,\n        channel: \"C3XY12AB34\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n        exclude: [\"-test\"],\n        include: [\"-release\"],\n        capture: 1,\n      },\n      fail: {\n        match: /failure\u003c[^\u003e]+\u003e\\s\\((\\w+)\\)/,\n        channel: \"C3XY34AB56\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n        exclude: [\"-test\"],\n        include: [\"-release\"],\n        capture: 1,\n      },\n      pending: {\n        match: /build initiated/,\n        channel: \"C3XY34AB56\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n        exclude: [\"-test\"],\n        include: [\"-release\"],\n      },\n    },\n    preproduction: {\n      success: {\n        match: /completed\u003c[^\u003e]+\u003e\\s\\((\\w+)\\)/,\n        include: [\"-release\", \"-live\"],\n        channel: \"C3XY34AB56\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n        capture: 1,\n      },\n      fail: {\n        match: /failure\u003c[^\u003e]+\u003e\\s\\((\\w+)\\)/,\n        include: [\"-release\", \"-live\"],\n        channel: \"C3XY34AB56\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n        capture: 1,\n      },\n      pending: {\n        match: /build initiated/,\n        include: [\"-release\", \"-live\"],\n        channel: \"C3XY34AB56\",\n        extra: \"mentioned\",\n        user: \"U87654321\",\n      },\n    },\n  },\n  activity: {\n    idle: {\n      match: /class=\"status_active\\b[^\"]*\"[^\u003e]*\u003e\\s*([0-9]+)/,\n      url: \"https://example.org/status\",\n      interval: 15 * 60_000,\n      capture: 1,\n    },\n    event: {\n      channel: \"C0456XYZ890\",\n      match: /(\\s|\\S)+/,\n      capture: \"extra\",\n      extra: \"author\",\n    },\n  },\n  statistics: {\n    \"Merged Branches\": {\n      match: /\u003c@[A-Z0-9]+\u003e/g,\n      channel: \"G1XY2Z3AB4\",\n      include: [\"done\"],\n    },\n    \"Support Messages\": {\n      channel: \"C0456XYZ890\",\n      match: /(\\s|\\S)+/g,\n    },\n    \"Tasks Planned\": {\n      channel: \"C7XYZ1234L\",\n      match: /`[^`]+`/g,\n    },\n  },\n};\n```\n\nInstall packages, init database, build project, run:\n```sh\nbun install\nbun db:push\nbun run build\nbun start\n```\n\nOptionally there is also `mock.sql` file which contains fake data to try out the dashboard.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazarattum%2Fdevboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazarattum%2Fdevboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazarattum%2Fdevboard/lists"}