PowerShell Usergroup Hannover Website π
June 17, 2026 Β· View on GitHub
Modern, accessible website for the PowerShell Usergroup Hannover (PSUGH) built with semantic HTML, modern CSS, and deployed on GitHub Pages.
π Live Website
Visit us at: https://psugh.org
β¨ Features
- Modern Design: Clean, professional design with CSS Grid and Flexbox
- Fully Responsive: Optimized for all devices and screen sizes with enhanced mobile navigation
- Mobile Optimized: Touch-friendly interface with glassmorphism hamburger menu and centered buttons
- Accessible: WCAG 2.1 compliant with proper semantic HTML and ARIA labels
- Performance Optimized: Fast loading with optimized CSS
- SEO Ready: Meta tags, structured data, and Open Graph support
- Dynamic Content: Meeting and event information managed via JSON files
- Organized Data Structure: Separated data files for better maintainability
- Interactive Events Page: Calendar view with upcoming and past events (future events prioritized)
- Social Integration: Links to Twitter, Mastodon, GitHub, and Discord
π οΈ Technology Stack
- HTML5: Semantic markup with accessibility in mind
- CSS3: Modern CSS with custom properties, Grid, and Flexbox
- JavaScript: Vanilla JS for interactive features
- GitHub Pages: Static site hosting
- GitHub Actions: Automated deployment and linting
π Project Structure
PSUGH.github.io/
βββ .github/workflows/ # GitHub Actions workflows
βββ css/ # Stylesheets
β βββ styles.css # Main styles (mobile-optimized)
βββ fonts/ # Local font files
βββ img/ # Images and assets
βββ current-meeting.json # Current/next meeting info
βββ past-events.json # Historical events with materials
βββ upcoming-events.json # Planned future events
βββ index.html # Homepage
βββ events.html # Events page with calendar
βββ impressum.html # Legal notice
βββ DATA-STRUCTURE.md # Technical documentation
βββ MEETING-CONTENT.md # Content management guide
βββ package.json # Node.js configuration
π Development
Prerequisites
- Node.js 18+ and npm
- Git
Setup
-
Clone the repository
git clone https://github.com/PSUGH/PSUGH.github.io.git cd PSUGH.github.io -
Install dependencies
npm install -
Start development server
npm run devThis will start a local server at
http://localhost:3000(using a lightweight static server).
Available Scripts
npm run dev- Start a local development servernpm run build- Build optimized version for production (minifiescss/styles.cssin-place)npm run lint-css- Lint CSS filesnpm run lint-html- Lint HTML filesnpm run validate- Run all linting checksnpm run serve- Start a production-style servernpm run preview- Build and serve production version
Security / Auditing
This project uses a small set of developer tools to build and lint the site. npm audit may report vulnerabilities for transitive dev dependencies (e.g., build tools and linters) that do not affect the deployed site itself. If you want to inspect, run:
npm audit
π Content Management
Updating Meeting Information
Edit the respective JSON files to update meeting information:
current-meeting.json- Current/next meeting informationpast-events.json- Historical events and materialsupcoming-events.json- Planned future events
// current-meeting.json
{
"nextMeeting": {
"date": "Freitag, den 20.06.2025, ab 18:30h",
"isoDate": "2025-06-20T18:30:00+02:00",
"topics": [
{
"title": "π Your Next Topic Title π",
"speaker": "Speaker Name",
"picture": "img/topic-image.png",
"description": "Topic description with details"
}
]
}
}
picture is optional. If present, the homepage renders the image below the topic description.
For detailed instructions, see MEETING-CONTENT.md.
Adding New Content
The website uses semantic HTML structure with the following pages:
Homepage (index.html)
- Hero header with responsive navigation
- Next meeting information (loaded from
current-meeting.json) - Optional topic image rendering (
topics[].picture) below the topic description - PowerShell terminal example
- About section
- Contact and social links
Events Page (events.html)
- Interactive calendar view showing all meetings
- Upcoming events section (prioritized - shown first)
- Past events section with recordings and materials
- Mobile-optimized event cards with touch-friendly buttons
The events page prioritizes future events by displaying "Kommende Treffen" before "Vergangene Treffen" for better user experience.
Ressourcen & Artikel (ressourcen/)
Wir bieten Tutorials und Skripte in der Ressourcen-Sektion an. Der Workflow fΓΌr neue Artikel ist vollstΓ€ndig per PowerShell automatisiert:
- FΓΌhre
./scripts/New-ResourceArticel.ps1aus. Das Skript fragt Titel, Slug und Meta-Description ab und erstellt eine fertige Vorlage in/ressourcen. - Trage den neuen Artikel auf der Γbersichtsseite in
ressourcen/index.htmlein. Diese Datei dient als die zentrale Single Source of Truth fΓΌr die Artikelreihenfolge. - FΓΌhre
./scripts/Update-ArticleNavigation.ps1aus. Dies durchsucht dieindex.htmlund generiert vΓΆllig automatisiert dynamische "ZurΓΌck/Weiter" Hyperlinks in jedem Artikel. - Trage den Artikel in der Sitemap (
sitemap.xml) ein (der SEO-PrΓΌferscripts/validate-seo.jsscannt neue Artikel automatisch).
π¨ Design System
The website uses a modern design system with:
- Colors: Primary blue (
#0073AE), accent orange (#FF4500) - Typography: Inter font family with JetBrains Mono for code blocks
- Spacing: Consistent spacing scale using CSS custom properties
- Components: Reusable button styles and card components
π Browser Support
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
π± Mobile First
The website is built with a mobile-first approach featuring:
- Enhanced Mobile Navigation: Glassmorphism hamburger menu with smooth animations
- Centered Logo: Properly centered logo on all mobile screen sizes
- Touch-Friendly Interface: Optimized button sizes and spacing for mobile devices
- Responsive Button Layout: All action buttons center correctly on mobile
- Smooth Transitions: Opacity/visibility-based animations for better performance
- Improved Accessibility: Enhanced focus states and keyboard navigation
- Responsive Breakpoints: Optimized layouts for different screen sizes (320px, 480px, 768px+)
βΏ Accessibility
- Semantic HTML structure
- ARIA labels and roles
- Keyboard navigation support
- Screen reader compatibility
- Color contrast compliance
- Skip links for navigation
π§ Deployment
The site is automatically deployed to GitHub Pages via GitHub Actions when changes are pushed to the main branch.
Manual Deployment
- Build the site:
npm run build - Commit and push changes
- GitHub Actions will handle the deployment
π Recent Improvements
Mobile Enhancements
- Fixed navigation: Logo centering and improved hamburger menu visibility
- Enhanced button layout: All call-to-action buttons now center properly on mobile
- Glassmorphism effects: Modern visual styling for navigation elements
- Smooth animations: Performance-optimized transitions using opacity/visibility
Data Structure Modernization
- Separated data files: Split single
meeting-data.jsoninto three focused files:current-meeting.json- Next meeting informationpast-events.json- Historical events with materials/recordingsupcoming-events.json- Planned future events
- Improved maintainability: Easier content management and better performance
- Enhanced error handling: Independent loading prevents single-point failures
User Experience Improvements
- Prioritized upcoming events: Events page now shows future meetings before past ones
- Interactive calendar: Visual calendar view with event indicators
- Better content organization: Clear separation between different types of content
π Analytics & Performance
- Lighthouse score optimization
- Core Web Vitals monitoring
- SEO best practices implementation
π€ Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and test them
- Run linting:
npm run validate - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin feature/your-feature - Submit a Pull Request
Code Style
- Use semantic HTML
- Follow CSS custom property naming conventions
- Ensure accessibility compliance
- Test on multiple devices and browsers
- Validate JSON files for syntax correctness
Data Structure Guidelines
- Current meeting data: Update
current-meeting.jsonbefore each meeting - Past events: Move completed meetings to
past-events.jsonwith materials/recordings - Future planning: Add planned events to
upcoming-events.json - Documentation: Update
MEETING-CONTENT.mdfor content changes,DATA-STRUCTURE.mdfor technical changes
π License
This project is licensed under the Creative Commons Attribution 3.0 License.
πββοΈ Support
- Discord: Join our Discord server
- GitHub Issues: Report bugs or request features
- Meetup: PSUGH Meetup Group
π Meeting Schedule
We meet every 3rd Friday of the month at:
Netz-Weise
Freundallee 13A
30173 Hannover
Next meeting: See psugh.org for current date
Made with β€οΈ by the PowerShell Usergroup Hannover community