Skip to content

Comments

feat: complete SEO-optimized GitHub Pages website (#232)#233

Merged
mholzi merged 1 commit intomainfrom
feat/232-github-pages
Feb 21, 2026
Merged

feat: complete SEO-optimized GitHub Pages website (#232)#233
mholzi merged 1 commit intomainfrom
feat/232-github-pages

Conversation

@mholzi
Copy link
Owner

@mholzi mholzi commented Feb 21, 2026

Summary

Replaces the minimal docs/index.html with a full, SEO-compliant landing page for https://mholzi.github.io/beatify/.

Closes #232

Files Changed

File Description
docs/index.html Full rewrite — semantic HTML, all SEO tags, 8 content sections
docs/css/style.css Extracted CSS — dark theme, mobile-first, responsive, hover animations
docs/js/main.js Vanilla JS — smooth scroll, active nav highlighting
docs/sitemap.xml XML sitemap
docs/robots.txt robots.txt with sitemap reference
.github/workflows/pages.yml GitHub Actions — auto-deploy docs/ to gh-pages branch on push to main

SEO Features

  • ✅ Meta tags: title, description, keywords, author
  • ✅ Open Graph tags (og:title, og:description, og:image, og:url, og:type)
  • ✅ Twitter Card tags
  • ✅ JSON-LD / Schema.org (SoftwareApplication)
  • ✅ Canonical URL
  • ✅ Semantic HTML (<header>, <nav>, <main>, <article>, <section>, <footer>, h1–h3 hierarchy)
  • lang="en" on <html>
  • ✅ Alt text on all images
  • ✅ Preconnect hints for shields.io + GitHub

Performance

  • ✅ No external JS/CSS libraries
  • ✅ CSS in separate file (browser caching)
  • ✅ Minimal render-blocking resources
  • ✅ Image width/height attrs to prevent layout shift

Page Sections

  1. Header/Nav — logo + section links (Features, Install, Community)
  2. Hero — H1, tagline, HACS install button, GitHub stars badge
  3. Features Grid — 6 features with icons
  4. Badges Row — GitHub Stars, HACS Downloads, Version, License (shields.io)
  5. Install Section — HACS one-click + manual steps
  6. Screenshots — 3 placeholder slots for #beatify-content to fill
  7. Community — GitHub Discussions, Discord, Issues
  8. Footer — MIT License, GitHub link

Notes for #beatify-content

Screenshot placeholders are in docs/index.html under <section id="screenshots">. Each <div class="screenshot-placeholder"> has a <!-- TODO: beatify-content --> comment and can be replaced with an <img> tag.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gemini-code-assist
Copy link

Summary of Changes

Hello @mholzi, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly upgrades the project's GitHub Pages presence by replacing the minimal index.html with a fully-featured, SEO-optimized landing page. The changes aim to enhance discoverability, improve user experience with a modern design and interactive elements, and provide comprehensive information about the Beatify project. The new page is designed to be performant and accessible, featuring a dark theme and responsive layouts.

Highlights

  • Comprehensive Landing Page: Implemented a complete, SEO-optimized landing page for GitHub Pages, replacing the previous minimal index.html.
  • Enhanced Styling and Interactivity: Introduced a new CSS file (docs/css/style.css) for comprehensive styling, including dark theme and mobile-first responsiveness, and a new JavaScript file (docs/js/main.js) for smooth scrolling and improved badge image loading.
  • Improved Search Engine Discoverability: Added docs/sitemap.xml and docs/robots.txt to guide search engines and enhance the page's visibility.
  • Extensive SEO Integration: Integrated a wide range of SEO features, including meta tags, Open Graph, Twitter Cards, JSON-LD structured data, canonical URLs, and semantic HTML.
  • Performance Optimization: Focused on performance by avoiding external JavaScript/CSS libraries, separating CSS for better caching, and optimizing image attributes to prevent layout shifts.
  • Structured Content Presentation: Organized the page into eight distinct content sections (Header/Nav, Hero, Features Grid, Badges Row, Install, Screenshots, Community, Footer) for better user experience and information flow.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • docs/css/style.css
    • Defined CSS variables for consistent theming, including primary/secondary backgrounds, text colors, and accent colors.
    • Implemented a global CSS reset and base styles for HTML and body elements.
    • Styled various sections of the landing page, including header, navigation, hero, features, badges, installation instructions, screenshots, community links, and footer.
    • Added responsive media queries to ensure optimal display on tablet (900px) and mobile (600px) devices.
  • docs/index.html
    • Updated the <head> section with extensive SEO metadata, including description, keywords, author, Open Graph tags, Twitter Card tags, and a canonical URL.
    • Added preconnect hints for external resources like img.shields.io and github.com to improve loading performance.
    • Included JSON-LD structured data for SoftwareApplication to provide rich snippets in search results.
    • Refactored the entire <body> into a semantic HTML structure using <header>, <main>, <article>, <section>, and <footer> elements.
    • Integrated a sticky navigation bar with smooth scroll links to different sections of the page.
    • Added new content sections: a Hero section with call-to-action buttons and a screenshot placeholder, a Features grid, a Badges row displaying project metrics, detailed Install instructions (HACS and manual), a Screenshots gallery with placeholders, and a Community section with links to discussions, Discord, and issues.
    • Updated the footer with MIT License and GitHub repository links.
    • Linked to the newly created css/style.css and js/main.js files.
  • docs/js/main.js
    • Implemented a initSmoothScroll function to provide smooth scrolling behavior for anchor links, with a fallback for browsers not supporting CSS scroll-behavior.
    • Implemented an initBadgeLoading function to handle the loading and error states of badge images, gracefully hiding broken badges.
    • Ensured that the JavaScript functions are initialized once the DOM is fully loaded.
  • docs/robots.txt
    • Created a robots.txt file to instruct search engine crawlers, allowing access to all content and specifying the location of the sitemap.
  • docs/sitemap.xml
    • Generated an XML sitemap (sitemap.xml) listing the main page URL, including lastmod, changefreq, and priority attributes to aid search engine indexing.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/pages.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request significantly improves the project's web presence with a semantic, SEO-friendly landing page. The use of JSON-LD and Open Graph tags is excellent. However, there is a language inconsistency between the meta tags/title (English) and the page content (German), which should be addressed to ensure the best SEO performance. Additionally, some minor improvements in JavaScript variable declarations and link targets are recommended.

Comment on lines +6 to +7
<title>Beatify - Multiplayer Music Trivia for Home Assistant</title>
<meta name="description" content="Beatify is an open-source multiplayer music trivia quiz for Home Assistant. Play with friends on Sonos, Alexa, or Music Assistant. HACS compatible.">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The page title and meta description are written in English, while the primary content of the page (headings, features, and instructions) is in German. For optimal SEO and accessibility, the metadata should match the language of the page content. Additionally, the lang attribute on the <html> tag should be updated to de to reflect the content language.

<header class="header">
<div class="container">
<nav class="nav" aria-label="Main navigation">
<a href="#" class="logo" aria-label="Beatify Home">🎵 Beatify</a>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using href="#" for the logo link is not ideal for SEO or navigation. It is better to use the absolute URL or a relative path to the root of the site.

Suggested change
<a href="#" class="logo" aria-label="Beatify Home">🎵 Beatify</a>
<a href="https://mholzi.github.io/beatify/" class="logo" aria-label="Beatify Home">🎵 Beatify</a>

Comment on lines +13 to +16
var targetId = this.getAttribute('href');
if (targetId === '#') return;

var target = document.querySelector(targetId);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Consider using const instead of var for variable declarations to adhere to modern JavaScript (ES6+) standards and improve code clarity.

Suggested change
var targetId = this.getAttribute('href');
if (targetId === '#') return;
var target = document.querySelector(targetId);
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const target = document.querySelector(targetId);

@mholzi mholzi merged commit fd4890f into main Feb 21, 2026
5 checks passed
@mholzi mholzi deleted the feat/232-github-pages branch February 21, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Neue vollständige SEO-konforme Website (GitHub Pages)

1 participant