forked from cccb-website-team/www
Merge branch 'staging' into production
This commit is contained in:
commit
9a92b873da
87 changed files with 1326 additions and 95 deletions
1
.forgejo/CODEOWNERS
Normal file
1
.forgejo/CODEOWNERS
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
* @cccb/web
|
||||||
28
.forgejo/dependabot.yml
Normal file
28
.forgejo/dependabot.yml
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
target-branch: "staging"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
commit-message:
|
||||||
|
prefix: "gh-action"
|
||||||
|
labels:
|
||||||
|
- "gh-action"
|
||||||
|
- "dependencies"
|
||||||
|
reviewers:
|
||||||
|
- "cccb/web"
|
||||||
|
- package-ecosystem: "pip"
|
||||||
|
directory: "/"
|
||||||
|
target-branch: "dev"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
commit-message:
|
||||||
|
prefix: "python"
|
||||||
|
labels:
|
||||||
|
- "python"
|
||||||
|
- "dependencies"
|
||||||
|
reviewers:
|
||||||
|
- "cccb/web"
|
||||||
73
.forgejo/workflows/release.yml
Normal file
73
.forgejo/workflows/release.yml
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
name: Release website
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 4 * * *"
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- staging
|
||||||
|
- production
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v3
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
|
||||||
|
- name: Build pages
|
||||||
|
run: hugo $(cat .hugo-params)
|
||||||
|
|
||||||
|
- name: Add de_DE.UTF-8 locale
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get -y install locales
|
||||||
|
sudo locale-gen de_DE.UTF-8
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
cache: 'pip'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install --upgrade pip setuptools wheel
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Generate calendars
|
||||||
|
run: python tools/merge_cals.py
|
||||||
|
|
||||||
|
- name: Copy calendar to output dir
|
||||||
|
run: cp static/all.ics public/all.ics
|
||||||
|
|
||||||
|
- name: Update homepage with latest event
|
||||||
|
run: upcoming="$(python tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')" && sed -i "s#CALENDAR#$upcoming#g" public/index.html
|
||||||
|
|
||||||
|
- name: Generate timestamp
|
||||||
|
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H%M%SZ')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Create Release Archive
|
||||||
|
uses: thedoctor0/zip-release@0.7.6
|
||||||
|
with:
|
||||||
|
type: zip
|
||||||
|
filename: ../release-${{ github.ref_name }}-${{ env.timestamp }}.zip
|
||||||
|
directory: public
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: ncipollo/release-action@v1.16.0
|
||||||
|
with:
|
||||||
|
tag: ${{ github.ref_name }}-${{ env.timestamp }}
|
||||||
|
name: Website ${{ github.ref_name }} version ${{ env.timestamp }}
|
||||||
|
body: Website ${{ github.ref_name }} version ${{ env.timestamp }}
|
||||||
|
artifacts: release-${{ github.ref_name }}-${{ env.timestamp }}.zip
|
||||||
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
9
.github/workflows/release.yml
vendored
9
.github/workflows/release.yml
vendored
|
|
@ -74,7 +74,7 @@ jobs:
|
||||||
needs: [ calendar ]
|
needs: [ calendar ]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: staging
|
environment: staging
|
||||||
if: github.ref == 'refs/heads/staging' && github.event_name == 'push'
|
if: (github.ref == 'refs/heads/staging' && github.event_name == 'push') || github.event_name == 'schedule'
|
||||||
steps:
|
steps:
|
||||||
- name: Download pages
|
- name: Download pages
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
|
|
@ -90,7 +90,7 @@ jobs:
|
||||||
filename: ../release-staging-${{ env.timestamp }}.zip
|
filename: ../release-staging-${{ env.timestamp }}.zip
|
||||||
directory: public
|
directory: public
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: ncipollo/release-action@v1.14.0
|
uses: ncipollo/release-action@v1.16.0
|
||||||
with:
|
with:
|
||||||
tag: staging-${{ env.timestamp }}
|
tag: staging-${{ env.timestamp }}
|
||||||
name: Website staging version ${{ env.timestamp }}
|
name: Website staging version ${{ env.timestamp }}
|
||||||
|
|
@ -102,7 +102,7 @@ jobs:
|
||||||
needs: [ calendar ]
|
needs: [ calendar ]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: production
|
environment: production
|
||||||
if: github.ref == 'refs/heads/production' && github.event_name == 'push'
|
if: (github.ref == 'refs/heads/production' && github.event_name == 'push') || github.event_name == 'schedule'
|
||||||
steps:
|
steps:
|
||||||
- name: Download pages
|
- name: Download pages
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
|
|
@ -118,7 +118,7 @@ jobs:
|
||||||
filename: ../release-production-${{ env.timestamp }}.zip
|
filename: ../release-production-${{ env.timestamp }}.zip
|
||||||
directory: public
|
directory: public
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: ncipollo/release-action@v1.14.0
|
uses: ncipollo/release-action@v1.16.0
|
||||||
with:
|
with:
|
||||||
makeLatest: true
|
makeLatest: true
|
||||||
tag: production-${{ env.timestamp }}
|
tag: production-${{ env.timestamp }}
|
||||||
|
|
@ -126,3 +126,4 @@ jobs:
|
||||||
body: Website production version ${{ env.timestamp }}
|
body: Website production version ${{ env.timestamp }}
|
||||||
artifacts: release-production-${{ env.timestamp }}.zip
|
artifacts: release-production-${{ env.timestamp }}.zip
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -40,7 +40,8 @@ hugo.linux
|
||||||
.LSOverride
|
.LSOverride
|
||||||
|
|
||||||
# Icon must end with two \r
|
# Icon must end with two \r
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
|
|
||||||
# Thumbnails
|
# Thumbnails
|
||||||
._*
|
._*
|
||||||
|
|
@ -92,3 +93,11 @@ $RECYCLE.BIN/
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo
|
# End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
.envrc
|
||||||
|
shell.nix
|
||||||
|
.direnv
|
||||||
|
|
||||||
|
# Python
|
||||||
|
.venv
|
||||||
4
.gitmodules
vendored
4
.gitmodules
vendored
|
|
@ -1,3 +1,7 @@
|
||||||
[submodule "beautifulhugo"]
|
[submodule "beautifulhugo"]
|
||||||
path = themes/beautifulhugo
|
path = themes/beautifulhugo
|
||||||
url = https://github.com/cccb/beautifulhugo.git
|
url = https://github.com/cccb/beautifulhugo.git
|
||||||
|
[submodule "themes/blowfish"]
|
||||||
|
path = themes/blowfish
|
||||||
|
url = https://github.com/nunocoracao/blowfish.git
|
||||||
|
branch = main
|
||||||
|
|
|
||||||
BIN
assets/img/avatar-CCCB-Logo.jpg
Normal file
BIN
assets/img/avatar-CCCB-Logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
BIN
assets/img/avatar-CCCB-Logo.png
Normal file
BIN
assets/img/avatar-CCCB-Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
BIN
assets/img/cccb-im-winter.jpg
Normal file
BIN
assets/img/cccb-im-winter.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 MiB |
BIN
assets/img/logo.png
Normal file
BIN
assets/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
3
build.sh
3
build.sh
|
|
@ -4,5 +4,4 @@ hugo $(cat .hugo-params)
|
||||||
./tools/merge_cals.py
|
./tools/merge_cals.py
|
||||||
upcoming="$(tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')"
|
upcoming="$(tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')"
|
||||||
cp static/all.ics public/all.ics
|
cp static/all.ics public/all.ics
|
||||||
sed -i "s#CALENDAR#$upcoming#g" public/index.html
|
sed -i "s#CALENDAR#$upcoming#g" public/index.html
|
||||||
|
|
||||||
100
config/_default/hugo.toml
Normal file
100
config/_default/hugo.toml
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
# -- Site Configuration --
|
||||||
|
# Refer to the theme docs for more details about each of these parameters.
|
||||||
|
# https://blowfish.page/docs/getting-started/
|
||||||
|
|
||||||
|
theme = "blowfish" # UNCOMMENT THIS LINE
|
||||||
|
baseURL = "https://berlin.ccc.de/"
|
||||||
|
defaultContentLanguage = "de"
|
||||||
|
RelativeURLs = true
|
||||||
|
CanonifyURLs = true
|
||||||
|
|
||||||
|
pluralizeListTitles = "true" # hugo function useful for non-english languages, find out more in https://gohugo.io/getting-started/configuration/#pluralizelisttitles
|
||||||
|
|
||||||
|
enableRobotsTXT = true
|
||||||
|
summaryLength = 0
|
||||||
|
|
||||||
|
buildDrafts = false
|
||||||
|
buildFuture = false
|
||||||
|
|
||||||
|
enableEmoji = true
|
||||||
|
|
||||||
|
# googleAnalytics = "G-XXXXXXXXX"
|
||||||
|
|
||||||
|
[pagination]
|
||||||
|
pagerSize = 100
|
||||||
|
|
||||||
|
[imaging]
|
||||||
|
anchor = 'Center'
|
||||||
|
|
||||||
|
[taxonomies]
|
||||||
|
tag = "tags"
|
||||||
|
category = "categories"
|
||||||
|
author = "authors"
|
||||||
|
series = "series"
|
||||||
|
|
||||||
|
[sitemap]
|
||||||
|
changefreq = 'daily'
|
||||||
|
filename = 'sitemap.xml'
|
||||||
|
priority = 0.5
|
||||||
|
|
||||||
|
[permalinks]
|
||||||
|
post = "/post/:year/:month/:day/:title/"
|
||||||
|
|
||||||
|
[outputs]
|
||||||
|
home = ["HTML", "RSS", "JSON"]
|
||||||
|
section = ["HTML", "Calendar", "RSS", "XML"]
|
||||||
|
page = ["HTML", "Calendar"]
|
||||||
|
|
||||||
|
# Output Formats Configuration
|
||||||
|
[outputFormats.Calendar]
|
||||||
|
mediaType = "text/calendar"
|
||||||
|
baseName = "index"
|
||||||
|
isPlainText = true
|
||||||
|
notAlternative = true
|
||||||
|
|
||||||
|
[outputFormats.XML]
|
||||||
|
mediaType = "application/xml"
|
||||||
|
baseName = "index"
|
||||||
|
isPlainText = true
|
||||||
|
|
||||||
|
[outputFormats.RSS]
|
||||||
|
mediaType = "application/rss+xml"
|
||||||
|
|
||||||
|
# Media Types Configuration
|
||||||
|
[mediaTypes]
|
||||||
|
[mediaTypes."text/calendar"]
|
||||||
|
suffixes = ["ics"]
|
||||||
|
[mediaTypes."application/rss"]
|
||||||
|
suffixes = ["rss"]
|
||||||
|
[mediaTypes."application/xml"]
|
||||||
|
suffixes = ["xml"]
|
||||||
|
|
||||||
|
[related]
|
||||||
|
threshold = 0
|
||||||
|
toLower = false
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
name = "tags"
|
||||||
|
weight = 100
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
name = "categories"
|
||||||
|
weight = 100
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
name = "series"
|
||||||
|
weight = 50
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
name = "authors"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
name = "date"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[related.indices]]
|
||||||
|
applyFilter = false
|
||||||
|
name = 'fragmentrefs'
|
||||||
|
type = 'fragments'
|
||||||
|
weight = 10
|
||||||
77
config/_default/languages.de.toml
Normal file
77
config/_default/languages.de.toml
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
disabled = false
|
||||||
|
languageCode = "de"
|
||||||
|
languageName = "Deutsch"
|
||||||
|
weight = 1
|
||||||
|
title = "Chaos Computer Club Berlin"
|
||||||
|
|
||||||
|
[params]
|
||||||
|
displayName = "DE"
|
||||||
|
isoCode = "de"
|
||||||
|
rtl = false
|
||||||
|
dateFormat = "January 2, 2006"
|
||||||
|
DateForm = "30.12.2006"
|
||||||
|
logo = "img/logo.png"
|
||||||
|
# secondaryLogo = "img/avatar-CCCB-Logo.png"
|
||||||
|
description = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
|
||||||
|
copyright = "CCC-BY"
|
||||||
|
selfHosted = true
|
||||||
|
mainSections = ["post", "datengarten"]
|
||||||
|
|
||||||
|
[params.author]
|
||||||
|
# name = "Your name here"
|
||||||
|
email = "mail2025@berlin.ccc.de"
|
||||||
|
image = "img/logo.png"
|
||||||
|
# imageQuality = 96
|
||||||
|
headline = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
|
||||||
|
# bio = "A little bit about you"
|
||||||
|
links = [
|
||||||
|
{ email = "mailto:mail2025@berlin.ccc.de" },
|
||||||
|
# { link = "https://link-to-some-website.com/" },
|
||||||
|
# { amazon = "https://www.amazon.com/hz/wishlist/ls/wishlist-id" },
|
||||||
|
# { apple = "https://www.apple.com" },
|
||||||
|
# { blogger = "https://username.blogspot.com/" },
|
||||||
|
# { bluesky = "https://bsky.app/profile/username" },
|
||||||
|
# { codepen = "https://codepen.io/username" },
|
||||||
|
# { dev = "https://dev.to/username" },
|
||||||
|
# { discord = "https://discord.gg/invitecode" },
|
||||||
|
# { dribbble = "https://dribbble.com/username" },
|
||||||
|
# { facebook = "https://facebook.com/username" },
|
||||||
|
# { flickr = "https://www.flickr.com/photos/username/" },
|
||||||
|
# { foursquare = "https://foursquare.com/username" },
|
||||||
|
{ github = "https://github.com/cccb/" },
|
||||||
|
{ gitlab = "https://git.berlin.ccc.de/explore/repos" },
|
||||||
|
# { google = "https://www.google.com/" },
|
||||||
|
# { hashnode = "https://username.hashnode.dev" },
|
||||||
|
# { instagram = "https://instagram.com/username" },
|
||||||
|
# { itch-io = "https://username.itch.io" },
|
||||||
|
# { keybase = "https://keybase.io/username" },
|
||||||
|
# { kickstarter = "https://www.kickstarter.com/profile/username" },
|
||||||
|
# { lastfm = "https://lastfm.com/user/username" },
|
||||||
|
# { linkedin = "https://linkedin.com/in/username" },
|
||||||
|
{ mastodon = "https://chaos.social/@clubdiscordia" },
|
||||||
|
# { irc = "https://webirc.hackint.org/#ircs://irc.hackint.org/#cccb" },
|
||||||
|
# { medium = "https://medium.com/username" },
|
||||||
|
# { microsoft = "https://www.microsoft.com/" },
|
||||||
|
# { orcid = "https://orcid.org/userid" },
|
||||||
|
# { patreon = "https://www.patreon.com/username" },
|
||||||
|
# { pinterest = "https://pinterest.com/username" },
|
||||||
|
# { reddit = "https://reddit.com/user/username" },
|
||||||
|
# { researchgate = "https://www.researchgate.net/profile/username" },
|
||||||
|
# { slack = "https://workspace.url/team/userid" },
|
||||||
|
# { snapchat = "https://snapchat.com/add/username" },
|
||||||
|
# { soundcloud = "https://soundcloud.com/username" },
|
||||||
|
# { spotify = "https://open.spotify.com/user/userid" },
|
||||||
|
# { stack-overflow = "https://stackoverflow.com/users/userid/username" },
|
||||||
|
# { steam = "https://steamcommunity.com/profiles/userid" },
|
||||||
|
# { telegram = "https://t.me/username" },
|
||||||
|
# { threads = "https://www.threads.net/@username" },
|
||||||
|
# { tiktok = "https://tiktok.com/@username" },
|
||||||
|
# { tumblr = "https://username.tumblr.com" },
|
||||||
|
# { twitch = "https://twitch.tv/username" },
|
||||||
|
# { twitter = "https://twitter.com/username" },
|
||||||
|
# { x-twitter = "https://twitter.com/username" },
|
||||||
|
# { whatsapp = "https://wa.me/phone-number" },
|
||||||
|
# { youtube = "https://youtube.com/username" },
|
||||||
|
# { ko-fi = "https://ko-fi.com/username" },
|
||||||
|
# { codeberg = "https://codeberg.org/username"},
|
||||||
|
]
|
||||||
13
config/_default/markup.toml
Normal file
13
config/_default/markup.toml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -- Markup --
|
||||||
|
# These settings are required for the theme to function.
|
||||||
|
|
||||||
|
[goldmark]
|
||||||
|
[goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[highlight]
|
||||||
|
noClasses = false
|
||||||
|
|
||||||
|
[tableOfContents]
|
||||||
|
startLevel = 2
|
||||||
|
endLevel = 4
|
||||||
61
config/_default/menus.de.toml
Normal file
61
config/_default/menus.de.toml
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
# -- Main Menu --
|
||||||
|
# The main menu is displayed in the header at the top of the page.
|
||||||
|
# Acceptable parameters are name, pageRef, page, url, title, weight.
|
||||||
|
#
|
||||||
|
# The simplest menu configuration is to provide:
|
||||||
|
# name = The name to be displayed for this menu link
|
||||||
|
# pageRef = The identifier of the page or section to link to
|
||||||
|
#
|
||||||
|
# By default the menu is ordered alphabetically. This can be
|
||||||
|
# overridden by providing a weight value. The menu will then be
|
||||||
|
# ordered by weight from lowest to highest.
|
||||||
|
|
||||||
|
#[[main]]
|
||||||
|
# name = "Blog"
|
||||||
|
# pageRef = "posts"
|
||||||
|
# weight = 10
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Verein"
|
||||||
|
pageRef = "verein"
|
||||||
|
weight = 200
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Veranstaltungen"
|
||||||
|
pageRef = "veranstaltungen"
|
||||||
|
weight = 300
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Mitgliedschaft"
|
||||||
|
pageRef = "mitgliedschaft"
|
||||||
|
weight = 400
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "News"
|
||||||
|
pageRef = "post"
|
||||||
|
weight = 500
|
||||||
|
|
||||||
|
# -- Footer Menu --
|
||||||
|
# The footer menu is displayed at the bottom of the page, just before
|
||||||
|
# the copyright notice. Configure as per the main menu above.
|
||||||
|
|
||||||
|
|
||||||
|
[[footer]]
|
||||||
|
name = "Tags"
|
||||||
|
pageRef = "tags"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[footer]]
|
||||||
|
name = "Categories"
|
||||||
|
pageRef = "categories"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[footer]]
|
||||||
|
name = "Impressum"
|
||||||
|
pageRef = "impressum"
|
||||||
|
weight = 500
|
||||||
|
|
||||||
|
[[footer]]
|
||||||
|
name = "Privacy"
|
||||||
|
pageRef = "datenschutz"
|
||||||
|
weight = 600
|
||||||
172
config/_default/params.toml
Normal file
172
config/_default/params.toml
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
# -- Theme Options --
|
||||||
|
# These options control how the theme functions and allow you to
|
||||||
|
# customise the display of your website.
|
||||||
|
#
|
||||||
|
# Refer to the theme docs for more details about each of these parameters.
|
||||||
|
# https://blowfish.page/docs/configuration/#theme-parameters
|
||||||
|
|
||||||
|
colorScheme = "fira" # "congo"
|
||||||
|
defaultAppearance = "dark" # valid options: light or dark
|
||||||
|
autoSwitchAppearance = false
|
||||||
|
|
||||||
|
enableSearch = true
|
||||||
|
enableCodeCopy = false
|
||||||
|
|
||||||
|
replyByEmail = false
|
||||||
|
|
||||||
|
# mainSections = ["section1", "section2"]
|
||||||
|
# robots = ""
|
||||||
|
|
||||||
|
[params]
|
||||||
|
disableImageOptimization = false
|
||||||
|
disableTextInHeader = false
|
||||||
|
backgroundImageWidth = 1200
|
||||||
|
|
||||||
|
# defaultBackgroundImage = "/img/cccb-im-winter.jpg" # used as default for background images
|
||||||
|
defaultFeaturedImage = "/img/avatar-CCCB-Logo.png" # used as default for featured images in all articles
|
||||||
|
|
||||||
|
# highlightCurrentMenuArea = true
|
||||||
|
# smartTOC = true
|
||||||
|
# smartTOCHideUnfocusedChildren = true
|
||||||
|
|
||||||
|
giteaDefaultServer = "https://git.fsfe.org"
|
||||||
|
forgejoDefaultServer = "https://v8.next.forgejo.org"
|
||||||
|
|
||||||
|
[header]
|
||||||
|
layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
|
||||||
|
|
||||||
|
[footer]
|
||||||
|
showMenu = true
|
||||||
|
showCopyright = true
|
||||||
|
showThemeAttribution = true
|
||||||
|
showAppearanceSwitcher = true
|
||||||
|
showScrollToTop = true
|
||||||
|
|
||||||
|
[homepage]
|
||||||
|
layout = "background" # valid options: page, profile, hero, card, background, custom
|
||||||
|
homepageImage = "img/cccb-im-winter.jpg" # used in: hero, and card
|
||||||
|
showRecent = true
|
||||||
|
showRecentItems = 8
|
||||||
|
showMoreLink = true
|
||||||
|
showMoreLinkDest = "/post/"
|
||||||
|
cardView = false
|
||||||
|
cardViewScreenWidth = false
|
||||||
|
layoutBackgroundBlur = false # only used when layout equals background
|
||||||
|
|
||||||
|
[article]
|
||||||
|
showDate = true
|
||||||
|
showViews = false
|
||||||
|
showLikes = false
|
||||||
|
showDateOnlyInArticle = false
|
||||||
|
showDateUpdated = true
|
||||||
|
showAuthor = false
|
||||||
|
showAuthorBottom = true
|
||||||
|
showHero = false
|
||||||
|
# heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
|
||||||
|
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
|
||||||
|
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
|
||||||
|
showBreadcrumbs = true
|
||||||
|
showDraftLabel = true
|
||||||
|
showEdit = true
|
||||||
|
editURL = "https://github.com/cccb/www/tree/staging/content/"
|
||||||
|
editAppendPath = true
|
||||||
|
seriesOpened = false
|
||||||
|
showHeadingAnchors = true
|
||||||
|
showPagination = false
|
||||||
|
invertPagination = false
|
||||||
|
showReadingTime = true
|
||||||
|
showTableOfContents = true
|
||||||
|
# showRelatedContent = false
|
||||||
|
# relatedContentLimit = 3
|
||||||
|
showTaxonomies = true
|
||||||
|
showAuthorsBadges = false
|
||||||
|
showWordCount = true
|
||||||
|
# sharingLinks = [ "linkedin", "twitter", "bluesky", "mastodon", "reddit", "pinterest", "facebook", "email", "whatsapp", "telegram"]
|
||||||
|
showZenMode = false
|
||||||
|
|
||||||
|
[list]
|
||||||
|
showHero = false
|
||||||
|
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
|
||||||
|
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
|
||||||
|
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
|
||||||
|
showBreadcrumbs = false
|
||||||
|
showSummary = false
|
||||||
|
showViews = false
|
||||||
|
showLikes = false
|
||||||
|
showTableOfContents = false
|
||||||
|
showCards = false
|
||||||
|
orderByWeight = false
|
||||||
|
groupByYear = true
|
||||||
|
cardView = false
|
||||||
|
cardViewScreenWidth = false
|
||||||
|
constrainItemsWidth = false
|
||||||
|
|
||||||
|
[sitemap]
|
||||||
|
excludedKinds = ["taxonomy", "term"]
|
||||||
|
|
||||||
|
[taxonomy]
|
||||||
|
showTermCount = true
|
||||||
|
showHero = false
|
||||||
|
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
|
||||||
|
showBreadcrumbs = false
|
||||||
|
showViews = false
|
||||||
|
showLikes = false
|
||||||
|
showTableOfContents = false
|
||||||
|
cardView = false
|
||||||
|
category = "categories"
|
||||||
|
series = "series"
|
||||||
|
tag = "tags"
|
||||||
|
|
||||||
|
|
||||||
|
[term]
|
||||||
|
showHero = false
|
||||||
|
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
|
||||||
|
showBreadcrumbs = false
|
||||||
|
showViews = false
|
||||||
|
showLikes = false
|
||||||
|
showTableOfContents = true
|
||||||
|
groupByYear = false
|
||||||
|
cardView = false
|
||||||
|
cardViewScreenWidth = false
|
||||||
|
|
||||||
|
[firebase]
|
||||||
|
# apiKey = "XXXXXX"
|
||||||
|
# authDomain = "XXXXXX"
|
||||||
|
# projectId = "XXXXXX"
|
||||||
|
# storageBucket = "XXXXXX"
|
||||||
|
# messagingSenderId = "XXXXXX"
|
||||||
|
# appId = "XXXXXX"
|
||||||
|
# measurementId = "XXXXXX"
|
||||||
|
|
||||||
|
[fathomAnalytics]
|
||||||
|
# site = "ABC12345"
|
||||||
|
# domain = "llama.yoursite.com"
|
||||||
|
|
||||||
|
[umamiAnalytics]
|
||||||
|
# websiteid = "ABC12345"
|
||||||
|
# domain = "llama.yoursite.com"
|
||||||
|
# dataDomains = "yoursite.com,yoursite2.com"
|
||||||
|
# scriptName = ""
|
||||||
|
# enableTrackEvent = true
|
||||||
|
|
||||||
|
[selineAnalytics]
|
||||||
|
# token = "XXXXXX"
|
||||||
|
# enableTrackEvent = true
|
||||||
|
|
||||||
|
[buymeacoffee]
|
||||||
|
# identifier = ""
|
||||||
|
# globalWidget = true
|
||||||
|
# globalWidgetMessage = "Hello"
|
||||||
|
# globalWidgetColor = "#FFDD00"
|
||||||
|
# globalWidgetPosition = "Right"
|
||||||
|
|
||||||
|
[verification]
|
||||||
|
# google = ""
|
||||||
|
# bing = ""
|
||||||
|
# pinterest = ""
|
||||||
|
# yandex = ""
|
||||||
|
# fediverse = ""
|
||||||
|
|
||||||
|
[rssnext]
|
||||||
|
# feedId = ""
|
||||||
|
# userId = ""
|
||||||
56
content/datengarten/111.md
Normal file
56
content/datengarten/111.md
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
categories: ["Datengarten"]
|
||||||
|
tags: ["Open Politics", "Political Science", "Engineering", "Machine Learning"]
|
||||||
|
series: "Datengarten"
|
||||||
|
title: "Datengarten 111"
|
||||||
|
no: 111
|
||||||
|
subtitle: "Open Source Political Intelligence - What is it and why does it matter?"
|
||||||
|
speaker: "Jim-Vincent Wagner"
|
||||||
|
date: 2025-01-23T19:00:00+01:00
|
||||||
|
event:
|
||||||
|
start: 2025-02-05T19:00:00+01:00
|
||||||
|
end: 2025-02-05T20:30:00+01:00
|
||||||
|
location: CCCB
|
||||||
|
language: en
|
||||||
|
streaming: true
|
||||||
|
recording: https://streaming.media.ccc.de/datengarten/cccb
|
||||||
|
---
|
||||||
|
> 🇬🇧 English Version
|
||||||
|
#### **Open Politics – Collaborative Tools for Open Political Data**
|
||||||
|
|
||||||
|
Politics is complex, and making sense of it requires access to good information. The **Open Politics Project **is working on and operationalising open-source tools that help analyse political structures, decisions, and developments—so that journalists, researchers, activists, and engaged citizens can better understand and interpret them.
|
||||||
|
|
||||||
|
Our goal is to make political data more accessible and useful. We bring together existing methods from data analysis, political science, and AI, while also experimenting with new approaches—always in the open, documented, and improved through collaboration. From user-friendly visualisations to structured databases, we explore ways to work with political data in a way that’s practical and meaningful.
|
||||||
|
|
||||||
|
We call it: **Open Source Political Intelligence**
|
||||||
|
|
||||||
|
At *Datengarten *on **February 5, 2025**, we’ll share our latest progress, discuss challenges, and give a behind-the-scenes look at our work.
|
||||||
|
|
||||||
|
📍**Chaos Computer Club Berlin (CCCB), Marienstraße 11, 10117 Berlin**
|
||||||
|
|
||||||
|
Let’s talk about how we can make political information more open and useful for everyone.
|
||||||
|
|
||||||
|
🔗 Open Politics Project: https://open-politics.org/about, https://github.com/open-politics/open-politics, https://github.com/open-politics/opol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
> 🇧🇪 German Version
|
||||||
|
|
||||||
|
#### **Open Politics – Offene Werkzeuge für politische Daten**
|
||||||
|
|
||||||
|
Politik ist oft schwer durchschaubar – aber mit den richtigen Werkzeugen lassen sich Strukturen, Entscheidungen und Entwicklungen besser verstehen. Das **Open Politics Project **entwickelt und operationalisiert Open-Source-Methoden zur Analyse politischer Daten, um Journalist:innen, Forschenden, Aktivist:innen und interessierten Bürger:innen den Zugang zu politischen Informationen zu erleichtern.
|
||||||
|
|
||||||
|
Unser Ziel ist es, politische Daten verständlich und nutzbar zu machen. Wir verbinden bestehende Ansätze aus Datenanalyse, Politikwissenschaft und KI, probieren neue Methoden aus und dokumentieren alles offen, um es gemeinsam weiterzuentwickeln. Von interaktiven Visualisierungen bis zu strukturierten Datensammlungen – wir experimentieren mit Wegen, politische Informationen alltagstauglicher zu gestalten.
|
||||||
|
|
||||||
|
We call it: **Open Source Political Intelligence**
|
||||||
|
|
||||||
|
Beim *Datengarten *am **05. Februar 2025 **sprechen wir über unseren aktuellen Stand, diskutieren Herausforderungen und geben einen Einblick in unsere Arbeit.
|
||||||
|
|
||||||
|
📍**Chaos Computer Club Berlin (CCCB), Marienstraße 11, 10117 Berlin**
|
||||||
|
|
||||||
|
Lasst uns gemeinsam überlegen, wie politische Informationen offener und zugänglicher werden können.
|
||||||
|
|
||||||
|
🔗 Open Politics Project: https://open-politics.org/about, https://github.com/open-politics/open-politics, https://github.com/open-politics/opol
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<!-- ---
|
|
||||||
title: "Amateurfunkkurs Klasse A"
|
|
||||||
subtitle: "Teil 2"
|
|
||||||
date: 2018-05-17T22:41:48+02:00
|
|
||||||
dtstart: 20190110T180000
|
|
||||||
dtend: 20190110T203000
|
|
||||||
rrule: "FREQ=WEEKLY;BYDAY=MO;INTERVAL=1;COUNT=14"
|
|
||||||
---
|
|
||||||
|
|
||||||
Nach einer kleinen Verschnaufpause über Weihnachten und dem Chaos Communication Congress machen wir mit dem Lehrgang zur Vorbereitung auf die Klasse A weiter. Der Zeitraum ist vom 7. Januar 2019 bis zum 8. April 2019.
|
|
||||||
|
|
||||||
Die genauen Inhalte pro Einheit sind ebenso im [Unterrichtsplan A](https://www.chaoswelle.de/Lehrgang_Berlin_2019/Unterrichtsplan_A) detaillierter aufgelistet. -->
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
<!-- ---
|
|
||||||
title: "Amateurfunkkurs Klasse E"
|
|
||||||
subtitle: "Teil 2"
|
|
||||||
date: 2018-05-17T22:41:48+02:00
|
|
||||||
dtstart: 20180910T180000
|
|
||||||
dtend: 20180910T203000
|
|
||||||
rrule: "FREQ=WEEKLY;BYDAY=MO;INTERVAL=1;COUNT=15"
|
|
||||||
---
|
|
||||||
|
|
||||||
Im ersten Teil wird für die Prüfung Klasse E vorbereitet. Der Zeitraum ist vom 17. September bis zum 17. Dezember.
|
|
||||||
|
|
||||||
An einem Termin werden neben dem großen Teil der zu erlernenden Technik immer Themen aus dem Bereich Betriebstechnik und Vorschriften behandelt. Diese sind für die Prüfung notwendig, aber leider etwas trockener. Durch die Abwechslung sollte der Spaß nicht verloren gehen.
|
|
||||||
|
|
||||||
Die genauen Inhalte pro Einheit sind im [Unterrichtsplan E](https://www.chaoswelle.de/Lehrgang_Berlin_2018/Unterrichtsplan_E) detaillierter aufgelistet.
|
|
||||||
-->
|
|
||||||
|
|
@ -1,38 +1,14 @@
|
||||||
<!-- ---
|
---
|
||||||
title: "Amateurfunk"
|
title: "Amateurfunk"
|
||||||
subtitle: "Funken und Löten im CCCB"
|
subtitle: "Funken und Löten im CCCB"
|
||||||
date: 2018-05-17T22:41:48+02:00
|
date: 2018-05-17T22:41:48+02:00
|
||||||
menu:
|
|
||||||
main:
|
|
||||||
parent: "veranstaltungen"
|
|
||||||
---
|
---
|
||||||

|

|
||||||
|
|
||||||
Im Moment finden keine Amateurfunktreffen mehr im CCCB statt
|
Vor einiger Zeit fanden gelegentlich Amateurfunkkurse im CCCB statt. Im Zusammenhang damit trafen sich Funkamateure und Interessierte rund um drahtlose Kommunikation auch an den offenen Abenden. Das Treffen war Nahe zur [Interessensgemeinschaft
|
||||||
|
|
||||||
Früher trafen sich Funkamateure oder Interessierte
|
|
||||||
rund um drahtlose Kommunikation im Chaos Computer Club Berlin im Rahmen des
|
|
||||||
[Club Discordia]({{< ref "clubdiscordia.md" >}}). Manchmal gibt es Vorträge
|
|
||||||
oder Workshops, die dann im Kalender separat angezeigt werden. Gelegentlich
|
|
||||||
halten wir Amateurfunkkurse ab, um für die Prüfung zum Funkamateur vorzubereiten.
|
|
||||||
|
|
||||||
Das Treffen ist Nahe zur [Interessensgemeinschaft
|
|
||||||
Chaoswelle](http://chaoswelle.de), die sich im DARC e.V. Ortsverband D23
|
Chaoswelle](http://chaoswelle.de), die sich im DARC e.V. Ortsverband D23
|
||||||
organisiert. Funkamateure oder Interessierte rund um die Funktechnik sind dazu
|
organisiert. Ankündigungen und Diskussionen zu diesen Themen finden auf einer [offenen
|
||||||
Willkommen! Ankündigungen und Diskussionen finden auf einer [offenen
|
|
||||||
Mailingliste](http://lists.chaoswelle.de/listinfo/berlin) statt.
|
Mailingliste](http://lists.chaoswelle.de/listinfo/berlin) statt.
|
||||||
|
|
||||||
Für Fragen kannst Du Dich an Lars (Rufzeichen DC4LW) unter <dc4lw@darc.de>
|
Für Fragen kannst Du Dich auch an Lars (Rufzeichen DC4LW) unter <dc4lw@darc.de>
|
||||||
wenden.
|
wenden.
|
||||||
|
|
||||||
## Kurse
|
|
||||||
|
|
||||||
In 14 Unterrichtseinheiten ab Mitte September 2018 bis zum Jahresende werden
|
|
||||||
die nötigen [Inhalte für die Klasse E]({{< ref "afu-kurs-e.md" >}})
|
|
||||||
vermittelt, das ist der erster Teil des Lehrgangs. In vierzehn weiteren
|
|
||||||
Einheiten des zweiten Teils kommen im Winter 2019 die zusätzlichen [Inhalte für
|
|
||||||
die Klasse A]({{< ref "afu-kurs-e.md" >}}) an die Reihe. Wir treffen uns
|
|
||||||
wöchentlich am Montagabend im Zeitraum von 18:00 Uhr bis 20:30 Uhr (mit kurzen
|
|
||||||
Pausen zwischendurch).
|
|
||||||
|
|
||||||
Details gibt es auf der Seite der [Chaoswelle](https://www.chaoswelle.de/Lehrgang_Berlin_2018). -->
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue