5.9 KiB
Movie Corner Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Add a /movie-corner page with a cinematic hero section and a full-height iframe embedding the external movie reviews site.
Architecture: Two-task implementation — navbar link first, then the page itself. The page is a single static component: a fixed-height hero section followed by an iframe that grows to fill all remaining viewport height via flexbox.
Tech Stack: Next.js 15 (App Router), Tailwind CSS v4, TypeScript
File Map
| File | Action | Responsibility |
|---|---|---|
components/navbar.tsx |
Modify | Add "Movie Corner" nav link |
app/movie-corner/page.tsx |
Create | Full page: metadata + hero + iframe |
Task 1: Add "Movie Corner" to the navbar
Files:
- Modify:
components/navbar.tsx
The navLinks array currently has: Home, K-Suite, Projects, Blog, About. Insert Movie Corner between Projects and Blog.
- Step 1: Edit
components/navbar.tsx
Find this block:
const navLinks = [
{ href: "/", label: "Home" },
{ href: "/k-suite", label: "K-Suite" },
{ href: "/projects", label: "Projects" },
{
href: "https://blog.gabrielkaszewski.dev/",
label: "Blog",
external: true,
},
{ href: "/about", label: "About" },
];
Replace with:
const navLinks = [
{ href: "/", label: "Home" },
{ href: "/k-suite", label: "K-Suite" },
{ href: "/projects", label: "Projects" },
{ href: "/movie-corner", label: "Movie Corner" },
{
href: "https://blog.gabrielkaszewski.dev/",
label: "Blog",
external: true,
},
{ href: "/about", label: "About" },
];
- Step 2: Type-check
npx tsc --noEmit
Expected: no errors.
- Step 3: Commit
git add components/navbar.tsx
git commit -m "feat: add Movie Corner to navbar"
Task 2: Create the Movie Corner page
Files:
- Create:
app/movie-corner/page.tsx
The page is a min-h-screen flex flex-col container with pt-20 gravity-body (matching all other pages). The hero takes its natural height; the iframe section has flex-1 so it fills the rest.
- Step 1: Create
app/movie-corner/page.tsx
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Movie Corner | Gabriel Kaszewski",
description:
"My personal cinema journal — what I watch and how I feel about it.",
};
const MOVIE_REVIEWS_URL =
"https://movies.gabrielkaszewski.dev/users/5d253151-0f6a-4246-9bc5-cb0b5869731b";
const genres = ["Sci-Fi", "Drama", "Family"];
export default function MovieCornerPage() {
return (
<div className="min-h-screen flex flex-col pt-20 gravity-body">
<section className="py-12 px-4 text-center relative">
<div className="absolute inset-0 flex justify-center pointer-events-none">
<div className="w-64 h-32 bg-yellow-400/10 blur-3xl rounded-full mt-4" />
</div>
<div className="relative">
<div className="text-5xl mb-4">🎬</div>
<h1 className="text-4xl md:text-6xl font-bold tracking-widest text-yellow-400 uppercase mb-3">
Movie Corner
</h1>
<p className="text-white/60 text-base md:text-lg mb-8">
What I watch, what I think. A personal cinema journal.
</p>
<blockquote className="border-l-2 border-yellow-400/50 bg-white/5 backdrop-blur-sm rounded-r-lg px-6 py-4 max-w-xl mx-auto text-left mb-8">
<p className="text-white/80 text-sm italic leading-relaxed mb-2">
“I'd only give one piece of advice to anyone marrying.
We're all quite similar in the end. We all get old and tell
the same tales too many times. But try and marry someone
kind.”
</p>
<cite className="text-yellow-400/70 text-xs not-italic">
— About Time, 2013
</cite>
</blockquote>
<div className="flex justify-center gap-3 flex-wrap">
{genres.map((genre, i) => (
<span
key={genre}
className={`px-4 py-1.5 rounded-full text-sm border ${
i === 0
? "bg-yellow-400/10 border-yellow-400/40 text-yellow-400"
: "bg-white/5 border-white/15 text-white/70"
}`}
>
{genre}
</span>
))}
</div>
</div>
</section>
<section className="flex-1 flex flex-col border-t border-white/10 min-h-0">
<iframe
src={MOVIE_REVIEWS_URL}
title="Gabriel's Movie Reviews"
className="flex-1 w-full min-h-0"
/>
<div className="py-3 text-center">
<a
href={MOVIE_REVIEWS_URL}
target="_blank"
rel="noopener noreferrer"
className="text-yellow-400/70 text-xs hover:text-yellow-400 transition-colors"
>
Open reviews directly →
</a>
</div>
</section>
</div>
);
}
- Step 2: Type-check
npx tsc --noEmit
Expected: no errors.
- Step 3: Verify dev server renders the page
bun run dev
Open http://localhost:3000/movie-corner. Verify:
-
Navbar shows "Movie Corner" highlighted in yellow
-
Hero: 🎬 icon, "MOVIE CORNER" title in yellow, tagline, quote card with left yellow border, three genre chips (Sci-Fi yellow, Drama + Family glass)
-
Iframe fills remaining screen height with the movie reviews site
-
"Open reviews directly →" link visible at the bottom
-
Step 4: Commit
git add app/movie-corner/page.tsx
git commit -m "feat: add movie-corner page with cinematic hero and embedded reviews"