diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..779de0be4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,134 @@ +name: Bug Report +description: File a bug report to help us improve DroneWorld +title: "[BUG] " +labels: ["bug", "needs-triage"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug! Please fill out the form below with as much detail as possible. + + - type: textarea + id: description + attributes: + label: Bug Description + description: A clear and concise description of what the bug is. + placeholder: Describe the bug... + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Steps to Reproduce + description: Steps to reproduce the behavior + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. + placeholder: What should have happened? + validations: + required: true + + - type: textarea + id: actual + attributes: + label: Actual Behavior + description: What actually happened instead? + placeholder: What actually happened? + validations: + required: true + + - type: dropdown + id: component + attributes: + label: Component + description: Which component of DroneWorld is affected? + options: + - Frontend (React UI) + - Backend (Flask API) + - Simulator (DRV-Unreal) + - Docker/Deployment + - Documentation + - Other + validations: + required: true + + - type: input + id: version + attributes: + label: Version/Commit + description: What version, commit SHA, or Docker image are you running? + placeholder: e.g., v0.4.2, 1a2b3c4d, droneworld/backend:latest + validations: + required: true + + - type: dropdown + id: severity + attributes: + label: Severity + description: How severe is this bug? + options: + - Low + - Medium + - High + - Critical + validations: + required: true + + - type: textarea + id: environment + attributes: + label: Environment + description: Please provide your environment details + placeholder: | + - OS: [e.g., Windows 11, macOS 14, Ubuntu 22.04] + - Docker version: [e.g., 24.0.0] + - Python version: [e.g., 3.10.0] (if applicable) + - Node.js version: [e.g., 20.0.0] (if applicable) + - Browser: [e.g., Chrome 120] (if applicable) + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Relevant Logs/Errors + description: Paste any relevant logs, error messages, or stack traces + render: shell + placeholder: Paste logs here + + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: If applicable, add screenshots to help explain your problem + placeholder: Drag and drop screenshots here or paste image URLs + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Add any other context about the problem here + placeholder: Any other information that might be helpful... + + - type: checkboxes + id: checks + attributes: + label: Pre-submission Checklist + options: + - label: I have searched existing issues to ensure this bug hasn't been reported + required: true + - label: I have provided all requested information + required: true + - label: I have tested with the latest version of the code + required: false diff --git a/.github/ISSUE_TEMPLATE/capstone_sprint_task.yml b/.github/ISSUE_TEMPLATE/capstone_sprint_task.yml new file mode 100644 index 000000000..5d8bd4baa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/capstone_sprint_task.yml @@ -0,0 +1,154 @@ +name: Capstone Sprint Task +description: Sprint-ready task template for capstone students working on DroneWorld +title: "[CAPSTONE] " +labels: ["needs-triage"] +body: + - type: markdown + attributes: + value: | + Use this template to define a sprint task with clear scope, objective acceptance criteria, and practical implementation notes. + + - type: textarea + id: intro + attributes: + label: Intro + description: One short paragraph of context for why this task exists right now. Alternatively, use user-story format ("As a ..., I want ..., so that ..."). + placeholder: | + Once we have [current milestone], we need to implement [task] so users can [outcome]. + OR + As a [type of user], I want [goal] so that [benefit]. + validations: + required: true + + - type: textarea + id: overview + attributes: + label: Overview (Given/When/Then) + description: Frame the expected behavior as a testable user/system scenario. + placeholder: | + Given that [initial context] + When [trigger/action] + Then [expected outcome] + validations: + required: true + + - type: textarea + id: currently + attributes: + label: Currently + description: Describe the current state, gaps, blockers, or known broken behavior. + placeholder: | + - Current behavior: + - Known blockers: + - Existing related work: + + - type: textarea + id: description + attributes: + label: Description + description: Provide full implementation context and expected approach. + placeholder: | + Describe what needs to be built/fixed/refactored and why. + Include references to existing files/services and any known constraints. + validations: + required: true + + - type: dropdown + id: task_type + attributes: + label: Task Type + description: Select the main nature of this capstone task. + options: + - Feature implementation + - Bug fix + - Refactor + - Testing/E2E + - Infrastructure/DevOps + - Documentation + - Research/Spike + - Other + validations: + required: true + + - type: dropdown + id: component + attributes: + label: Component + description: Which part of DroneWorld is primarily affected? + options: + - Frontend (React UI) + - Backend (Flask API) + - Simulator (DRV-Unreal) + - Mock Simulator + - Docker/Deployment + - CI/CD + - Documentation + - Full Stack + - Other + validations: + required: true + + - type: textarea + id: acceptance_criteria + attributes: + label: Acceptance Criteria (Essential) + description: List objective must-have outcomes. Write each criterion so it can be verified. + placeholder: | + - [ ] Criterion 1 + - [ ] Criterion 2 + - [ ] Criterion 3 + validations: + required: true + + - type: textarea + id: stretch_acceptance_criteria + attributes: + label: Stretch Acceptance Criteria (Optional) + description: Nice-to-have outcomes if essential scope is completed early. + placeholder: | + - [ ] Stretch criterion 1 + - [ ] Stretch criterion 2 + + - type: textarea + id: notes + attributes: + label: Notes + description: Add constraints, caveats, implementation tips, and references. + placeholder: | + - Watch/read reference material before starting: + - Existing setup already in place: + - Technical considerations: + - Performance or compatibility constraints: + + - type: textarea + id: next + attributes: + label: Next + description: Follow-up work after this task is complete. + placeholder: | + Once this is done, the next logical step is... + + - type: textarea + id: resources + attributes: + label: Resources + description: Link docs, repos, Slack threads, architecture notes, related issues, and relevant files. + placeholder: | + - Related issue(s): #123 + - Doc/spec: + - Video/thread: + - Relevant file(s): + + - type: checkboxes + id: checks + attributes: + label: Author Checklist + options: + - label: I defined scope and expected outcome clearly. + required: true + - label: I provided objective essential acceptance criteria. + required: true + - label: I linked all relevant references and prior work. + required: true + - label: I listed follow-up work in the Next section (or marked none). + required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..6f0276dbd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,121 @@ +name: Feature Request +description: Suggest a new feature or enhancement for DroneWorld +title: "[FEATURE] " +labels: ["enhancement", "needs-triage"] +body: + - type: markdown + attributes: + value: | + Thanks for suggesting a new feature! Please provide as much detail as possible to help us understand your request. + + - type: textarea + id: problem + attributes: + label: Problem Statement + description: What problem does this feature solve? What use case does it address? + placeholder: | + As a [type of user], I want to [goal] so that [benefit]. + validations: + required: true + + - type: textarea + id: solution + attributes: + label: Proposed Solution + description: Describe the feature you'd like to see + placeholder: A clear and concise description of what you want to happen. + validations: + required: true + + - type: textarea + id: acceptance_criteria + attributes: + label: Acceptance Criteria + description: What must be true for this feature to be considered complete? + placeholder: | + - [ ] Criterion 1 + - [ ] Criterion 2 + - [ ] Criterion 3 + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives Considered + description: Describe any alternative solutions or features you've considered + placeholder: What other approaches have you thought about? + + - type: dropdown + id: component + attributes: + label: Component + description: Which component would this feature affect? + options: + - Frontend (React UI) + - Backend (Flask API) + - Simulator (DRV-Unreal) + - Mission System + - Monitor System + - Storage/Reporting + - Documentation + - Other + validations: + required: true + + - type: textarea + id: examples + attributes: + label: Examples/Mockups + description: If applicable, provide examples, mockups, or screenshots + placeholder: | + - Example use case: ... + - Mockup/screenshot: [attach image] + + - type: textarea + id: impact + attributes: + label: Impact + description: How would this feature benefit users? Who would use it? + placeholder: Describe the potential impact and user base... + + - type: textarea + id: stretch_acceptance_criteria + attributes: + label: Stretch Acceptance Criteria + description: Optional criteria that would be nice to include beyond the core scope. + placeholder: | + - [ ] Stretch criterion 1 + - [ ] Stretch criterion 2 + + - type: dropdown + id: rating + attributes: + label: User Impact Rating + description: How much of an impact do you honestly believe the feature would have? + options: + - Low - Nice to have + - Medium - Would be useful + - High - Important for my use case + - Critical - Blocking my work + validations: + required: true + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Add any other context, references, or examples + placeholder: Any other information that might be helpful... + + - type: checkboxes + id: checks + attributes: + label: Pre-submission Checklist + options: + - label: I have searched existing issues to ensure this feature hasn't been requested + required: true + - label: I have provided all requested information + required: true + - label: I am willing to help implement this feature (if applicable) + required: false diff --git a/.github/ISSUE_TEMPLATE/good_first_issue.md b/.github/ISSUE_TEMPLATE/good_first_issue.md new file mode 100644 index 000000000..b3b53b869 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/good_first_issue.md @@ -0,0 +1,82 @@ +--- +name: Good First Issue +about: Template for marking issues suitable for new contributors +title: '' +labels: 'good-first-issue' +assignees: '' + +--- + +## Summary + + + +## Problem / User Impact + + + +## Scope + +### In Scope + + + +### Out of Scope + + + +## Why This is a Good First Issue + +- [ ] Well-defined scope +- [ ] Clear acceptance criteria +- [ ] Good documentation available +- [ ] Minimal dependencies on other work +- [ ] Suitable for someone new to the codebase + +## Skills Needed + +- [ ] Basic programming knowledge +- [ ] Familiarity with [relevant technology] +- [ ] Understanding of [relevant concept] + +## Estimated Effort + + +- [ ] Small (1-3 hours) +- [ ] Medium (half day to 1 day) +- [ ] Large (1-3 days) + +## Getting Started + +1. [How to set up locally] +2. [Where in the code to begin] +3. [First small step to validate progress] + +## Where to Start (Code Pointers) + +- [Path/to/file/or/module] +- [Path/to/file/or/module] +- [Helpful function/class names] + +## Resources + +- [Link to relevant documentation] +- [Link to related code] +- [Link to examples] + +## Acceptance Criteria + +- [ ] [Objective criterion 1] +- [ ] [Objective criterion 2] +- [ ] [Objective criterion 3] + +## Definition of Done + +- [ ] Acceptance criteria are met +- [ ] Tests pass locally +- [ ] Documentation/comments are updated if needed +- [ ] PR references this issue + +## Questions? + +Feel free to ask questions in the comments or reach out to maintainers! diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..df39f9724 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,127 @@ +## Linked Issue + + + +Closes # + +## Summary + + + +**What changed** + +- [Brief description of changes] + +**Why** + +- [Motivation and context] + +**How** + +- [Technical approach and key implementation details] + +## Type of Change + + + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation update +- [ ] Code refactoring +- [ ] Performance improvement +- [ ] Test addition/update + +## Scope + +### In Scope + + + +### Out of Scope + + + +## Acceptance Criteria Verification (from linked issue) + + + +- [ ] AC1: ... +- [ ] AC2: ... +- [ ] AC3: ... + +## Related Issues + +Related to # +Depends on # + +## Testing + + + +- [ ] I have tested my changes locally +- [ ] I have added/updated unit tests +- [ ] I have added/updated integration tests +- [ ] All existing tests pass +- [ ] I have tested with Docker setup +- [ ] I have tested with local development setup + +**Commands run** + +```bash +[Exact commands run, one per line] +``` + +**Test results / evidence** + +``` +[Paste key output, pass/fail summary, and manual validation notes] +``` + +## Screenshots (if applicable) + + + +| Before | After | +| ------------ | ------------ | +| [Screenshot] | [Screenshot] | + +## Risk and Rollback + +**Risk level** + +- [ ] Low +- [ ] Medium +- [ ] High + +**Potential impact** + +- [What might break and where] + +**Rollback plan** + +- [How to safely revert/disable this change if needed] + +## Checklist + + + +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have updated the documentation accordingly +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published + +## Additional Context + + + +## Reviewer Focus + + + +- [Area/file to review closely] +- [Tradeoff decision to validate] +- [Question for reviewers]