{"id":51034727,"url":"https://github.com/zaeval/matter2github","last_synced_at":"2026-06-22T04:30:33.442Z","repository":{"id":365806603,"uuid":"1272825152","full_name":"zaeval/matter2github","owner":"zaeval","description":"mattermost에서 github로 이슈를 등록할 수 있게 해주는 webhook 서버입니다.","archived":false,"fork":false,"pushed_at":"2026-06-19T00:54:19.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-19T02:12:49.332Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/zaeval.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-18T01:08:05.000Z","updated_at":"2026-06-19T00:54:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zaeval/matter2github","commit_stats":null,"previous_names":["zaeval/matter2github"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/zaeval/matter2github","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaeval%2Fmatter2github","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaeval%2Fmatter2github/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaeval%2Fmatter2github/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaeval%2Fmatter2github/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaeval","download_url":"https://codeload.github.com/zaeval/matter2github/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaeval%2Fmatter2github/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34635032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"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":"2026-06-22T04:30:31.814Z","updated_at":"2026-06-22T04:30:33.428Z","avatar_url":"https://github.com/zaeval.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mattermost GitHub Issue Queue\n\nThis project receives Mattermost outgoing webhook messages, stores them in a\nlocal approval queue, and creates GitHub issues only after a reviewer approves\nthem from the web page.\n\n## Project Structure\n\n```text\n.\n├── src/server.js          # HTTP server, webhook receiver, queue UI, GitHub API client\n├── test/server.test.js    # Node test suite for parsing, queue, and config behavior\n├── data/queue.json        # Runtime queue storage, created automatically\n├── logs/audit.log         # Runtime audit events, created automatically\n├── start-server.ps1       # Windows scheduled-task launcher\n├── Dockerfile             # Container image for the callback server\n├── docker-compose.yml     # Local/container deployment with data/log volumes\n├── deploy.md              # Configuration and deployment guide\n├── .env.example           # Example configuration\n└── .env                   # Local secrets and runtime settings, not committed\n```\n\n## Flow\n\n```text\nMattermost outgoing webhook\n→ POST /hooks/mattermost/github-issue\n→ data/queue.json pending item\n→ /queue reviewer login, then approve or deny\n→ GitHub issue created on approve\n```\n\nThe callback URL for Mattermost is:\n\n```text\nhttp://\u003cserver-host\u003e:3000/hooks/mattermost/github-issue\n```\n\nThe approval page is:\n\n```text\nhttp://\u003cserver-host\u003e:3000/queue\n```\n\nOn the first run, create the first admin account:\n\n```text\nhttp://\u003cserver-host\u003e:3000/setup\n```\n\nAfter setup, sign in:\n\n```text\nhttp://\u003cserver-host\u003e:3000/login\n```\n\nAdmins can add reviewer/admin users and manage GitHub token settings:\n\n```text\nhttp://\u003cserver-host\u003e:3000/admin\n```\n\n## Runtime Endpoints\n\n```text\nGET  /health\nGET  /setup\nGET  /login\nGET  /queue\nGET  /admin\nGET  /api/queue?status=pending\nPOST /api/queue/:id/approve\nPOST /api/queue/:id/deny\nPOST /api/login\nPOST /api/logout\nPOST /api/setup\nGET  /api/admin/users\nPOST /api/admin/users\nGET  /api/admin/github-settings\nPOST /api/admin/github-settings\nPOST /hooks/mattermost/github-issue\n```\n\n## GitHub Modes\n\nThe server supports both direct GitHub API access and a GitHub-compatible\nproxy. Admin users can update these values from `/admin`; saved values are\nstored in `data/settings.json` and override `.env`.\n\nDirect GitHub:\n\n```env\nGITHUB_MODE=direct\nGITHUB_TOKEN=...\n```\n\nProxy GitHub:\n\n```env\nGITHUB_MODE=proxy\nGITHUB_API_BASE_URL=https://github-proxy.example.com/api/v3\nGH_PROXY_TOKEN=...\nGITHUB_TOKEN=...\n```\n\n## Local Run\n\n```powershell\nnpm.cmd start\n```\n\nTests:\n\n```powershell\nnpm.cmd test\n```\n\nDocker:\n\n```powershell\ndocker compose up -d --build\n```\n\nSee [deploy.md](./deploy.md) for full configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaeval%2Fmatter2github","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaeval%2Fmatter2github","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaeval%2Fmatter2github/lists"}