From 66784a4d545eab57e9dedec8297ba2b947119a98 Mon Sep 17 00:00:00 2001
From: Maximilian Anzinger
 <44003963+MaximilianAnzinger@users.noreply.github.com>
Date: Tue, 3 Dec 2024 15:23:06 +0100
Subject: [PATCH] Development: Add templates for pull requests and issues (#11)

---
 .github/ISSUE_TEMPLATE/bug-report.yml         | 58 +++++++++++++++++
 .github/ISSUE_TEMPLATE/config.yml             |  5 ++
 .../feature-proposal-developer.md             | 65 +++++++++++++++++++
 .github/ISSUE_TEMPLATE/feature-request.yml    | 24 +++++++
 .github/PULL_REQUEST_TEPLATE.md               | 55 ++++++++++++++++
 5 files changed, 207 insertions(+)
 create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml
 create mode 100644 .github/ISSUE_TEMPLATE/config.yml
 create mode 100644 .github/ISSUE_TEMPLATE/feature-proposal-developer.md
 create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml
 create mode 100644 .github/PULL_REQUEST_TEPLATE.md

diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 0000000..1682079
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,58 @@
+name: "🐛 Bug Report"
+description: Something in Atlas is not working as expected? Create a report to help us improve.
+labels: [bug]
+body:
+  - type: markdown
+    attributes:
+      value: Thanks for taking the time to fill out this bug report.
+  - type: textarea
+    attributes:
+      label: Describe the bug
+      description: A clear and concise description of what the bug is.
+      placeholder: What happened? Also tell us, what did you expect to happen?
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: To Reproduce
+      description: "Steps to reproduce the behavior:"
+      value: |
+        1. Step one
+        2. Step two
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Expected behavior
+      description: A clear and concise description of what you expected to happen.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Screenshots
+      description: If applicable, add screenshots to help explain your problem.
+  - type: input
+    attributes:
+      label: Which version of Atlas are you seeing the problem on?
+      description: The version helps us .
+    validations:
+      required: true
+# Browser information is only necessary once Atlas provides a web interface.
+#  - type: dropdown
+#    attributes:
+#      label: What browsers are you seeing the problem on?
+#      multiple: true
+#      options:
+#        - Chrome
+#        - Safari
+#        - Microsoft Edge
+#        - Firefox
+#        - Other (specify in "Additional context")
+#    validations:
+#      required: true
+  - type: textarea
+    id: logs
+    attributes:
+      label: Relevant log output
+      description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+      render: shell
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..8e388bd
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+  - name: ❓ Support Question
+    url: https://github.com/ls1intum/Atlas/discussions/categories/q-a
+    about: Please do not file questions or support requests on the GitHub issues tracker. Please use the Q&A in the Discussions to ask your Question.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature-proposal-developer.md b/.github/ISSUE_TEMPLATE/feature-proposal-developer.md
new file mode 100644
index 0000000..b12d911
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-proposal-developer.md
@@ -0,0 +1,65 @@
+---
+name: 📝 Feature Proposal (Developer)
+about: Software Engineering Process for a new feature
+title: "[Feature Proposal]"
+labels: feature-proposal
+assignees: ''
+
+---
+
+<!-- Feature Proposal Marker -->
+
+# Feature Proposal
+> Spec Version 0.2.0
+
+## Context
+
+### Problem
+> Describe the problem that is tackled in this issue
+
+### Motivation
+> Describe the motivation WHY the problem needs solving. Specify the affected users/roles.
+
+## Requirements Engineering
+
+### Existing (Problematic) Solution / System
+> What is the current solution (if there is one)? What is the problem with the current solution?
+> You may include a UML Model here
+
+### Proposed System
+> What would the ideal solution look like?
+
+### Requirements
+> Describe the Functional and Non-Functional Requirements of the feature. Stick to the INVEST methodology!
+> 1. FR: <Title>: <Description>
+>
+> 1. NFR: <FURPS+ Category>: <Title>: <Description>
+
+## Analysis
+
+### Analysis Object Model
+> What are the involved Analysis Objects?
+
+### Dynamic Behavior
+> Include dynamic models (Activity Diagram, State Chart Diagram, Communication Diagram) here to outline the dynamic nature of the PROBLEM
+
+
+## System Architecture
+
+### Subsystem Decomposition
+> Show the involved subsystems and their interfaces. Make sure to describe the APIs that you add/change in detail. Model the DTOs you intend to (re)use or change!
+
+### Persistent Data Management
+> Describe the Database changes you intend to make.
+> Outline new configuration options you plan to introduce
+> Describe all other data persistence mechanisms you may use.
+
+### Access Control / Security Aspects
+> Describe the access control considerations for your feature
+
+### Other Design Decisions
+> Potential topics to discuss here include: WebSockets, testing strategies.
+
+## UI/UX Design
+> Screenshots of the final UI mockups (mandatory): Please include screenshots to provide a clear and persistent visual reference of the design.
+> Link to the design mockup (optional): Additionally, you may include a link to the live design mockup (e.g., Figma, Sketch) for a more interactive view. Note that this link is supplementary and should not replace the required screenshots.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 0000000..0ff3b21
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,24 @@
+name: "🚀 Feature Request"
+description: Suggest an idea for this project
+labels: [feature]
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thanks for suggesting new features or pointing our missing functionality.
+        Please describe your request in detail so we can understand your ideas. Feel free to upload additional material such as mockups, diagrams, or sketches
+  - type: textarea
+    attributes:
+      label: Is your feature request related to a problem?
+      description: Please describe. A clear and concise description of what the problem is.
+      placeholder: Ex. I'm always frustrated when ...
+  - type: textarea
+    attributes:
+      label: Describe the solution you'd like
+      description: Describe the solution you'd like
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Describe alternatives you've considered
+      description: A clear and concise description of any alternative solutions or features you've considered.
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEPLATE.md b/.github/PULL_REQUEST_TEPLATE.md
new file mode 100644
index 0000000..b0a22df
--- /dev/null
+++ b/.github/PULL_REQUEST_TEPLATE.md
@@ -0,0 +1,55 @@
+<!-- 
+> [!CAUTION]
+> This PR contains migrations! Don't deploy.
+> This PR introduces breaking changes! Don't deploy.
+-->
+
+### What?
+<!-- Describe the changes introduced by this PR on a high level that can be understood by end users. -->
+
+### Why?
+<!-- Describe the motivation behind this PR. -->
+
+### How?
+<!-- Describe the technical implementation of this PR. Be precise for other developers. -->
+
+### Affected Issues & Feature Proposal
+<!-- List the issues that are being resolved by this PR or the feature proposal that is being implemented. -->
+
+### Checklist
+
+<!-- Checklist for all PRs -->
+#### General
+- [ ] I chose a title conforming to the [naming conventions for pull requests](#).
+
+<!-- Checklist for PRs that affect our API-->
+#### AtlasML - API
+- [ ] I updated the API documentation.
+
+#### AtlasML - Machine Learning
+- [ ] I updated the machine learning documentation.
+
+### Testing
+
+#### Testing Instructions
+Requirements:
+- At least 3 Competencies with no Relations
+- ...
+
+Steps:
+1. ...
+2. ...
+
+#### Review Progress
+
+##### Code Review
+- [ ] Code Review 1
+- [ ] Code Review 2
+
+##### Manuel Test
+- [ ] Test 1
+- [ ] Test 2
+
+### Screenshots
+<!-- Add screenshots if applicable. -->
+