Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

YouTube subsPatreon

Build workflowAll Contributors


The "behind the scenes" of the ClimateTown Knowledge Hub, your "one stop shop" for important climate resources in the fight against climate change!

How to suggest a resource

  • Create an issue selecting "suggest a resource".
  • Fill out the form adhering to the instructions.
  • Get the resource approved (or discuss it futher in the issue).
  • Once approved, resource is then onboarded onto the website. Resource onboarding happens every Friday!!

Contributing

TLDR; Create an issue, or edit the content directly and make a pull request.

All contributions welcome! Everything from:

  • suggestions
  • fixing typos
  • writing content
  • helping with website development
  • discussing content on the hub (check out the channels on Discord for this!)

The following sections go through how you can make different contributions. These will require you having a GitHub account.

For any discussion or questions about the Knowledge Hub, join us in #💬knowledge-hub-discussion in the ClimateTown Discord.

Small edits/typos

Resources data (title, URL, description, tags) are stored in the data/resources.yml file, which is then used to populate the resource on the website. To make small edits, you can directly edit this file or you can create an issue.

To suggest changes anywhere else in the site, you can use GitHub's search functionality to find the exact file which to suggest the change.

Resource suggestions

We're always looking to publicise awesome climate resources. Got a resource to share? The easiest way is to create an issue, filling out the "resource suggestion" form. This will create a discussion around the resource, and if it's a good fit for the Knowledge Hub, we'll add it to the site.

Site suggestions

This website is powered by coders from the community. Have a suggestion to make the site better? Create an issue and we'll discuss it! If the feature sounds good, we'll look at adding it to the site. The feature is much more likely to be added if you are willing to help with the development.

Development installation

The site is built using Svelte and SvelteKit. A dev environment can be easily set up using Node and npm:

  • install Node and npm
  • git clone https://github.com/ClimateTown/knowledge-hub.git
  • cd into the cloned directory
  • npm install
  • npm run dev

OPTIONAL: Python

Some of the tools in the codebase (eg. YouTube API, JSON schema validation) use Python. For most changes to the site Python is not required.

To set up Python:

  • install Python from here if you haven't already (minimum version 3.7)
  • create a virtual environment, then activate it (optional, but recommended)
    • python -m venv venv
    • activate the environment using either:
      • source venv/bin/activate (Linux/MacOS)
      • venv\Scripts\activate.bat (Windows)
  • pip install -r requirements.txt

This codebase uses pip-tools to manage dependencies. If you add a new dependency, you can add it to requirements.in and run pip-compile to update requirements.txt. To update your environment run pip-sync.

OPTIONAL: Loading YouTube Data

To set up the YouTube API (important for working on scripts with YouTube video scraping):

OPTIONAL: Pre-commit

This codebase uses pre-commit and pre-commit CI to run linting on code, format Python code, and generally have help with code quality.

You can either set up pre-commit locally (completely optional; it will run on every commit, aborting a commit if the pre-commit workflow fails), or you do nothing and leave it up to pre-commit CI to take care of it (where it will run on every push to GitHub, and fixes changes in PRs).

To set up pre-commit locally:

  • install the Python environment (which includes pre-commit)
  • pre-commit install to install the hooks

To run pre-commit manually (without making a commit), use pre-commit run --all-files. If you want to stop using pre-commit locally, just do pre-commit uninstall.

✨Contributors

Thanks go to these wonderful people (emoji key):

Vecko
Vecko

💻🖋🤔🚧📆
azebramoomoo
azebramoomoo

🖋🎨
Jacob John Jeevan
Jacob John Jeevan

💻
Chris King
Chris King

💻
JarrodBaniqued
JarrodBaniqued

🖋
Danielle Bastien
Danielle Bastien

️️️️♿️💻
Nick Tutterow
Nick Tutterow

💻🖋
GBT7
GBT7

🖋
Billy Taggart
Billy Taggart

🤔
Micahg05
Micahg05

💻
Forrest Cinelli
Forrest Cinelli

🖋
Jordan Manley
Jordan Manley

💻
cpufreak101
cpufreak101

🎨
Paweł Andrys
Paweł Andrys

💻
Matthew Caughman
Matthew Caughman

👀

This project follows the all-contributors specification. Contributions of any kind are welcome!

Acknowledgements

About

The Climate Town Knowledge Hub: A static site to host resources currated by the ClimateTown community

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages