{"id":48217579,"url":"https://github.com/bmmmm/it-events-bonn","last_synced_at":"2026-04-04T19:01:28.618Z","repository":{"id":297114761,"uuid":"995710262","full_name":"bmmmm/it-events-bonn","owner":"bmmmm","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-10T09:43:24.000Z","size":2708,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-10T10:15:32.704Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bmmmm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-03T22:38:43.000Z","updated_at":"2026-03-10T09:43:18.000Z","dependencies_parsed_at":"2026-03-10T08:06:04.713Z","dependency_job_id":null,"html_url":"https://github.com/bmmmm/it-events-bonn","commit_stats":null,"previous_names":["bmmmm/it-events-bonn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bmmmm/it-events-bonn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmmmm%2Fit-events-bonn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmmmm%2Fit-events-bonn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmmmm%2Fit-events-bonn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmmmm%2Fit-events-bonn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmmmm","download_url":"https://codeload.github.com/bmmmm/it-events-bonn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmmmm%2Fit-events-bonn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31409471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-04T19:01:27.505Z","updated_at":"2026-04-04T19:01:28.610Z","avatar_url":"https://github.com/bmmmm.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# it-events-bonn\n\n\u003e **IT-Veranstaltungen in Bonn** – Eine schlanke, statische Web-App, die alle IT-Vereins-Kalender in Bonn anzeigt.\nLive-Website: https://bmmmm.github.io/it-events-bonn/\n\n---\n\n## 📌 Projektbeschreibung\n\nDiese Anwendung lädt alle `.ics`-Dateien aus dem Ordner `/calendars`, die per GitHub Actions-Workflow aktualisiert werden, und stellt sie in einer Listenansicht dar. Die wichtigsten Funktionen:\n\n- **Statische HTML-Seite (`index.html`)**:\n  - Lädt zur Laufzeit `calendars.json`, filtert die darin aufgeführten Kalender anhand von `last_updates.json` und ermittelt so, welche Kalender aktuell erreichbar sind.\n  - Baut daraus automatisch das interne `CALENDARS`-Array mit `{ name, url, color }`-Einträgen auf.\n  - Parsen der `.ics`-Feeds per [ical.js](https://github.com/mozilla-comm/ical.js/) und Darstellung mit [FullCalendar](https://fullcalendar.io/).\n  - Responsive Ansicht: Auf Desktop eine klassische Monatsübersicht (`dayGridMonth`), auf Mobilgeräten eine Listenansicht (`listMonth`).\n  - Klick auf einen Termin öffnet ein modales Detailfenster mit Titel, Datum/Uhrzeit, Ort, Beschreibung und URL (der Link öffnet sich dabei in einem neuen Tab).\n  - Checkbox‑basierte Status‑ \u0026 Filterleiste: Einzelne Kalender lassen sich an‑ und ausschalten; dabei werden Erreichbarkeitsstatus sowie Zeitstempel der letzten Aktualisierung angezeigt.\n  - Ruhige, komplementäre Farbpalette (Teal‑Akzent, helle Link‑Farbe) und optimierte Month‑View‑Buttons/Hover‑States.\n\n- **GitHub Actions Workflow (`ci_and_deploy.yml`)**:\n  - Läuft stündlich (Cron) und bei Push auf `main` / manueller Ausführung.\n  - Lädt über `calendars.json` alle konfigurierten `.ics`-Feeds nach `/calendars/*.ics`.\n  - Vergleicht heruntergeladene Dateien mit den vorhandenen und setzt für **jeden** erfolgreich erreichten Feed den Zeitstempel in `last_updates.json`:\n    - Bei geänderten oder neuen Dateien wird die `.ics` verschoben.\n    - Auch wenn nur `last_updates.json` neue Timestamps enthält, wird committet, sodass Reachability‑Daten immer aktuell bleiben.\n  - Danach werden alle Dateien aus dem Repo (inkl. geänderter `.ics`-Dateien) auf den `gh-pages`-Branch deployed.\n\n---\n\n## 🚀 Einrichtung \u0026 Deployment\n\n1. **Repository klonen**\n\n   ```bash\n   git clone https://github.com/bmmmm/it-events-bonn.git\n   cd it-events-bonn\n   ```\n\n2. **Abhängigkeiten laden**\n\n   Da die Seite rein statisch ist, sind keine Build-Schritte nötig. Einfach lokal den Webserver starten oder die `index.html` direkt öffnen.\n\n3. **GitHub Actions**\n\n   Der Workflow ist bereits in `.github/workflows/ci_and_deploy.yml` definiert. Er sorgt automatisch dafür, dass:\n   - Alle `.ics`-Feeds aus `calendars.json` aktualisiert werden.\n   - Bei Änderungen ein Commit ausgelöst wird.\n   - Die Seite auf `gh-pages` deployed.\n\n---\n\n## ➕ Neuen Kalender hinzufügen\n\nUm einen weiteren IT-Verein / Kalender einzubinden, ist nur folgender Schritt notwendig:\n\n1. **Eintrag in `calendars.json` hinzufügen** (für den Download-Workflow):\n\n   Öffne die Datei `calendars.json` und füge ein neues Objekt hinzu:\n\n   ```json\n   {\n     \"name\": \"neuerverein\",\n     \"src\": \"https://beispiel.de/neuerverein.ics\",\n     \"url\": \"calendars/neuerverein.ics\",\n     \"color\": \"#4ade80\"\n   }\n   ```\n\n   - `name`: Ein eindeutiger Bezeichner (ohne Leer- oder Sonderzeichen), wird auch als Dateiname genutzt (`{name}.ics`).\n   - `src`: Die URL zum `.ics`-Feed des Vereins.\n   - `url`: Pfad unter `/calendars`, in dem die Datei gespeichert wird.\n   - `color`: Hex-Code für die Farbe des Kalenders in FullCalendar.\n\nSobald `calendars.json` geändert ist und in `main` gemerged wird, lädt der CI-Workflow automatisch die entsprechende `.ics`-Datei in `/calendars/{name}.ics` und aktualisiert `last_updates.json`. Beim nächsten Laden von `index.html` erscheint der neue Kalender automatisch in der Liste.\n\n---\n\n## 📄 Beispiel Pull Request\n\nWenn du einen neuen Kalender hinzufügen willst, könntest du folgendes Repository forken und einen PR mit dieser Änderung öffnen:\n\n1. **`calendars.json`**\n\n   ```diff\n   [\n     {\n       \"name\": \"bc101\",\n       \"src\": \"https://bitcircus101.de/bitcircus101.ics\",\n       \"url\": \"calendars/bitcircus101.ics\",\n       \"color\": \"#CC73E1\"\n     },\n+    {\n+      \"name\": \"neuerverein\",\n+      \"src\": \"https://beispiel.de/neuerverein.ics\",\n+      \"url\": \"calendars/neuerverein.ics\",\n+      \"color\": \"#4ade80\"\n+    }\n   ]\n   ```\n\nDanach öffnest du einen Pull Request gegen den `main`-Branch. Sobald der PR gemerged wird, läuft der CI-Workflow und die neue Kalenderdatei wird automatisch im Repo unter `/calendars/neuerverein.ics` abgelegt. Anschließend taucht der Kalender auf der Live-Seite auf.\n\n---\n\n## 📜 Lizenz\n\nMIT © Bartosz","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmmmm%2Fit-events-bonn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmmmm%2Fit-events-bonn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmmmm%2Fit-events-bonn/lists"}