{"id":51675786,"url":"https://github.com/momenbasel/sprint-planner-extension","last_synced_at":"2026-07-15T05:34:09.605Z","repository":{"id":370005905,"uuid":"1277490699","full_name":"momenbasel/sprint-planner-extension","owner":"momenbasel","description":"Chrome side panel extension for visual Jira sprint planning","archived":false,"fork":false,"pushed_at":"2026-06-23T00:27:46.000Z","size":1184,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-07T22:22:08.821Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"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/momenbasel.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.html","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-23T00:12:11.000Z","updated_at":"2026-07-01T14:33:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/momenbasel/sprint-planner-extension","commit_stats":null,"previous_names":["momenbasel/sprint-planner-extension"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/momenbasel/sprint-planner-extension","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/momenbasel%2Fsprint-planner-extension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/momenbasel%2Fsprint-planner-extension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/momenbasel%2Fsprint-planner-extension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/momenbasel%2Fsprint-planner-extension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/momenbasel","download_url":"https://codeload.github.com/momenbasel/sprint-planner-extension/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/momenbasel%2Fsprint-planner-extension/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35493169,"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-07-15T02:00:06.706Z","response_time":131,"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-07-15T05:34:08.930Z","updated_at":"2026-07-15T05:34:09.591Z","avatar_url":"https://github.com/momenbasel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sprint Planner — Chrome Extension\n\nA Chrome extension for planning Jira sprints with a Gantt view, days-off support, and one-click due date sync.\n\nBuilt with zero infrastructure: each user connects their own Jira API token. Works for any Jira Cloud organisation.\n\n---\n\n## Features\n\n- **Gantt chart** with calendar-accurate bar placement — bars never appear on vacation or holiday days\n- **Days off \u0026 public holidays** — individual per-person or team-wide blocking\n- **Regression story detection** — flags missing regression test stories before planning\n- **Missing estimate detection** — highlights subtasks with no estimate (uses 2h default)\n- **Apply to Jira** — writes planned due dates directly via the Jira REST API\n- **Caching** — sprint data is cached in chrome.storage for instant re-use without re-fetching\n- **Multi-squad** — works for any Jira project key (HRM, APL, ATH, or custom)\n\n## Working day logic\n\n| Day | Behaviour |\n|---|---|\n| Monday | Ceremony day — regression stories get 2h slot, regular work starts Tuesday |\n| Tuesday–Thursday | Full dev days (configurable hours/day, default 6h) |\n| Friday | Weekend — skipped |\n| Saturday | Weekend — skipped |\n| Sunday | Dev day (working week: Sun–Thu) |\n\n---\n\n## Installation\n\n### From the `builds/` folder (quickest — no build step needed)\n\n1. Download `builds/sprint-planner-extension-v1.zip` (or the latest version)\n2. Unzip it\n3. Open Chrome → `chrome://extensions`\n4. Enable **Developer mode** (top-right toggle)\n5. Click **Load unpacked** → select the unzipped folder\n6. The 📋 icon appears in your toolbar\n\n### From source\n\n```bash\ngit clone https://github.com/your-org/sprint-planner-extension\ncd sprint-planner-extension\n# No build step — it's plain JS (ES modules)\n# Load the folder directly in Chrome as an unpacked extension\n```\n\n---\n\n## Setup (first time)\n\n1. Click the 📋 toolbar icon\n2. You'll be prompted to **Set up Jira connection**\n3. Enter:\n   - **Jira base URL** — e.g. `https://your-org.atlassian.net`\n   - **Email** — the email you use to log in to Jira\n   - **API token** — create one at [id.atlassian.com/manage/api-tokens](https://id.atlassian.com/manage/api-tokens)\n4. Click **Test connection** to verify, then **Save \u0026 continue**\n\nYour credentials are stored in `chrome.storage.local` — they never leave your browser.\n\n---\n\n## Usage\n\n1. **Choose a project** — HRM, APL, ATH, or type a custom key\n2. **Fetch from Jira** — pulls the active sprint, all stories, and all subtask estimates\n3. **Add days off** — individual vacations and/or public holidays\n4. **Generate plan** — instant Gantt computed in your browser (zero network calls)\n5. **Review dates** — optionally edit planned due dates in the Review tab\n6. **Apply to Jira ✓** — writes `duedate` field to each story via the Jira REST API\n\n---\n\n## Architecture\n\n```\nsprint-planner-extension/\n├── manifest.json          # Chrome extension manifest v3\n├── popup.html             # Main UI (all screens)\n├── popup.js               # App controller (ES module)\n├── settings.html          # First-time auth setup\n├── settings.js            # Credential management\n├── styles.css             # Shared styles\n├── src/\n│   ├── jira-api.js        # Atlassian REST API v3 client\n│   └── scheduler.js       # Sprint scheduling engine (pure JS, no deps)\n├── icons/                 # Extension icons\n└── builds/                # Pre-packaged ZIP files for easy install\n```\n\n### Why no OAuth?\n\nFor internal team tools, API tokens are simpler and just as secure:\n- No redirect URI, no OAuth server, no client secrets in the code\n- Tokens can be scoped and revoked per-user in the Atlassian account settings\n- Credentials are stored encrypted by Chrome, never transmitted outside your org's Jira instance\n\nIf you want OAuth 2.0 (3LO) for a public-facing version, that requires a backend — see the `docs/` folder for that path.\n\n---\n\n## API calls made\n\n| Call | Endpoint |\n|---|---|\n| Fetch stories | `GET /rest/api/3/search?jql=project=X AND sprint in openSprints()...` |\n| Fetch subtasks | `GET /rest/api/3/search?jql=issue in (...)` |\n| Apply due dates | `PUT /rest/api/3/issue/{key}` with `{ fields: { duedate: \"YYYY-MM-DD\" } }` |\n| Test connection | `GET /rest/api/3/myself` |\n\nAll calls go directly from the extension to your Jira instance (declared in `host_permissions` in `manifest.json` — Chrome grants cross-origin access for declared hosts).\n\n---\n\n## Releases\n\n| Version | Date | Notes |\n|---|---|---|\n| v1.0.0 | 2026-04-25 | Initial release — HRM/APL/ATH support, Gantt, days off, apply to Jira |\n\n---\n\n## Development\n\nNo build tooling required. The extension uses native ES modules — just edit files and reload in `chrome://extensions`.\n\nTo add a new quick-select project, add a button to `popup.html`:\n```html\n\u003cbutton class=\"proj-pill\" data-key=\"NEW\" data-name=\"New Squad\"\u003eNEW · New Squad\u003c/button\u003e\n```\n\n---\n\n## Claude artifact (interim tool)\n\nWhile this extension is in development, the team is using a Claude artifact version of the same tool. The latest artifact HTML is in `builds/sprint-planner-claude-artifact-latest.html` — it can be loaded directly in any browser for a standalone read-only preview.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmomenbasel%2Fsprint-planner-extension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmomenbasel%2Fsprint-planner-extension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmomenbasel%2Fsprint-planner-extension/lists"}