diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..d0239c0
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,21 @@
+# Contributing
+
+There are only a few rules:
+- Follow the commit convention as follows:
+ - The name of the commit should be `module: change`
+ - Try to be consistent with the module names; you can look at existing commits for the module names I use
+ - If there is more than one change, the change in the commit name should be the most impactful change
+ - Put other changes in the description
+- Format your code
+ - I use the vscode qml extension with default arguments to format the code, however you do not have to use it
+ - Just try to follow the code style of the rest of the code and ensure that there is:
+ - no trailing whitespace on any lines
+ - a single space between operators
+- No AI slop allowed
+ - AI readme/docs slop = instant block
+- PLEASE TEST YOUR PRS
+ - I can't believe I have to put this here, but please test your PRs before submitting them
+ - Your PR must not break anything currently existing, or specify in the description if it does
+- PR descriptions should be descriptive
+ - Please explain what the PR does and how to use it in your PR description
+ - Also include any breaking changes and/or side effects of the PR
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..30f44f7
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,15 @@
+# These are supported funding model platforms
+
+github: soramanew
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: soramane
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
+polar: # Replace with a single Polar username
+buy_me_a_coffee: soramane
+thanks_dev: # Replace with a single thanks.dev username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..3ba13e0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
new file mode 100644
index 0000000..c5caffa
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -0,0 +1,24 @@
+name: Feature request
+description: Suggest a new feature
+labels: ["enhancement"]
+type: "Feature"
+title: "[FEATURE] "
+body:
+ - type: markdown
+ attributes:
+ value: "NOTE: Please write in **English**."
+
+ - type: textarea
+ attributes:
+ label: "What would you like to be added?"
+ description: "Can be a suggestion for an existing feature. You can suggest a widget, minor user interaction changes.. whatever."
+
+ - type: textarea
+ attributes:
+ label: "How will it help?"
+ description: "It's helpful to include examples (like in your use case)."
+
+ - type: textarea
+ attributes:
+ label: "Extra info"
+ description: "If you want a new widget, a pic of the inspiration (if available) would be awesome."
diff --git a/.github/ISSUE_TEMPLATE/issue.yml b/.github/ISSUE_TEMPLATE/issue.yml
new file mode 100644
index 0000000..e7867e1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/issue.yml
@@ -0,0 +1,56 @@
+name: Issue
+description: Report an issue with the dots
+labels: ["bug"]
+type: "Bug"
+title: "[BUG] "
+body:
+ - type: markdown
+ attributes:
+ value: "**Welcome to submit a new issue!**\n- It takes only 3 steps, so please be patient :)\n- Tip: If your issue is not a feature request and is not an issue with the dots (e.g. \"how do I use X feature\"), please use [Discussions](https://github.com/caelestia-dots/shell/discussions) instead."
+ - type: checkboxes
+ attributes:
+ label: "Step 1. Before you submit"
+ description: "Hint: The 2nd and 3rd checkbox is **not** forcely required as you may have failed to do so."
+ options:
+ - label: I have read the above instructions and am sure that this is supposed to be posted here.
+ required: true
+ - label: I've successfully updated to the latest versions following the [updating guide](https://github.com/caelestia-dots/caelestia?tab=readme-ov-file#updating).
+ required: false # Not required cuz user may have failed to do so
+ - label: I've successfully updated the system packages to the latest.
+ required: false # Not required cuz user may have failed to do so
+ - label: I've ticked the checkboxes without reading their contents
+ required: false # Obviously
+
+ - type: textarea
+ attributes:
+ label: "Step 2. Version info"
+ description: "Run `caelestia -v` and paste the result below."
+ value: "Version info
\n\n```\n\n```\n\n "
+ validations:
+ required: true
+
+ - type: markdown
+ attributes:
+ value: |
+ **Tips for the following Step 3**
+ 1. Use `LANG=C LC_ALL=C` to get the output of a command in English, eg. `LANG=C LC_ALL=C date` displays time in English.
+ 2. If it throws errors, **PLEASE**, attach logs and describe in detail if possible.
+ - Something happened to the shell (bar, dashboard, etc)? Run `caelestia shell -l` WITHOUT exiting the shell for logs.
+ - Installation failed? Run installation again for logs.
+ - You may use more code blocks when needed.
+ 3. In case you are confused, the ``, ``, `
`, ` ` are HTML tags for folding the logs (typically very long) inside. Please do not touch them (unless you know what you are doing).
+ 4. If the logs are suuuuuuper long, consider using an online pastebin service instead.
+
+ - type: textarea
+ attributes:
+ label: "Step 3. Describe the issue"
+ value: "\n\n\nLogs
\n\n```\n\n```\n\n "
+ validations:
+ required: true
+
+ - type: checkboxes
+ attributes:
+ label: Reminder
+ options:
+ - label: I agree that it's usually impossible for others to help me without my logs.
+ required: true