From c3e2dc65d8f287fa46f684b3cc6a91f49a5b4536 Mon Sep 17 00:00:00 2001 From: Jonah Aragon Date: Fri, 24 Jan 2025 17:37:12 -0600 Subject: [PATCH] feat!: Add videos section to website (#2861) --- .github/workflows/build-pr.yml | 17 +- .github/workflows/build-videos.yml | 104 ++++++++ ...publish-blog.yml => publish-immediate.yml} | 19 +- .github/workflows/publish-release.yml | 14 +- .markdownlint.yml | 1 + includes/strings.en.env | 2 +- mkdocs.blog.yml | 6 +- mkdocs.videos.yml | 216 ++++++++++++++++ mkdocs.yml | 6 +- theme/layouts/video.yml | 109 ++++++++ theme/partials/video.html | 41 ++++ theme/video-post.html | 232 ++++++++++++++++++ theme/video.html | 26 ++ videos/.authors.yml | 17 ++ videos/index.md | 13 + videos/posts/.meta.yml | 5 + videos/posts/do-you-need-a-vpn.md | 17 ++ .../its-time-to-stop-using-sms-heres-why.md | 17 ++ 18 files changed, 848 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/build-videos.yml rename .github/workflows/{publish-blog.yml => publish-immediate.yml} (84%) create mode 100644 mkdocs.videos.yml create mode 100644 theme/layouts/video.yml create mode 100644 theme/partials/video.html create mode 100644 theme/video-post.html create mode 100644 theme/video.html create mode 100644 videos/.authors.yml create mode 100644 videos/index.md create mode 100644 videos/posts/.meta.yml create mode 100644 videos/posts/do-you-need-a-vpn.md create mode 100644 videos/posts/its-time-to-stop-using-sms-heres-why.md diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index c57aeb4d..18165204 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -99,13 +99,24 @@ jobs: continue-on-error: true privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} + build_videos: + if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build videos') }} + needs: [submodule, metadata] + uses: ./.github/workflows/build-videos.yml + with: + ref: ${{github.event.pull_request.head.ref}} + repo: ${{github.event.pull_request.head.repo.full_name}} + continue-on-error: true + privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} + combine_build: - needs: [build_english, build_i18n, build_blog] + needs: [build_english, build_i18n, build_blog, build_videos] if: | (always() && !cancelled() && !failure()) && needs.build_english.result == 'success' && (needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') && - (needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped') + (needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped') && + (needs.build_videos.result == 'success' || needs.build_videos.result == 'skipped') runs-on: ubuntu-latest steps: @@ -127,5 +138,5 @@ jobs: cleanup: if: ${{ always() }} - needs: [build_english, build_i18n, build_blog] + needs: [build_english, build_i18n, build_blog, build_videos] uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.github/workflows/build-videos.yml b/.github/workflows/build-videos.yml new file mode 100644 index 00000000..e8764fec --- /dev/null +++ b/.github/workflows/build-videos.yml @@ -0,0 +1,104 @@ +name: 🛠️ Build Videos + +on: + workflow_call: + inputs: + ref: + required: true + type: string + repo: + required: true + type: string + context: + type: string + default: deploy-preview + continue-on-error: + type: boolean + default: true + privileged: + type: boolean + default: true + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + continue-on-error: ${{ inputs.continue-on-error }} + permissions: + contents: read + + steps: + - name: Add GitHub Token to Environment + run: | + echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV" + + - name: Download Repository + uses: actions/checkout@v4 + with: + repository: ${{ inputs.repo }} + ref: ${{ inputs.ref }} + persist-credentials: "false" + fetch-depth: 0 + + - name: Download Submodules + uses: actions/download-artifact@v4 + with: + pattern: repo-* + path: modules + + - name: Move mkdocs-material-insiders to mkdocs-material + if: inputs.privileged + run: | + rmdir modules/mkdocs-material + mv modules/repo-mkdocs-material-insiders modules/mkdocs-material + + - name: Move brand submodule to theme/assets/brand + run: | + rmdir theme/assets/brand + mv modules/repo-brand theme/assets/brand + + - name: Install Python (pipenv) + if: inputs.privileged + uses: actions/setup-python@v5 + with: + cache: "pipenv" + + - name: Install Python (no pipenv) + if: ${{ !inputs.privileged }} + uses: actions/setup-python@v5 + + - name: Install Python Dependencies + if: inputs.privileged + run: | + pip install pipenv + pipenv install + sudo apt install pngquant + + - name: Install Python Dependencies (Unprivileged) + if: ${{ !inputs.privileged }} + run: | + pip install mkdocs-material mkdocs-rss-plugin mkdocs-glightbox mkdocs-macros-plugin + sudo apt install pngquant + + - name: Build Website (Privileged) + if: inputs.privileged + run: | + pipenv run mkdocs build --config-file mkdocs.videos.yml + + - name: Build Website (Unprivileged) + if: ${{ !inputs.privileged }} + run: | + BUILD_INSIDERS=false mkdocs build --config-file mkdocs.videos.yml + + - name: Package Website + run: | + tar -czf site-build-videos.tar.gz site + + - name: Upload Site + uses: actions/upload-artifact@v4 + with: + name: site-build-videos.tar.gz + path: site-build-videos.tar.gz + retention-days: 1 diff --git a/.github/workflows/publish-blog.yml b/.github/workflows/publish-immediate.yml similarity index 84% rename from .github/workflows/publish-blog.yml rename to .github/workflows/publish-immediate.yml index 777387ae..a1f08cf3 100644 --- a/.github/workflows/publish-blog.yml +++ b/.github/workflows/publish-immediate.yml @@ -18,7 +18,7 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -name: 📦 Release Blog +name: 📦 Immediate Releases on: workflow_dispatch: @@ -27,6 +27,7 @@ on: - "main" paths: - "blog/**" + - "videos/**" concurrency: group: release-deployment @@ -42,7 +43,7 @@ jobs: submodule: strategy: matrix: - repo: [mkdocs-material-insiders, brand, i18n] + repo: [mkdocs-material-insiders, brand] uses: privacyguides/.github/.github/workflows/download-repo.yml@main with: repo: ${{ matrix.repo }} @@ -59,8 +60,18 @@ jobs: ref: ${{ github.ref }} continue-on-error: false + build_videos: + needs: submodule + permissions: + contents: read + uses: ./.github/workflows/build-videos.yml + with: + repo: ${{ github.repository }} + ref: ${{ github.ref }} + continue-on-error: false + deploy: - needs: [build_blog] + needs: [build_blog, build_videos] uses: privacyguides/webserver/.github/workflows/deploy-garage.yml@main with: environment: production @@ -70,5 +81,5 @@ jobs: cleanup: if: ${{ always() }} - needs: [build_blog] + needs: [build_blog, build_videos] uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index c04d40c0..1d56da6e 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -74,6 +74,16 @@ jobs: ref: ${{ github.ref }} continue-on-error: false + build_videos: + needs: submodule + permissions: + contents: read + uses: ./.github/workflows/build-videos.yml + with: + repo: ${{ github.repository }} + ref: ${{ github.ref }} + continue-on-error: false + release: name: Create release notes needs: build @@ -95,7 +105,7 @@ jobs: makeLatest: true deploy: - needs: [build, build_blog] + needs: [build, build_blog, build_videos] uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main secrets: NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }} @@ -112,5 +122,5 @@ jobs: cleanup: if: ${{ always() }} - needs: [build, build_blog] + needs: [build, build_blog, build_videos] uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.markdownlint.yml b/.markdownlint.yml index 08f062e0..bb12f803 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -28,3 +28,4 @@ no-hard-tabs: true emphasis-style: style: "asterisk" no-duplicate-header: false +no-trailing-punctuation: false diff --git a/includes/strings.en.env b/includes/strings.en.env index 758f9d2c..4e304b7e 100644 --- a/includes/strings.en.env +++ b/includes/strings.en.env @@ -26,7 +26,6 @@ NAV_ABOUT_TEAM_MEMBERS="Team Members" NAV_ADVANCED="Advanced" NAV_ADVANCED_TOPICS="Advanced Topics" NAV_BLOG="Articles" -NAV_CHANGELOG="Changelog" NAV_CODE_OF_CONDUCT="Code of Conduct" NAV_COMMUNITY="Community" NAV_CONTRIBUTING="Contributing" @@ -42,6 +41,7 @@ NAV_SOFTWARE="Software" NAV_HARDWARE="Hardware" NAV_TECHNICAL_GUIDES="Technical Guides" NAV_TECHNOLOGY_ESSENTIALS="Technology Essentials" +NAV_VIDEOS="Videos" NAV_WRITING_GUIDE="Writing Guide" SITE_DESCRIPTION="Privacy Guides is your central privacy and security resource to protect yourself online." SITE_LANGUAGE="English" diff --git a/mkdocs.blog.yml b/mkdocs.blog.yml index 7e3d8b5b..9bd1fd19 100644 --- a/mkdocs.blog.yml +++ b/mkdocs.blog.yml @@ -59,6 +59,9 @@ extra: - icon: simple/bluesky link: https://bsky.app/profile/privacyguides.org name: !ENV [SOCIAL_BLUESKY, "Bluesky"] + - icon: simple/peertube + link: https://neat.tube/c/privacyguides + name: !ENV [SOCIAL_PEERTUBE, "PeerTube"] - icon: simple/matrix link: https://matrix.to/#/#privacyguides:matrix.org name: !ENV [SOCIAL_MATRIX, "Matrix"] @@ -212,10 +215,9 @@ nav: - index.md - editorial.md - tags.md + - !ENV [NAV_VIDEOS, "Videos"]: /videos/ - !ENV [NAV_ABOUT, "About"]: /en/about/ - "Donate": /en/about/donate/ - - !ENV [NAV_CHANGELOG, "Changelog"]: - "https://github.com/privacyguides/privacyguides.org/releases" - !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/" validation: diff --git a/mkdocs.videos.yml b/mkdocs.videos.yml new file mode 100644 index 00000000..4b4b4fc7 --- /dev/null +++ b/mkdocs.videos.yml @@ -0,0 +1,216 @@ +# Copyright (c) 2022-2024 Jonah Aragon + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +docs_dir: "videos" +site_url: "https://www.privacyguides.org/videos/" +site_dir: "site/videos" + +site_name: Privacy Guides +site_description: "Privacy Guides is the most popular & trustworthy non-profit privacy resource to find privacy tools and learn about protecting your digital life." +edit_uri_template: blob/main/videos/{path}?plain=1 + +extra: + privacy_guides: + footer: + intro: + !ENV [ + FOOTER_INTRO, + "Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy.", + ] + note: + !ENV [ + FOOTER_NOTE, + "We do not make money from recommending certain products, and we do not use affiliate links.", + ] + copyright: + author: + !ENV [FOOTER_COPYRIGHT_AUTHOR, "Privacy Guides and contributors."] + date: !ENV [FOOTER_COPYRIGHT_DATE, "2019-2024"] + license: + - fontawesome/brands/creative-commons + - fontawesome/brands/creative-commons-by + - fontawesome/brands/creative-commons-sa + homepage: https://www.privacyguides.org/en/ + generator: false + context: !ENV [BUILD_CONTEXT, "production"] + offline: !ENV [BUILD_OFFLINE, false] + deploy: !ENV DEPLOY_ID + social: + - icon: simple/mastodon + link: https://mastodon.neat.computer/@privacyguides + name: !ENV [SOCIAL_MASTODON, "Mastodon"] + - icon: simple/bluesky + link: https://bsky.app/profile/privacyguides.org + name: !ENV [SOCIAL_BLUESKY, "Bluesky"] + - icon: simple/peertube + link: https://neat.tube/c/privacyguides + name: !ENV [SOCIAL_PEERTUBE, "PeerTube"] + - icon: simple/matrix + link: https://matrix.to/#/#privacyguides:matrix.org + name: !ENV [SOCIAL_MATRIX, "Matrix"] + - icon: simple/discourse + link: https://discuss.privacyguides.net/ + name: !ENV [SOCIAL_FORUM, "Forum"] + - icon: simple/github + link: https://github.com/privacyguides + name: !ENV [SOCIAL_GITHUB, "GitHub"] + - icon: simple/torbrowser + link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/posts/ + name: !ENV [SOCIAL_TOR_SITE, "Hidden service"] + +repo_url: + !ENV [BUILD_REPO_URL, "https://github.com/privacyguides/privacyguides.org"] +repo_name: "" + +theme: + name: material + language: en + custom_dir: theme + font: + text: Public Sans + code: DM Mono + palette: + - media: "(prefers-color-scheme)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-auto + name: !ENV [THEME_DARK, "Switch to dark mode"] + - media: "(prefers-color-scheme: dark)" + scheme: slate + accent: amber + toggle: + icon: material/brightness-2 + name: !ENV [THEME_LIGHT, "Switch to light mode"] + - media: "(prefers-color-scheme: light)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-5 + name: !ENV [THEME_AUTO, "Switch to system theme"] + favicon: assets/brand/logos/png/favicon-32x32.png + icon: + repo: simple/github + features: + - announce.dismiss + - navigation.tracking + - navigation.tabs + - navigation.path + - navigation.indexes + - navigation.footer + - content.action.edit + - content.tabs.link + - content.tooltips + - search.highlight + +extra_css: + - assets/stylesheets/extra.css?v=20240829 + +watch: + - theme + - includes + +plugins: + blog: + blog_dir: . + blog_toc: true + post_url_format: "{date}/{file}" + post_excerpt_max_authors: 0 + authors_profiles: false + categories: false + rss: + match_path: posts/.* + abstract_chars_count: -1 + date_from_meta: + as_creation: date.created + as_update: date.updated + categories: + - categories + - tags + glightbox: {} + tags: {} + search: {} + privacy: + enabled: !ENV [BUILD_PRIVACY, true] + offline: + enabled: !ENV [BUILD_OFFLINE, false] + group: + enabled: !ENV [BUILD_INSIDERS, true] + plugins: + macros: {} + meta: {} + optimize: + enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false] + typeset: {} + social: + cards: !ENV [CARDS, true] + cards_dir: assets/img/social + cards_layout_dir: theme/layouts + cards_layout: page + +markdown_extensions: + admonition: {} + pymdownx.details: {} + pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + pymdownx.tabbed: + alternate_style: true + pymdownx.arithmatex: + generic: true + pymdownx.critic: {} + pymdownx.caret: {} + pymdownx.keys: {} + pymdownx.mark: {} + pymdownx.tilde: {} + pymdownx.snippets: + auto_append: + - !ENV [BUILD_ABBREVIATIONS, "includes/abbreviations.en.txt"] + pymdownx.tasklist: + custom_checkbox: true + attr_list: {} + def_list: {} + md_in_html: {} + meta: {} + abbr: {} + pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + tables: {} + footnotes: {} + toc: + toc_depth: 4 + +nav: + - !ENV [NAV_HOME, "Home"]: /en/ + - !ENV [NAV_KNOWLEDGE_BASE, "Knowledge Base"]: /en/basics/why-privacy-matters/ + - !ENV [NAV_RECOMMENDATIONS, "Recommendations"]: /en/tools/ + - !ENV [NAV_BLOG, "Articles"]: /articles/ + - !ENV [NAV_VIDEOS, "Videos"]: + - index.md + - !ENV [NAV_ABOUT, "About"]: /en/about/ + - "Donate": /en/about/donate/ + - !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/" + +validation: + nav: + not_found: info diff --git a/mkdocs.yml b/mkdocs.yml index 4479479e..101eb5ca 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -170,6 +170,9 @@ extra: - icon: simple/bluesky link: https://bsky.app/profile/privacyguides.org name: !ENV [SOCIAL_BLUESKY, "Bluesky"] + - icon: simple/peertube + link: https://neat.tube/c/privacyguides + name: !ENV [SOCIAL_PEERTUBE, "PeerTube"] - icon: simple/matrix link: https://matrix.to/#/#privacyguides:matrix.org name: !ENV [SOCIAL_MATRIX, "Matrix"] @@ -441,6 +444,7 @@ nav: - "alternative-networks.md" - "device-integrity.md" - !ENV [NAV_BLOG, "Articles"]: "/articles/" + - !ENV [NAV_VIDEOS, "Videos"]: /videos/ - !ENV [NAV_ABOUT, "About"]: - "about.md" - "about/donate.md" @@ -467,8 +471,6 @@ nav: - "meta/git-recommendations.md" - "meta/commit-messages.md" - !ENV [NAV_DONATE, "Donate"]: https://donate.magicgrants.org/privacyguides - - !ENV [NAV_CHANGELOG, "Changelog"]: - "https://github.com/privacyguides/privacyguides.org/releases" - !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/" validation: diff --git a/theme/layouts/video.yml b/theme/layouts/video.yml new file mode 100644 index 00000000..e3256aa9 --- /dev/null +++ b/theme/layouts/video.yml @@ -0,0 +1,109 @@ +definitions: + - &site_name >- + {{ config.site_name }} + + - &page_title >- + {{ page.meta.get("title", page.title) }} + + - &page_description >- + {{ page.meta.get("description", config.site_description) or "" }} + + - &page_logo >- + {% if page.meta.preview and page.meta.preview.logo %} + {{- page.meta.preview.logo -}} + {% endif %} + + - &page_icon >- + {%- if not page.meta.preview or not page.meta.preview.logo -%} + material/video-box + {%- endif -%} + + - &logo >- + theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg + +# Meta tags +tags: + # Open Graph + og:type: video.other + og:title: *page_title + og:description: *page_description + og:image: "{{ image.url }}" + og:image:type: "{{ image.type }}" + og:image:width: "{{ image.width }}" + og:image:height: "{{ image.height }}" + og:url: "{{ page.canonical_url }}" + + # Video + og:video: "{{ page.meta.embed }}" + og:video:url: "{{ page.meta.embed }}" + og:video:secure_url: "{{ page.meta.embed }}" + og:video:type: "text/html" + og:video:width: "560" + og:video:height: "315" + + # Mastodon + fediverse:creator: "@privacyguides@neat.computer" + + # Twitter + twitter:site: "@privacy_guides" + twitter:creator: "@privacy_guides" + twitter:card: summary_large_image + twitter:title: *page_title + twitter:description: *page_description + twitter:image: "{{ image.url }}" + +# ----------------------------------------------------------------------------- +# Specification +# ----------------------------------------------------------------------------- + +# Card size and layers +size: { width: 1200, height: 630 } +layers: + # Background + - background: + color: "#FFD06F" + + - size: { width: 512, height: 512 } + offset: { x: 600, y: 59 } + background: + image: *page_logo + + - background: + color: "#FFD06F99" + + # Page icon + - size: { width: 630, height: 630 } + offset: { x: 570, y: 0 } + icon: + value: *page_icon + color: "#00000033" + + # Logo + - size: { width: 64, height: 64 } + offset: { x: 64, y: 64 } + background: + image: *logo + + # Site name + - size: { width: 768, height: 42 } + offset: { x: 160, y: 78 } + typography: + content: *site_name + color: "#2d2d2d" + font: + family: Bagnard + style: Bold + + # Page title + - size: { width: 864, height: 256 } + offset: { x: 62, y: 192 } + typography: + content: *page_title + align: start + color: "#2d2d2d" + line: + amount: 3 + height: 1.5 + font: + family: Bagnard + style: Bold diff --git a/theme/partials/video.html b/theme/partials/video.html new file mode 100644 index 00000000..c24880ee --- /dev/null +++ b/theme/partials/video.html @@ -0,0 +1,41 @@ + +
+
+ + + +
+ + +
+ +
+ + + +
+
+
diff --git a/theme/video-post.html b/theme/video-post.html new file mode 100644 index 00000000..e74d6b0a --- /dev/null +++ b/theme/video-post.html @@ -0,0 +1,232 @@ + + +{% extends "main.html" %} + +{% import "partials/nav-item.html" as item with context %} + +{% block extrahead %} + + +{% endblock %} + + +{% block container %} +
+ + +
+
+
+ + + + {% if "toc.integrate" in features %} + {% include "partials/toc.html" %} + {% endif %} +
+
+
+ + +
+ {% block content %} + + {% include "partials/tags.html" %} + + + {% include "partials/actions.html" %} + + {% if "\x3ch1" not in page.content and not page.meta.cover %} +

{{ page.title | d(config.site_name, true)}}

+ {% endif %} + +
+
+ +
+
+ +

+ + + + + Watch on YouTube + + + + + Watch on PeerTube +

+ + +
+ {{ page.content }} +
+ + + {% include "partials/source-file.html" %} + + + {% include "partials/feedback.html" %} + {% endblock %} +
+
+{% endblock %} diff --git a/theme/video.html b/theme/video.html new file mode 100644 index 00000000..12003212 --- /dev/null +++ b/theme/video.html @@ -0,0 +1,26 @@ +{% extends "main.html" %} + + +{% block container %} +
+
+ + +
+ {{ page.content }} +
+ + + {% for post in posts %} + {% include "partials/video.html" %} + {% endfor %} + + + {% if pagination %} + {% block pagination %} + {% include "partials/pagination.html" %} + {% endblock %} + {% endif %} +
+
+{% endblock %} diff --git a/videos/.authors.yml b/videos/.authors.yml new file mode 100644 index 00000000..edde9036 --- /dev/null +++ b/videos/.authors.yml @@ -0,0 +1,17 @@ +authors: + jordan: + name: Jordan Warne + description: Video Producer + avatar: https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/jordan/288/7793_2.png + mastodon: + username: jw + instance: social.lol + jonah: + name: Jonah Aragon + description: Project Director + avatar: https://github.com/jonaharagon.png + mastodon: + username: jonah + instance: neat.computer + twitter: jonaharagon + bluesky: jonaharagon.com diff --git a/videos/index.md b/videos/index.md new file mode 100644 index 00000000..a33fdf32 --- /dev/null +++ b/videos/index.md @@ -0,0 +1,13 @@ +--- +description: Privacy-related news stories, product reviews, opinion pieces, and other important articles from Privacy Guides contributors. +template: video.html +hide: + - footer +--- + +# Latest Videos + +This is our home for the latest video content from the Privacy Guides team. Be sure you are subscribed to find out about our latest uploads, and share these videos with your family and friends if you find them helpful! + +[:simple-youtube: Subscribe on YouTube](https://www.youtube.com/@privacyguides){ .md-button .md-button--primary } +[:simple-peertube: Subscribe on PeerTube](https://neat.tube/c/privacyguides){ .md-button .md-button--primary } diff --git a/videos/posts/.meta.yml b/videos/posts/.meta.yml new file mode 100644 index 00000000..f394e5a2 --- /dev/null +++ b/videos/posts/.meta.yml @@ -0,0 +1,5 @@ +template: video-post.html +hide: + - toc +social: + cards_layout: video diff --git a/videos/posts/do-you-need-a-vpn.md b/videos/posts/do-you-need-a-vpn.md new file mode 100644 index 00000000..0b502d2a --- /dev/null +++ b/videos/posts/do-you-need-a-vpn.md @@ -0,0 +1,17 @@ +--- +title: Do you need a VPN? +date: + created: 2024-12-12T20:00:00 +authors: + - jordan +description: Commercial Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world. This can have substantial privacy benefits, but not all VPNs are created equal. +readtime: 6 +thumbnail: https://neat.tube/lazy-static/previews/3f9c497c-d0f1-4fe8-8ac5-539f0f5e40ed.jpg +embed: https://neat.tube/videos/embed/2e4e81e8-f59e-4eab-be4d-8464a4a83328 +peertube: https://neat.tube/w/6HDQH1wnTACKFHh2u1CRQ5 +youtube: https://www.youtube.com/watch?v=XByp-F8FXtg +--- + +Commercial Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world. This can have substantial privacy benefits, but not all VPNs are created equal. More information about VPNs can be found on our website: + +Sources: diff --git a/videos/posts/its-time-to-stop-using-sms-heres-why.md b/videos/posts/its-time-to-stop-using-sms-heres-why.md new file mode 100644 index 00000000..4bfcb93c --- /dev/null +++ b/videos/posts/its-time-to-stop-using-sms-heres-why.md @@ -0,0 +1,17 @@ +--- +title: It's time to stop using SMS, here's why! +date: + created: 2025-01-24T20:00:00 +authors: + - jordan +description: Text messaging has been a staple of communication for decades, but it's time to move on. In this video, we'll explore why SMS is an outdated and insecure technology and discuss better alternatives. +readtime: 7 +thumbnail: https://neat.tube/lazy-static/previews/f3b63055-e1b3-4691-8687-4a838738141b.jpg +embed: https://neat.tube/videos/embed/7887f661-541c-4bff-9f69-2b7dd81622ca +peertube: https://neat.tube/w/fTfKp1tatNnGTtfP3SwbXu +youtube: https://www.youtube.com/watch?v=B9BWXvn-rB4s +--- + +Text messaging has been a staple of communication for decades, but it's time to move on. In this video, we'll explore why SMS is an outdated and insecure technology and discuss better alternatives. + +Sources: