Gutzkowclub e.V. — Website
Public website of Dresden’s oldest student club (since 1964): program, drinks menu, history, contact.
Gutzkowclub e.V. has run Dresden’s oldest student club since 1964. The public website presents the club’s history, program, drinks menu, team, and contact details — a third system alongside the internal club administration (Gutz Intern) and the central editorial admin (Gutz Admin), with which it synchronizes instead of maintaining its own island solutions.
Gallery
Case Study
Situation
The legacy content existed as a WordPress export. The new website had to work as a third system within an existing three-app landscape, without requiring editors — club members with no developer background — to maintain content in code.
Challenge
A nightly cross-system synchronization (Google Calendar → internal calendar → duplicate cleanup → diff check → push-back of public events, 1:15–3:30 AM) had to run reliably and safely against overlap. On top of that came the automated migration of decades-old WordPress content, including filtering out private categories and cleaning up Gutenberg shortcodes. The Filament admin panel originally included in this app was later removed entirely, moving editorial work out into the separate Gutz Admin app — a deliberate decoupling of frontend and content maintenance.
Approach
Laravel (started on version 12, since updated to 13), PHP 8.4, Blade templates with no SPA framework, Tailwind CSS 4 and Vite 7. No CMS left in its own repository — content maintenance runs through Gutz Admin, while gutz-web reads data such as the drinks menu directly from the Gutz Intern database in places.
Decisions
Removed the Filament admin from the public frontend; editorial work now runs through the separate Gutz Admin app, which reduces coupling and attack surface in the public part.
An editorial change should show up immediately; the cache stores of the three apps are deliberately not shared.
A dedicated scheduled job compares both calendar sources and actively reports divergences instead of silently tolerating them.
Honeypot, time trap, and rate limiting for the contact form instead of an external captcha service.
Four parallel read-only audits (backend, UI/UX, frontend assets, SEO/config) were documented — with concretely named open findings instead of a black box.
My contribution
All 131 commits are by Felix Schattenberg, built solo.
Results