WeekWise ist ein benutzerfreundliches Tool zur Erstellung und Verwaltung von Wochenplänen. Es ermöglicht eine individuelle Anpassung von Farben und Kategorien direkt im UI und kann fast ohne Programmierkenntnisse genutzt werden.
- ICS-Kalender-Export – Termine als ICS-Datei herunterladen oder als Abo-URL (webcal://) in Kalender-Apps abonnieren.
- Token-basiertes Abo – Im Event-Modus werden Abo-Links über generierbare Tokens gesteuert. Token-Verlauf in settings.json.
- Öffentlicher ICS-Zugang – Export-Dialog kann für nicht eingeloggte Nutzer freigeschaltet werden.
- Filter im Export – Kategorie- und Tages-Chips zum selektiven Export.
- Embedded ICS-Modal –
?embedded=true&view=icszeigt nur den Export-Dialog. - Persistente Booking-IDs – Jedes Booking erhält eine UUID für stabile Identifikation (ICS, Sync).
- Drag & Drop auf Uhrzeit – Termine können auf eine andere Uhrzeit gezogen werden (15-Min-Raster).
- Resize-Handle – Dauer eines Termins per Ziehen am unteren Rand ändern.
- Kontextmenü – Rechtsklick auf Termine für schnelle Aktionen (Bearbeiten, Duplizieren, Kategorie ändern, Löschen). Unterstützt Einzel- und Mehrfachauswahl.
- Hilfe-Button – Neuer FAB mit Übersicht aller Tastenkürzel und URL-Parameter.
- Shift/Strg + Drag = Kopieren – Modifier-Taste kann auch während des Drags gedrückt werden.
- Scroll-Hinweis – Optischer Pfeil bei horizontal scrollbaren Event-Ansichten.
- Editierbare Standard-Kategorie – Name und Farbe der Default-Kategorie sind jetzt änderbar.
- Kategorie-Zähler – In den Einstellungen wird pro Kategorie die Anzahl zugeordneter Termine angezeigt.
Vollständiges Changelog: CHANGELOG.md
- Überlappende Termine werden nebeneinander dargestellt statt übereinander
- iFrame-Einbettung mit URL-Parametern (siehe unten)
- Verbesserte Mobile-Ansicht mit Touch-optimierten Elementen
- Automatische Textfarben – Text wird automatisch hell/dunkel je nach Hintergrundfarbe
- Sicheres PHP-Backend (Whitelist für Dateinamen, File-Locking)
- Loading-Indikator beim Speichern/Laden
- SVG-Icons für Sidebar statt Unicode-Zeichen (bessere Kompatibilität)
- ✅ Jeden Webspace – Nur HTML, CSS, JS und minimales PHP erforderlich
- ✅ Zero Maintenance – Nach Einrichtung kein Eingriff mehr nötig
- ✅ iFrame-Integration – Ideal zum Einbetten auf bestehenden Websites
- Individuelle Anpassung: Farben und Kategorien können frei gewählt und angepasst werden
- Benutzerfreundliche Oberfläche: Einfache und intuitive Bedienung zur schnellen Erstellung und Bearbeitung von Einträgen
- Flexible Einsatzmöglichkeiten: Geeignet für Sportvereine, Familien, Gemeinden und mehr
- Übersichtliche Darstellung: Klar strukturierte Anzeige des Wochenplans
- Mobile Ansicht: Für Mobilgeräte optimierte Darstellung
- Ablage: Termine können "geparkt" werden und sind nur für Admins sichtbar
- Drucken: Plan als A4 Landscape drucken, mit wählbaren Optionen
- Tage ein-/ausblenden: Bestimmte Tage können ausgeblendet werden. Leere Tage können automatisch ausgeblendet werden
- Kalender-Export: ICS-Download und Abo-URLs (webcal://) für Kalender-Integration
- Kontextmenü: Rechtsklick für schnelle Aktionen (Einzel- und Mehrfachauswahl)
- Hilfe-Overlay: Tastenkürzel und URL-Parameter auf einen Blick
Das Repository ist so strukturiert, dass es direkt geklont und verwendet werden kann:
- Repository auf den Webspace klonen (z.B. über Plesk Git-Integration)
settings.jsonmit folgendem Inhalt erstellen:{ "title": "Wochenplan", "headerColor": "#2196F3", "secondaryColor": "#FFC107", "startHour": "8", "endHour": "22", "bookingColors": [], "hiddenDays": [], "hideEmptyDays": false, "loginhash": 108819879, "mode": "week", "eventStartDate": null, "eventDayCount": 3, "icsTokens": [], "icsPublic": false, "icsDayFilter": false }- Fertig! Das Standard-Passwort ist
123ChangeMe!- bitte nach dem ersten Login ändern.
Hinweis: Die Ordner
_archive/(alte Versionen) und Entwicklungsdateien werden beigit archiveautomatisch ausgeschlossen.
- Datei
_archive/installer/2.3/install.phpauf den Webspace hochladen install.phpim Browser öffnen- Admin-Passwort festlegen
- Fertig!
Alle Parameter können beliebig kombiniert werden.
| Parameter | Beschreibung | Beispiel |
|---|---|---|
embedded=true |
Versteckt alle Bedienelemente (Login, FABs, Sidebar) | ?embedded=true |
readonly=true |
Deaktiviert alle Interaktionen | ?readonly=true |
compact=true |
Kompakte Darstellung ohne Header | ?compact=true |
category=Name |
Zeigt nur Termine einer Kategorie | ?category=Jugend |
day=... |
Zeigt nur bestimmte Tage (positiver Filter) | ?day=Mo,Mi,Fr |
hide=... |
Blendet bestimmte Tage aus (negativer Filter) | ?hide=Sa,So |
hideempty=true |
Blendet Tage ohne Termine aus | ?hideempty=true |
view=ics |
Zeigt nur den ICS-Export-Dialog (mit embedded=true) |
?embedded=true&view=ics |
Flexible Tag-Eingabe: Die Parameter day und hide akzeptieren verschiedene Formate – kommagetrennt, in beliebiger Kombination:
- Nummern:
1(=Montag) bis7(=Sonntag) im Wochenmodus zuätzlich: - Deutsch:
Montag,Mo - Englisch:
Monday,Mon
<!-- Vollständige Ansicht ohne Bedienelemente -->
<iframe src="https://example.com/weekwise/?embedded=true" width="100%" height="600"></iframe>
<!-- Nur Jugend-Termine anzeigen -->
<iframe src="https://example.com/weekwise/?embedded=true&category=Jugend" width="100%" height="600"></iframe>
<!-- Nur Montag bis Freitag, kompakt -->
<iframe src="https://example.com/weekwise/?embedded=true&hide=Sa,So&compact=true" width="100%" height="400"></iframe>
<!-- Hallenbelegung (readonly, ohne leere Tage) -->
<iframe src="https://example.com/weekwise/?embedded=true&readonly=true&hideempty=true" width="100%" height="600"></iframe>- Sportvereine: Verwaltung von Trainingszeiten und Angeboten
- Familien: Übersicht über wöchentliche Termine oder digitaler Stundenplan (im Heimnetzwerk)
- Privatpersonen: Planung von wöchentlichen Terminen und Aufgaben
- Gemeinden: Veranstaltungskalender, Hallenbelegungspläne
- Unternehmen: Ressourcenplanung (Räume, Geräte) – Info-Screens
- PHP (minimal, nur für Datenspeicherung)
- HTML5
- CSS3 (mit CSS Custom Properties)
- Vanilla JavaScript (keine Frameworks erforderlich)
WeekWise/ # Direkt einsatzbereit nach Git Clone
├── index.html # Haupt-Anwendung
├── style.css # Alle Styles
├── app.js # JavaScript
├── save_json.php # Server-API
├── ical.php # ICS-Kalender-Endpoint
├── ico/ # SVG Icons
├── README.md
├── CHANGELOG.md # Versionshistorie
├── .gitignore # Ignoriert settings.json, bookings.json
├── .gitattributes # Schließt _archive/ beim Export aus
└── _archive/ # Alte Versionen & Installer (nicht für Produktion)
├── Vers 1.2 (02-2025)/
├── Vers 1.3(tbd)/
└── installer/
Beiträge zur Weiterentwicklung von WeekWise sind willkommen!
- Issues für Bugs und Feature-Requests
- Pull Requests für Verbesserungen
- Feedback zur Usability
- Beim Drucken funktioniert das Skalieren auf Seitenbreite – das automatische Skalieren auf Seitenhöhe funktioniert nicht.
Dieses Projekt steht unter der MIT-Lizenz.
Live-Demo unter: https://dev0.sv-wolken.de/ – Zugang mit dem hier angegebenen Default-Passwort zum Ausprobieren möglich. Bitte aufgeräumt hinterlassen.
WeekWise wurde ursprünglich für die wöchentlichen Angebote eines Sportvereins entwickelt.