diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts
index c530ab3..7de91ce 100644
--- a/apps/web/next.config.ts
+++ b/apps/web/next.config.ts
@@ -3,6 +3,14 @@ import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
poweredByHeader: false,
+ async redirects() {
+ return [{
+ source: "/:path*",
+ has: [{ type: "host", value: "manyangles.hadlock.tech" }],
+ destination: "https://ma.hadlock.tech/:path*",
+ permanent: true,
+ }];
+ },
transpilePackages: [
"@album/contracts",
"@album/database",
diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx
index 2d05e97..c5b180a 100644
--- a/apps/web/src/app/page.tsx
+++ b/apps/web/src/app/page.tsx
@@ -1,4 +1,11 @@
import Link from "next/link";
+import Image from "next/image";
+import weddingExit from "@/assets/homepage/457677937.webp";
+import guestTunnel from "@/assets/homepage/599129661.webp";
+import firstDance from "@/assets/homepage/498647922.webp";
+import toast from "@/assets/homepage/240365594.webp";
+import guest from "@/assets/homepage/189193781.webp";
+import reception from "@/assets/homepage/208516668.webp";
import {
ArrowRightIcon,
CheckCircle2Icon,
@@ -11,7 +18,7 @@ import { createServerCaller } from "@/trpc/server";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { BrandMark } from "@/components/brand-mark";
-import { formatEventDate } from "@/lib/utils";
+import { cn, formatEventDate } from "@/lib/utils";
import {
Card,
CardContent,
@@ -41,6 +48,15 @@ const features = [
},
] as const;
+const previewPhotos = [
+ { src: guest, layout: "row-span-2", position: "50% 40%" },
+ { src: firstDance, layout: "col-span-2", position: "50% 45%" },
+ { src: toast, layout: "", position: "50% 50%" },
+ { src: guestTunnel, layout: "row-span-2", position: "50% 50%" },
+ { src: reception, layout: "", position: "65% 50%" },
+ { src: weddingExit, layout: "", position: "50% 50%" },
+] as const;
+
function AlbumPreview() {
return (
@@ -62,12 +78,20 @@ function AlbumPreview() {
-
-
-
-
-
-
+ {previewPhotos.map((photo, index) => (
+
+
+
+ ))}
diff --git a/apps/web/src/assets/homepage/189193781.webp b/apps/web/src/assets/homepage/189193781.webp
new file mode 100644
index 0000000..0aa4c4b
Binary files /dev/null and b/apps/web/src/assets/homepage/189193781.webp differ
diff --git a/apps/web/src/assets/homepage/208516668.webp b/apps/web/src/assets/homepage/208516668.webp
new file mode 100644
index 0000000..a43022d
Binary files /dev/null and b/apps/web/src/assets/homepage/208516668.webp differ
diff --git a/apps/web/src/assets/homepage/240365594.webp b/apps/web/src/assets/homepage/240365594.webp
new file mode 100644
index 0000000..2ff734f
Binary files /dev/null and b/apps/web/src/assets/homepage/240365594.webp differ
diff --git a/apps/web/src/assets/homepage/457677937.webp b/apps/web/src/assets/homepage/457677937.webp
new file mode 100644
index 0000000..7f375ab
Binary files /dev/null and b/apps/web/src/assets/homepage/457677937.webp differ
diff --git a/apps/web/src/assets/homepage/498647922.webp b/apps/web/src/assets/homepage/498647922.webp
new file mode 100644
index 0000000..09e0d7d
Binary files /dev/null and b/apps/web/src/assets/homepage/498647922.webp differ
diff --git a/apps/web/src/assets/homepage/599129661.webp b/apps/web/src/assets/homepage/599129661.webp
new file mode 100644
index 0000000..f782f95
Binary files /dev/null and b/apps/web/src/assets/homepage/599129661.webp differ
diff --git a/apps/web/src/assets/homepage/README.md b/apps/web/src/assets/homepage/README.md
new file mode 100644
index 0000000..b081081
--- /dev/null
+++ b/apps/web/src/assets/homepage/README.md
@@ -0,0 +1,17 @@
+# Homepage photography
+
+Adobe Stock web renditions downloaded 2026-09-09 through the account's included
+Education License. Original JPEGs remain outside the repository in Downloads.
+Confirm the university license permits the intended public/commercial use before
+using these images commercially. These assets are not covered by the code license
+and must not be redistributed as standalone stock assets.
+
+- 189193781: candid wedding guest
+- 208516668: reception setting
+- 240365594: champagne toast
+- 457677937: wedding ceremony exit
+- 498647922: first dance
+- 599129661: guests' wedding exit tunnel
+
+Source pages: `https://stock.adobe.com/images/{asset-id}`.
+Renditions: auto-oriented, metadata stripped, bounded to 1000px, WebP quality 80.