123456789101112131415161718192021222324252627282930313233343536373839404142
// app/page.tsx — gabpaet.dev portfolio root.
// next.js 15 · react 19 · tailwind. shipped solo, 2026.
import { Metadata } from "next";
import { FileTree } from "@/components/file-tree";
import { Editor } from "@/components/editor";
import { CommandPalette } from "@/components/command-palette";
import { files, fileOrder } from "@/content/files";
export const metadata: Metadata = {
title: "Gabriel Joshua Paet — Senior Programmer",
description: "9 years shipping. AI · automation · DevOps · web.",
};
export default function Page() {
return (
<main className="ide grid h-screen">
<TitleBar path="~/portfolio" />
<FileTree
order={fileOrder}
files={files}
onOpen={(id) => openFile(id)}
/>
<Editor
active={active}
tabs={openTabs}
file={files[active]}
/>
<CommandPalette
shortcut={["mod+k", "mod+p"]}
items={fileOrder.map((id) => files[id])}
/>
<StatusBar where="pasay · utc+8" />
</main>
);
}
// see ./components/* for the actual rendering. this is the assembly.