{"id":39367400,"url":"https://github.com/reporeply/reporeply","last_synced_at":"2026-01-21T13:01:47.824Z","repository":{"id":331970127,"uuid":"1129185159","full_name":"reporeply/reporeply","owner":"reporeply","description":"⚙️RepoReply is built to reduce noise, save maintainer time, and scale healthy repositories. Meaningful automation for open source and team workflows. Click on the link below to install it your repo's free !","archived":false,"fork":false,"pushed_at":"2026-01-17T19:19:27.000Z","size":3969,"stargazers_count":3,"open_issues_count":2,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T13:33:36.189Z","etag":null,"topics":["clean-architecture","codereview","maintenance"],"latest_commit_sha":null,"homepage":"https://github.com/apps/reporeply","language":"JavaScript","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/reporeply.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-01-06T18:18:35.000Z","updated_at":"2026-01-17T19:19:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/reporeply/reporeply","commit_stats":null,"previous_names":["x10developers/reporeply","reporeply/reporeply"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/reporeply/reporeply","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reporeply%2Freporeply","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reporeply%2Freporeply/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reporeply%2Freporeply/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reporeply%2Freporeply/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reporeply","download_url":"https://codeload.github.com/reporeply/reporeply/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reporeply%2Freporeply/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28633747,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["clean-architecture","codereview","maintenance"],"created_at":"2026-01-18T02:46:38.458Z","updated_at":"2026-01-21T13:01:47.816Z","avatar_url":"https://github.com/reporeply.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/banner.png\" alt=\"Reporeply\"\u003e\n\u003c/p\u003e\n\n\n# Reporeply\n\nReporeply is a GitHub App that helps maintain healthy repositories by automatically engaging with inactive issues in a respectful and transparent way.\n\nIt detects newly opened issues, provides an initial acknowledgement, and periodically checks for inactivity. If an issue remains inactive beyond a configurable grace period, Reporeply can post reminders or close the issue automatically.\n\nThe goal is to reduce maintainer overhead while keeping contributors informed.\n\n---\n\n## ✨ Features\n\n- Automatically comments on newly opened issues\n- Daily inactivity scanning via secure cron\n- Optional auto-close after a grace period\n- Skips bot-created issues to prevent loops\n- Uses short-lived GitHub App tokens (no PATs)\n- No database required\n- Designed for organizations and personal repositories\n\n---\n\n## 🧠 How It Works\n\n1. A user opens an issue\n2. GitHub sends a webhook event to Reporeply\n3. Reporeply authenticates using a GitHub App installation token\n4. A professional acknowledgment comment is posted\n5. A daily cron job scans for inactive issues\n6. Issues exceeding the inactivity threshold are handled according to rules\n\n---\n\n## 🔐 Security\n\n- Uses GitHub App authentication (JWT + installation tokens)\n- Webhook requests are verified using a secret\n- Cron endpoint protected via `CRON_SECRET`\n- Private keys are never committed to the repository\n- Minimal permissions are requested\n\n---\n\n## 📦 Permissions Required\n\n- **Issues**: Read \u0026 Write  \n- **Metadata**: Read  \n\nNo access to code, pull requests, or user data beyond issue metadata.\n\n---\n\n## ⚙️ Configuration\n\nEnvironment variables:\n\n```env\nAPP_ID=your_app_id\nWEBHOOK_SECRET=your_webhook_secret\nGITHUB_PRIVATE_KEY_PATH=/absolute/path/to/private-key.pem\nCRON_SECRET=secure_random_string\nPORT=3000\n\n\n## Project Status\n\n🚧 Early development — APIs and internal design may evolve.\n\n## Getting Started\n\n```bash\ngit clone https://github.com/x10developers/reporeply.git\ncd reporeply\n```\n\n## Contributors\n\n\u003ca href=\"https://github.com/x10developers/reporeply/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=x10developers/reporeply\" /\u003e\n\u003c/a\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:START --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freporeply%2Freporeply","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freporeply%2Freporeply","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freporeply%2Freporeply/lists"}