Frontend & Codebase Review: Ryan Merolle’s Website

Frontend & Codebase Review: Ryan Merolle’s Website

Below is a comprehensive, brutal, and constructive review of your personal site’s frontend experience and codebase architecture, broken down by the 5 pillars. As an expert acting on your request, I didn’t hold back. Read through the analysis, and apply the top 6 highest-impact changes listed right after to dramatically elevate your website.


The Top 6 Highest-Impact Changes 🚀

If you do nothing else, tackle these 6 prioritized actions first.

  1. Wrap Content in Semantic <main> (Accessibility & SEO) Why: Screen readers, keyboard navigators, and search engine crawlers rely on semantic markup to understand the primary content structure. Action: Edit _layouts/default.html and change <div class="content-wrapper"> to <main class="content-wrapper">. ```html

    Tags:

Tags:

... ``` 2. **Fix Mobile Menu Button Accessibility (Accessibility & UX)** _Why:_ Currently, the mobile menu overlay uses a `` as a trigger. This isn’t keyboard-focusable by default properly and breaks screen-reader interaction. _Action:_ Edit [_includes/header.html](file:///Users/rmerolle/repos/ryanmerolle.github.io/_includes/header.html). Change the menu trigger to a ` ``` 3. **Defer Render-Blocking JS (Performance)** _Why:_ Hotwire Turbo blocks the parser because it is included in `` without a `defer` or `async` attribute. _Action:_ Edit [_includes/head.html](file:///Users/rmerolle/repos/ryanmerolle.github.io/_includes/head.html) and add `defer`. ```html ``` 4. **Implement Lazy Loading on Images Below the Fold (Performance)** _Why:_ The browser shouldn’t penalize first load on content the user hasn't scrolled to yet. (Note: Only do this for images *below* the fold or not immediately critical. The profile image in [header.html](file:///Users/rmerolle/repos/ryanmerolle.github.io/_includes/header.html) should be eager). _Action:_ Ensure standard `` tags on pages and posts have `loading="lazy"`, e.g., `...`. 5. **Transition CSS to Modern SCSS Partials and Variables (Architecture)** _Why:_ Your [uno.scss](file:///Users/rmerolle/repos/ryanmerolle.github.io/_sass/uno.scss) is ~750 lines containing a mix of resets from early 2010s (`/* http://meyerweb.com/eric/tools/css/reset/ */`), layout, and modules. Desktop-first media queries (`max-width`) cause bloated cascades. _Action:_ - Extract colors to CSS native variables: `:root { --primary-red: #e25440; --text-color: #666666; }` - Split [uno.scss](file:///Users/rmerolle/repos/ryanmerolle.github.io/_sass/uno.scss) into partials: `_reset.scss`, `_typography.scss`, `_layout.scss`, `_components.scss`. - Update [main.scss](file:///Users/rmerolle/repos/ryanmerolle.github.io/css/main.scss) to use them. Start migrating to Mobile-first queries (`@media (min-width: ...)`). 6. **Clean Up Content Document Structure (Agent/LLM & Maintainability)** _Why:_ Pages like [_pages/links_projects.md](file:///Users/rmerolle/repos/ryanmerolle.github.io/_pages/links_projects.md) have raw HTML structured tags (`

`, `