chore: production readiness audit
- Move plans/ to dev-docs/, delete unused scaffold SVGs - Create .dockerignore, rename container to immich-folio - Extract BackLink component and toPhotoItems() helper in page.tsx - Add keyboard accessibility (role=button, tabIndex, onKeyDown) to PhotoGrid - Add aria-label to Lightbox EXIF toggle - Fix React lint: replace setState-in-effect with useState initializer - Add rate limiting to /api/auth (brute-force protection, 10 RPM) - Add HSTS and X-DNS-Prefetch-Control security headers - Add Secure flag to auth cookie in production - New unit tests: rate-limit.test.ts (5), auth.test.ts (12) - All 47 tests pass, 0 lint errors, build clean
This commit is contained in:
29
components/BackLink.tsx
Normal file
29
components/BackLink.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* BackLink — reusable "← Back to X" navigation link.
|
||||
* Used in album headers to navigate back to a parent subpage or homepage.
|
||||
*/
|
||||
|
||||
import Link from 'next/link';
|
||||
|
||||
interface BackLinkProps {
|
||||
href: string;
|
||||
label: string;
|
||||
}
|
||||
|
||||
export function BackLink({ href, label }: BackLinkProps) {
|
||||
return (
|
||||
<Link href={href} className="album-header__back">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
>
|
||||
<polyline points="15 18 9 12 15 6" />
|
||||
</svg>
|
||||
{label}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
@@ -252,4 +252,4 @@
|
||||
|
||||
.image {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +203,11 @@ export function Lightbox({ assets, currentIndex, onClose, onNext, onPrev }: Ligh
|
||||
</div>
|
||||
|
||||
{/* EXIF toggle */}
|
||||
<button className={styles.infoToggle} onClick={handleExifToggle}>
|
||||
<button
|
||||
className={styles.infoToggle}
|
||||
onClick={handleExifToggle}
|
||||
aria-label="Toggle photo info"
|
||||
>
|
||||
{showExif ? 'Hide Info' : 'Info'}
|
||||
</button>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user