Skip to content

rfluethi/Training-Meeting-Tracker

Repository files navigation

Training Meeting Tracker

License: GPL v2+ Lint Plugin Check

WordPress plugin that displays the DACH training team's meetings on a WordPress page. The data source is a JSON file generated by a GitHub Action from the issues in the team repository.

Features

  • Shortcode [training_meeting_tracker] with attributes show_upcoming, show_in_progress, show_past, years.
  • Upcoming meetings: every issue without the Erledigt label whose date lies in the future (date, time, link to issue).
  • Meetings in progress: every issue without the Erledigt label whose date already passed. This is the minutes pipeline.
  • Past minutes: every issue with the Erledigt label, grouped by year.
  • Date format on the frontend: DD.MM.YYYY.
  • Settings page under Settings, Training Meeting Tracker.
  • Transient cache with configurable duration, fallback to last good response on error.
  • Full i18n (source strings in English, German translation de_DE included).
  • Cleans up its own data on uninstall.

Quick start

  1. Download the ZIP from the Releases page and install it under Plugins, Add New, Upload Plugin.
  2. Activate the plugin.
  3. Open Settings, Training Meeting Tracker, and verify the JSON URL. Default is https://raw.githubusercontent.com/rfluethi/learn-wp-dach-team/data/sitzungen.json.
  4. Place the shortcode [training_meeting_tracker] on a page.

Shortcode

[training_meeting_tracker]
[training_meeting_tracker show_upcoming="true" show_in_progress="true" show_past="true" years="3"]
Attribute Default Values Meaning
show_upcoming true true or false Show the Upcoming meetings block.
show_in_progress true true or false Show the Meetings in progress block.
show_past true true or false Show the Past minutes block.
years all all or integer Number of years shown in the past block (newest first).
show_next (none) true or false Legacy alias for show_upcoming.

Requirements

  • WordPress 6.4 or newer
  • PHP 7.4 or newer

Architecture

The plugin uses a slim two-component setup:

  1. Team GitHub repository (rfluethi/learn-wp-dach-team): a GitHub Action reads every issue with the sitzung label, parses the title date and the body fields (Veranstaltung:, Uhrzeit:) plus the Erledigt label, and writes a sitzungen.json file (schema v2, three lists) to the data branch.
  2. This plugin: fetches the JSON via wp_remote_get, validates the schema, caches the result as a transient, and renders the shortcode.

The plugin does not talk to the GitHub API directly. It only reads a static JSON file. This avoids token maintenance and rate limit concerns.

File overview

training-meeting-tracker/
  training-meeting-tracker.php    Plugin header, bootstrap, constants
  uninstall.php                   Cleanup on uninstall
  readme.txt                      wp.org format readme
  includes/
    class-tmtracker-plugin.php          Bootstrap class
    class-tmtracker-fetcher.php         HTTP, cache, schema validation
    class-tmtracker-renderer.php        HTML rendering, date formatting
    class-tmtracker-shortcode.php       [training_meeting_tracker]
    class-tmtracker-settings.php        Settings API, clear cache
  assets/css/frontend.css         Frontend styles (prefix tmtracker-)
  languages/
    training-meeting-tracker.pot
    training-meeting-tracker-de_DE.po
    training-meeting-tracker-de_DE.mo
  tests/                          Lightweight PHP tests (run-tests.php)
  bin/build-zip.sh                Local ZIP builder

Development

# Install dev dependencies
composer install

# Run the linter
composer lint

# Auto-fix where possible
composer lint-fix

# Run tests
php tests/run-tests.php

# Build local ZIP (same filter as the release workflow)
bin/build-zip.sh                    # version taken from the plugin header
bin/build-zip.sh 0.1.0-rc1          # version given explicitly
# Output: dist/training-meeting-tracker-<version>.zip

CI runs PHPCS (WordPress Coding Standards) and Plugin Check on every push. Pushing a v* tag triggers the release workflow, which builds the ZIP and attaches it as a GitHub release asset. Details in the release process section of docs/Developer.md.

Documentation

Four documents, each for a different audience:

Document For whom
docs/Architecture.md System overview from issues through action and JSON to plugin and frontend. Good entry point.
docs/Developer.md Developers: code structure, classes, local toolchain, release process.
docs/Operations.md Maintainers: troubleshooting, cache maintenance, schema migration, rollback.
docs/User-Guide.md Team members without a code background. How to maintain meeting issues.

History

This plugin is the successor of an earlier internal plugin ("Learn DACH Sitzungen"). That plugin has been retired and its repository removed.

License

GPL-2.0-or-later.

About

WordPress plugin that displays the DACH training team's meetings on a WordPress page, sourced from GitHub issues.

Topics

Resources

License

Stars

Watchers

Forks

Contributors