From 19a74e6f73ad6e94f871bd42147d78a82b4410e9 Mon Sep 17 00:00:00 2001 From: pinkytoefoo Date: Sun, 6 Sep 2026 20:17:35 -0400 Subject: [PATCH 1/9] add: my route --- apps/blade/src/app/adrian-garced/page.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 apps/blade/src/app/adrian-garced/page.tsx diff --git a/apps/blade/src/app/adrian-garced/page.tsx b/apps/blade/src/app/adrian-garced/page.tsx new file mode 100644 index 000000000..5fa436168 --- /dev/null +++ b/apps/blade/src/app/adrian-garced/page.tsx @@ -0,0 +1,13 @@ + + + + +export default async function AdrianG() { + + + return ( +
+

wasssaaa

+
+ ); +} \ No newline at end of file From d0eca39dd40bd924ea28720e3843ab783e9faba8 Mon Sep 17 00:00:00 2001 From: pinkytoefoo Date: Mon, 7 Sep 2026 12:05:30 -0400 Subject: [PATCH 2/9] dev page, icons, navbar --- apps/blade/src/app/adrian-garced/icons.tsx | 15 ++++++++++ apps/blade/src/app/adrian-garced/page.tsx | 35 ++++++++++++++++++---- pnpm-lock.yaml | 23 +++++++++----- 3 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 apps/blade/src/app/adrian-garced/icons.tsx diff --git a/apps/blade/src/app/adrian-garced/icons.tsx b/apps/blade/src/app/adrian-garced/icons.tsx new file mode 100644 index 000000000..e340ebc5e --- /dev/null +++ b/apps/blade/src/app/adrian-garced/icons.tsx @@ -0,0 +1,15 @@ +export function GithubIcon({ size = 24, ...props }: React.SVGProps & { size?: number }) { + return ( + + + + ); +} + +export function CodebergIcon({ size = 24, ...props }: React.SVGProps & { size?: number }) { + return ( + + + + ); +} \ No newline at end of file diff --git a/apps/blade/src/app/adrian-garced/page.tsx b/apps/blade/src/app/adrian-garced/page.tsx index 5fa436168..5f2af2d2b 100644 --- a/apps/blade/src/app/adrian-garced/page.tsx +++ b/apps/blade/src/app/adrian-garced/page.tsx @@ -1,13 +1,38 @@ - - +// import { +// Github, +// Code +// } from "lucide-react"; +import { + GithubIcon, + CodebergIcon +} from "./icons" export default async function AdrianG() { - + return ( -
-

wasssaaa

+
+ +

); } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 280b059b5..559e0c40d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -569,7 +569,7 @@ importers: version: 2.5.1(@types/emscripten@1.41.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) geist: specifier: ^1.7.0 - version: 1.7.0(next@16.2.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 1.7.0(next@16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) lucide-react: specifier: ^0.575.0 version: 0.575.0(react@19.2.4) @@ -591,6 +591,9 @@ importers: recharts: specifier: ^3.7.0 version: 3.7.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@18.3.1)(react@19.2.4)(redux@5.0.1) + simple-icons: + specifier: ^16.30.0 + version: 16.30.0 superjson: specifier: 2.2.6 version: 2.2.6 @@ -702,7 +705,7 @@ importers: version: 12.34.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) geist: specifier: ^1.7.0 - version: 1.7.0(next@16.2.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 1.7.0(next@16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) gsap: specifier: ^3.14.2 version: 3.14.2 @@ -972,7 +975,7 @@ importers: version: 12.34.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) geist: specifier: ^1.7.0 - version: 1.7.0(next@16.2.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 1.7.0(next@16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) gsap: specifier: ^3.14.2 version: 3.14.2 @@ -1087,7 +1090,7 @@ importers: version: 12.34.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) geist: specifier: ^1.7.0 - version: 1.7.0(next@16.2.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 1.7.0(next@16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) gsap: specifier: ^3.14.2 version: 3.14.2 @@ -2682,11 +2685,11 @@ packages: '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} - deprecated: 'Merged into tsx: https://tsx.is' + deprecated: 'Merged into tsx: https://tsx.hirok.io' '@esbuild-kit/esm-loader@2.6.5': resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} - deprecated: 'Merged into tsx: https://tsx.is' + deprecated: 'Merged into tsx: https://tsx.hirok.io' '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -9737,6 +9740,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-icons@16.30.0: + resolution: {integrity: sha512-YX/HmgEqjpn5Zs3myzKp8ek5Ti+TdrkvNWn9skGLetg9tOg0cTjYizj9ESAYJn4xwc0GQYVGzQxBELDfbxq7WQ==} + engines: {node: '>=0.12.18'} + simple-xml-to-json@1.2.3: resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} engines: {node: '>=20.12.2'} @@ -16356,7 +16363,7 @@ snapshots: transitivePeerDependencies: - supports-color - geist@1.7.0(next@16.2.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)): + geist@1.7.0(next@16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)): dependencies: next: 16.2.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -18918,6 +18925,8 @@ snapshots: signal-exit@4.1.0: {} + simple-icons@16.30.0: {} + simple-xml-to-json@1.2.3: {} sisteransi@1.0.5: {} From 4f2061699367abe70b725b748a170ad18b58300e Mon Sep 17 00:00:00 2001 From: pinkytoefoo Date: Tue, 8 Sep 2026 01:08:57 -0400 Subject: [PATCH 3/9] [feat]: motion animation, hobby project cards. TODO: selected projects, resume, personal website --- apps/blade/package.json | 1 + .../app/_components/adrian-garced/navbar.tsx | 68 +++++++ apps/blade/src/app/adrian-garced/page.tsx | 177 +++++++++++++++--- apps/blade/src/app/layout.tsx | 3 + apps/blade/tailwind.config.ts | 11 ++ pnpm-lock.yaml | 63 ++++++- 6 files changed, 285 insertions(+), 38 deletions(-) create mode 100644 apps/blade/src/app/_components/adrian-garced/navbar.tsx diff --git a/apps/blade/package.json b/apps/blade/package.json index 5d96bcc78..ba4126a5f 100644 --- a/apps/blade/package.json +++ b/apps/blade/package.json @@ -51,6 +51,7 @@ "lucide-react": "^0.575.0", "luxon": "^3.7.2", "monaco-editor": "^0.56.0", + "motion": "^13.2.0", "next": "^16.2.11", "react": "^19.2.4", "react-dom": "^19.2.4", diff --git a/apps/blade/src/app/_components/adrian-garced/navbar.tsx b/apps/blade/src/app/_components/adrian-garced/navbar.tsx new file mode 100644 index 000000000..3af152f1a --- /dev/null +++ b/apps/blade/src/app/_components/adrian-garced/navbar.tsx @@ -0,0 +1,68 @@ +import { + GithubIcon, + CodebergIcon +} from "~/app/adrian-garced/icons" + +import { + Github, + FileUser, + FileUserIcon +} from "lucide-react" + +import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from "@forge/ui/tooltip"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@forge/ui/card"; + +export default function Navbar() { + return ( + + ); +} \ No newline at end of file diff --git a/apps/blade/src/app/adrian-garced/page.tsx b/apps/blade/src/app/adrian-garced/page.tsx index 5f2af2d2b..be27397b3 100644 --- a/apps/blade/src/app/adrian-garced/page.tsx +++ b/apps/blade/src/app/adrian-garced/page.tsx @@ -1,38 +1,157 @@ - -// import { -// Github, -// Code -// } from "lucide-react"; +import { TooltipProvider } from "@forge/ui/tooltip"; import { - GithubIcon, - CodebergIcon -} from "./icons" + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@forge/ui/card"; -export default async function AdrianG() { - +import Navbar from "../_components/adrian-garced/navbar"; + +enum Visual { + None, + Image, + Video, +} + +const PROJECTS = [ + { + title: "Minecraft Clone", + description: "Minecraft C++ edition", + content: "Written C++ and OpenGL. I hope to experiment with other rendering APIs (primarily Vulkan and DX12) in the future. I am going to work on chunking and terrain generation next.", + visualType: Visual.Video, + videoUrl: "https://github.com/user-attachments/assets/565d9330-d81a-404d-9639-d2b12d7ff514", + }, + { + title: "Soundboard", + description: "Desktop audio application", + content: + "A desktop soundboard where I am exploring Rust, Tauri (forever over electron), audio firmware, and slight multithreading. I currently am working on adding sounds, removing sounds, and adjusting the audio levels.", + visualType: Visual.None, + visualUrl: "", + }, + { + title: "Frobby Blog", + description: "A culmination of what I learn", + content: + "Usually when I learn something new, I learn something else new and I tend to lose sight of the first thing I learned until I see it again. This project is meant to stop this recursive cycle and maybe help out someone else learn something new too!", + visualUrl: "https://github.com/user-attachments/assets/6436f662-21c8-4c24-beb6-f807a4d78736", + visualType: Visual.Image, + }, +]; +export default async function AdrianG() { return ( -
- -

+ {/* table of contents / on this page navigation */} + +
); } \ No newline at end of file diff --git a/apps/blade/src/app/layout.tsx b/apps/blade/src/app/layout.tsx index 2e3f7fc08..e2a67784a 100644 --- a/apps/blade/src/app/layout.tsx +++ b/apps/blade/src/app/layout.tsx @@ -19,6 +19,7 @@ import { } from "./seo"; import "./globals.css"; +import { TooltipProvider } from "@forge/ui/tooltip"; export const metadata: Metadata = { metadataBase: new URL(SITE_URL), @@ -96,7 +97,9 @@ export default function RootLayout(props: { children: React.ReactNode }) { GeistMono.variable, )} > + {props.children} +