~›projects›gabpaet.dev›page.tsx· 42 lines
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.