app/page.tsx
"use client";
import Image from "next/image";
import { motion } from "framer-motion";
export default function Portfolio() {
return (
<main className="min-h-dvh bg-white">
<Image
alt="Mehrad Karampour"
fill
priority
/>
<motion.section layout>
<h1>MEHRAD</h1>
</motion.section>
</main>
);
}app/layout.tsx
import type { Metadata } from "next";
import { Geist } from "next/font/google";
const geist = Geist({
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "Mehrad Karampour",
description: "Senior Full Stack Software Engineer",
};lib/projects.ts
import { cache } from "react";
export const getSelectedWork = cache(async () => {
return [
"WELLWORKS",
"Zildo",
"ZilChat",
];
});
export const metadata = {
title: "Mehrad Karampour",
description: "Creative developer portfolio",
};components/reveal.tsx
const reveal = {
hidden: { opacity: 0, y: 18 },
visible: { opacity: 1, y: 0 },
};
<motion.article
initial="hidden"
animate="visible"
variants={reveal}
transition={{ ease: "easeOut" }}
/>Senior Full Stack Software Engineer
MEHRAD
KARAMPOUR

