New Files
Components
src/components/shared/HeroImage.tsx- Optimized hero image with LCP priority settingssrc/components/manage/LazySelectableGrid.tsx- Lazy wrapper for @dnd-kit components
Utilities
src/utils/photoswipe.ts- Lazy loader for PhotoSwipe lightbox
SEO
src/app/sitemap.ts- Dynamic sitemap generationsrc/app/robots.ts- Robots.txt configuration
CI/CD
.husky/pre-commit- Pre-commit hooks (lint, typecheck, tests)
Documentation
docs/performance-optimization.md- Performance best practices guide
Modified Files
Configuration
next.config.ts- Added security headers, CSS optimization, AVIF/WebP formats, bundle analyzerpackage.json- Added scripts (analyze, typecheck, test:run, lint:fix), husky, lint-staged, cross-env
Components (Lazy Loading)
src/components/photo/PhotoWithLightbox.tsx- Use lazy PhotoSwipe loadersrc/components/manage/PhotoListItem.tsx- Use lazy PhotoSwipe loadersrc/components/photo/FullSizeGalleryButton.tsx- Use lazy PhotoSwipe loadersrc/components/shared/ClickableAvatar.tsx- Use lazy PhotoSwipe loadersrc/components/manage/PhotoGrid.tsx- Use LazySelectableGridsrc/components/manage/AlbumGrid.tsx- Use LazySelectableGridsrc/app/admin/events/[eventId]/page.tsx- Inline dynamic import for exifr
Accessibility
src/components/layout/Footer.tsx- Add aria-labels to social buttonssrc/components/photo/JustifiedPhotoGrid.tsx- Add aria-labels to photo linkssrc/components/events/EventCard.tsx- Fix color contrast on upcoming badge
Pages
src/app/page.tsx- Server-side hero image selection, HeroImage componentsrc/app/members/page.tsx- Add Suspense boundaries for streaming
CI/CD
.github/workflows/ci.yml- Add lint-and-typecheck job before tests
Documentation
README.md- Add pre-commit hooks and CI pipeline docsdocs/README.md- Add link to performance guide