<3/products/personal-site/app/videos/

page.tsx

import Link from "next/link";
import type { Metadata } from "next";
import { scenesMeta } from "@/remotion/scenes.meta";

export const metadata: Metadata = {
  title: "Videos",
  robots: { index: false },
};

// Index of every scene. Each links to its frame-by-frame inspector + exporter.
export default function VideosIndexPage() {
  return (
    <main className="page">
      <h1 style={{ marginBottom: "1rem" }}>Videos</h1>
      <p style={{ color: "var(--caption)", marginBottom: "2rem" }}>
        Each scene is a frame-driven Remotion composition — the same source that
        renders in the essays. Open one to inspect it frame by frame and export
        an MP4 for X.
      </p>
      <ul style={{ listStyle: "none", padding: 0, display: "flex", flexDirection: "column", gap: "0.5rem" }}>
        {scenesMeta.map((s) => (
          <li key={s.id}>
            <Link
              href={`/videos/${s.id}`}
              style={{ display: "flex", justifyContent: "space-between", padding: "0.85rem 1rem", border: "1px solid #e6e6e0", borderRadius: 12 }}
            >
              <span>{s.title}</span>
              <span style={{ color: "var(--caption)", fontVariantNumeric: "tabular-nums" }}>
                {s.width}×{s.height} · {(s.durationInFrames / s.fps).toFixed(0)}s
              </span>
            </Link>
          </li>
        ))}
      </ul>
    </main>
  );
}