Overall: Well-organized. Follows Eleventy conventions cleanly.
entries/ (content), _includes/ (templates), _data/ (config), assets/ (static)_data/settings.yamllayouts/ and components/ subdirs_includes/assets/ and compiled inline — avoids extra network requestsdocs/ folder for non-technical editorspackage.json name is halide — leftover from a starter template. Misleading.projects/ dir at repo root — appears to be a legacy/unused directory alongside entries/projects/. Needs confirmation.stackbit.config.ts present — Stackbit CMS shows no active integration in templates or netlify.toml. Likely dead weight.Local Development Workflow.md at root — duplicates content already in docs/. Could be consolidated..eleventy.js lines 87–92) — re-fetches remote images on every build. Should be re-enabled.Overall: The system works well. Drop a folder + markdown file, get a page. A few rough edges.
entries/projects/ → individual pages at /project/{slug}//index/header.jpg, thumb.jpg, or any image in folder)_template-*) inside each entry type serve as authoring guides.md file, page appearsallCategories and allEntryTypes collections in .eleventy.js — filters self-update as content is addedcasa-marianella — markdown body references "Wolf Creek Ranch" copy, suggesting a copy-paste error during entry creation.position field requires manual management — no guard against duplicate positions. A large number of entries could be hard to sort manually.slug: override field would help.year vs date field relationship undocumented — projects support both, but the relationship (display vs. sort) is not explained for editors.settings.yaml: avif.enabled: false) — WebP is enabled. AVIF would meaningfully reduce image sizes but is disabled for compatibility.Strengths:
fonts.gstatic.com in <head>Issues:
robots.txt — without this, crawlers are unguided. Netlify doesn't auto-generate one.sitemap.xml — standard SEO requirement. No 11ty sitemap plugin configured. Should be added via @11ty/eleventy-plugin-sitemap or a simple template..eleventy.js lines 87–92) — should be re-enabled.base.css is ~25KB — contains many spacing utilities that may have low utilization. Could be pruned with PurgeCSS if Lighthouse flags unused CSS.settings.yaml: site_ga4_id is empty) — analytics silently not running..eleventy.js line 295: Google Fonts CSS fetched remotely at build time but font files are not cached locally — acknowledged but unresolved.Strengths:
lang attribute on <html> ✓<main> landmark present ✓aria-label="Main navigation" on nav ✓aria-expanded on mobile menu button ✓prefers-reduced-motion media query in CSS ✓alt text derived from thumbnail.alt or title ✓rel="noopener" ✓Issues:
_includes/components/indexFilters.njk line 17) — uses a <span>. Needs role="button" + tabindex="0" + keydown handler, or replace with <button>.:focus-visible style — CSS does not explicitly style focus on the hamburger button._includes/components/indexRow.njk line 18) — entry names are <span> elements. Could be <h2> or <h3> for screen reader navigation.project.njk (lines 96–100) lack <figure> wrapper — <figcaption> used without parent <figure>, which is invalid HTML per spec.dark_mode.js line 18) — targets .dark-toggle class to set .checked, which is a property only on <input> elements. Likely works incidentally but is fragile.dark_mode.js — uses == instead of ===.indexFilters.njk line 19: style="display: none;") — should use a CSS class.link: fields point to real, established domains (archleague.org, aiaaustin.org, architectmagazine.com, austindesignweek.org, soa.utexas.edu)assets/uploads/favicon.svg exists and is referenced correctlywolf-creek-ranch (20 images) and casa-marianella (3 images) are present on diskrobots.txt — not present, not generatedsitemap.xml — not present, not generatedsettings.yaml — analytics silently disabled| Priority | Issue | File |
|---|---|---|
| High | Missing robots.txt | (needs to be created) |
| High | Missing sitemap.xml | (needs plugin or template) |
| High | Casa Marianella body copy is wrong | entries/projects/casa-marianella/casa-marianella.md |
| High | Gallery <figcaption> without <figure> | _includes/layouts/project.njk lines 96–100 |
| Medium | Filter "show more" toggle not keyboard accessible | _includes/components/indexFilters.njk line 17 |
| Medium | Mobile menu button lacks :focus-visible | _includes/assets/css/base.css |
| Medium | Image cache commented out | .eleventy.js lines 87–92 |
| Medium | package.json name is halide (leftover) | package.json |
| Medium | stackbit.config.ts appears unused | stackbit.config.ts |
| Medium | projects/ root dir may be legacy dead code | projects/ |
| Low | GA4 ID not set | _data/settings.yaml |
| Low | AVIF disabled | _data/settings.yaml |
| Low | Loose equality in dark_mode.js | _includes/assets/js/dark_mode.js |
| Low | base.css ~25KB — unused utilities possible | _includes/assets/css/base.css |
| Low | Local Development Workflow.md duplicates docs/ | root |