diff --git a/.vscode/settings.json b/.vscode/settings.json index 84c45555..1a06b433 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,6 +18,7 @@ "headlessui", "hgetall", "hset", + "jpgs", "Lightbox", "Makernote", "nanoids", diff --git a/README.md b/README.md index c70f6e41..ae89be66 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,18 @@ Installation 1. Open project on Vercel 2. Click "Analytics" tab -3. Follow "Enable Web Analytics" instructions (`@vercel/analytics` is already part of your project) +3. Follow "Enable Web Analytics" instructions (`@vercel/analytics` already included) -### 6. Optional configuration +### 6. Add Speed Insights (optional) -- `NEXT_PUBLIC_PRO_MODE = 1` enables higher quality image storage (results in increased storage usage) -- `NEXT_PUBLIC_STATICALLY_OPTIMIZE = 1` enables PPR and static optimization, i.e., building pages ahead of time (results in increased storage usage)—⚠️ _Experimental_ +1. Open project on Vercel +2. Click "Speed Insights" tab +3. Follow "Enable Speed Insights" instructions (`@vercel/speed-insights` already included) + +### 7. Optional configuration + +- `NEXT_PUBLIC_PRO_MODE = 1` enables higher quality image storage for jpgs (will result in increased storage usage) +- `NEXT_PUBLIC_STATICALLY_OPTIMIZE = 1` enables PPR and static optimization, i.e., building pages ahead of time (will results in increased storage usage)—⚠️ _Experimental_ - `NEXT_PUBLIC_BLUR_DISABLED = 1` prevents image blur data being stored and displayed (potentially useful for limiting Postgres usage) - `NEXT_PUBLIC_GEO_PRIVACY = 1` disables collection/display of location-based data - `NEXT_PUBLIC_IGNORE_PRIORITY_ORDER = 1` prevents `priority_order` field affecting photo order diff --git a/next.config.js b/next.config.js index a18d28c6..f404c1a0 100644 --- a/next.config.js +++ b/next.config.js @@ -2,14 +2,14 @@ const VERCEL_BLOB_STORE_ID = process.env.BLOB_READ_WRITE_TOKEN?.match( /^vercel_blob_rw_([a-z0-9]+)_[a-z0-9]+$/i, )?.[1].toLowerCase(); -const VERCEL_BLOB_HOSTNAME = VERCEL_BLOB_STORE_ID +const HOSTNAME_VERCEL_BLOB = VERCEL_BLOB_STORE_ID ? `${VERCEL_BLOB_STORE_ID}.public.blob.vercel-storage.com` : undefined; -const CLOUDFLARE_R2_HOSTNAME = +const HOSTNAME_CLOUDFLARE_R2 = process.env.NEXT_PUBLIC_CLOUDFLARE_R2_PUBLIC_DOMAIN; -const AWS_S3_HOSTNAME = +const HOSTNAME_AWS_S3 = process.env.NEXT_PUBLIC_AWS_S3_BUCKET && process.env.NEXT_PUBLIC_AWS_S3_REGION // eslint-disable-next-line max-len @@ -30,9 +30,9 @@ const nextConfig = { images: { imageSizes: [200], remotePatterns: [] - .concat(createRemotePattern(VERCEL_BLOB_HOSTNAME)) - .concat(createRemotePattern(CLOUDFLARE_R2_HOSTNAME)) - .concat(createRemotePattern(AWS_S3_HOSTNAME)), + .concat(createRemotePattern(HOSTNAME_VERCEL_BLOB)) + .concat(createRemotePattern(HOSTNAME_CLOUDFLARE_R2)) + .concat(createRemotePattern(HOSTNAME_AWS_S3)), minimumCacheTTL: 31536000, }, ...process.env.NEXT_PUBLIC_STATICALLY_OPTIMIZE === '1' && { diff --git a/src/admin/AdminPhotoMenuClient.tsx b/src/admin/AdminPhotoMenuClient.tsx index 6f72e2b1..1ac25252 100644 --- a/src/admin/AdminPhotoMenuClient.tsx +++ b/src/admin/AdminPhotoMenuClient.tsx @@ -22,15 +22,15 @@ export default function AdminPhotoMenuClient({ , + label: 'Edit', + icon: , href: pathForAdminPhotoEdit(photo.id), }, { label: isFav ? 'Unfavorite' : 'Favorite', icon: isFav ? : } + + + }