diff --git a/src/src/components/about/current-focus.tsx b/src/src/components/about/current-focus.tsx new file mode 100644 index 0000000..ccfd7cd --- /dev/null +++ b/src/src/components/about/current-focus.tsx @@ -0,0 +1,134 @@ +import React from 'react'; +import { Code2, BookOpen, RocketIcon, Compass } from 'lucide-react'; + +export default function CurrentFocus() { + const recentProjects = [ + { + title: "Project Name 1", + description: "Short description of the project", + href: "/projects/project-1", + tech: ["React", "TypeScript", "Node.js"] + }, + { + title: "Project Name 2", + description: "Short description of the project", + href: "/projects/project-2", + tech: ["Python", "Django", "PostgreSQL"] + }, + { + title: "Project Name 3", + description: "Short description of the project", + href: "/projects/project-3", + tech: ["Next.js", "Tailwind", "Prisma"] + } + ]; + + return ( +
+
+

+ Current Focus +

+ + {/* Recent Projects Section */} +
+
+ +

Recent Projects

+
+
+ {recentProjects.map((project) => ( + +

+ {project.title} +

+

{project.description}

+
+ {project.tech.map((tech) => ( + + {tech} + + ))} +
+
+ ))} +
+
+ + {/* Current Learning & Interests */} +
+ {/* What I'm Learning */} +
+
+ +

Currently Learning

+
+
    +
  • + + Rust Programming +
  • +
  • + + WebAssembly with Rust +
  • +
  • + + HTTP/3 & WebTransport +
  • +
+
+ + {/* Project Interests */} +
+
+ +

Project Interests

+
+
    +
  • + + AI Model Integration +
  • +
  • + + Rust Systems Programming +
  • +
  • + + Cross-platform WASM Apps +
  • +
+
+ + {/* Areas to Explore */} +
+
+ +

Want to Explore

+
+
    +
  • + + LLM Fine-tuning +
  • +
  • + + Rust 2024 Edition +
  • +
  • + + Real-time Web Transport +
  • +
+
+
+
+
+ ); +} diff --git a/src/src/components/about/intro.tsx b/src/src/components/about/intro.tsx index 3d61baf..9373dfe 100644 --- a/src/src/components/about/intro.tsx +++ b/src/src/components/about/intro.tsx @@ -1,11 +1,11 @@ import React from "react"; -import { ChevronDown } from "lucide-react"; +import { ChevronDownIcon } from "@/components/icons"; export default function Intro() { const scrollToNext = () => { window.scrollTo({ top: window.innerHeight, - behavior: 'smooth' + behavior: "smooth" }); }; @@ -26,7 +26,7 @@ export default function Intro() {

- Full Stack Developer + Software Systems Engineer

Open Source Enthusiast @@ -39,7 +39,7 @@ export default function Intro() {

- Coffee-to-code conversion isn't just a clever phrase – + "Turning coffee into code" isn't just a clever phrase – it's how I approach each project: methodically, with attention to detail, @@ -51,7 +51,7 @@ export default function Intro() { className="text-foreground/50 hover:text-yellow-bright transition-colors duration-300" aria-label="Scroll to next section" > - +

diff --git a/src/src/components/about/outside-coding.tsx b/src/src/components/about/outside-coding.tsx new file mode 100644 index 0000000..742eb3a --- /dev/null +++ b/src/src/components/about/outside-coding.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { Fish, Mountain, Book, Car } from 'lucide-react'; + +export default function OutsideCoding() { + const interests = [ + { + icon: , + title: "Fishing", + description: "Finding peace and adventure on the water, always looking for the next great fishing spot" + }, + { + icon: , + title: "Hiking", + description: "Exploring trails with friends and seeking out scenic viewpoints in nature" + }, + { + icon: , + title: "Reading", + description: "Deep diving into novels & technical books that expand my horizons & captivate my mind" + }, + { + icon: , + title: "Project Cars", + description: "Working on automotive projects, modifying & restoring sporty sedans" + } + ]; + + return ( +
+
+

+ Outside of Programming +

+ +
+ {interests.map((interest) => ( +
+
+ {interest.icon} +
+

+ {interest.title} +

+

+ {interest.description} +

+
+ ))} +
+ +

+ When I'm not writing code, you'll find me + out on the water, + hiking trails, + reading books, + or modifying my current ride. +

+
+
+ ); +} diff --git a/src/src/components/about/timeline.tsx b/src/src/components/about/timeline.tsx new file mode 100644 index 0000000..92c4910 --- /dev/null +++ b/src/src/components/about/timeline.tsx @@ -0,0 +1,81 @@ +import React from "react"; +import { Check, Code, GitBranch, Star } from "lucide-react"; + +export default function Timeline() { + const timelineItems = [ + { + year: "2024", + title: "Present", + description: "The wisdom of past ventures now flows through my work, whether crafting elegant CRUD applications or embarking on bold projects that expand my limits.", + technologies: ["Rust", "Typescript", "Go", "Postgres"], + icon: + }, + { + year: "2022", + title: "Diving Deeper", + description: "The worlds of systems programming and scalable infrastructure collided as I explored low-level C++ graphics programming and containerization with Docker.", + technologies: ["C++", "Cmake", "Docker", "Docker Compose"], + icon: + }, + { + year: "2020", + title: "Exploring the Stack", + description: "Starting with pure HTML and CSS, I explored the foundations of web development, gradually venturing into JavaScript and React to bring my static pages to life.", + technologies: ["Javascript", "Tailwind", "React", "Express"], + icon: + }, + { + year: "2018", + title: "Starting the Journey", + description: "An elective Python class in 8th grade transformed my keen interest in programming into a relentless obsession, one that drove me to constantly explore new depths.", + technologies: ["Python", "Discord.py", "Asyncio", "Sqlite"], + icon: + } + ]; + + return ( +
+

+ Journey Through Code +

+
+
+ +
+ {timelineItems.map((item, index) => ( +
+
+
+ {item.icon} +
+
+
+ {item.year} +

{item.title}

+

{item.description}

+
+ {item.technologies.map((tech) => ( + + {tech} + + ))} +
+
+
+
+
+ ))} +
+
+
+ ); +} diff --git a/src/src/components/header/index.tsx b/src/src/components/header/index.tsx index 0196faa..6a0cfe2 100644 --- a/src/src/components/header/index.tsx +++ b/src/src/components/header/index.tsx @@ -27,7 +27,7 @@ export default function Header() { )); return ( -
diff --git a/src/src/components/projects/project-card.tsx b/src/src/components/projects/project-card.tsx new file mode 100644 index 0000000..88c1d8c --- /dev/null +++ b/src/src/components/projects/project-card.tsx @@ -0,0 +1,78 @@ +import React from "react" +import type { CollectionEntry } from "astro:content"; + +interface ProjectCardProps { + project: CollectionEntry<"projects">; +} + +export function ProjectCard({ project }: ProjectCardProps) { + const hasLinks = project.data.githubUrl || project.data.demoUrl; + + return ( + + ); +} diff --git a/src/src/components/projects/project-list.tsx b/src/src/components/projects/project-list.tsx new file mode 100644 index 0000000..ff6c08f --- /dev/null +++ b/src/src/components/projects/project-list.tsx @@ -0,0 +1,45 @@ +import React from "react"; +import type { CollectionEntry } from "astro:content"; +import { ProjectCard } from "@/components/projects/project-card"; + +interface ProjectListProps { + projects: CollectionEntry<"projects">[]; +} + +export function ProjectList({ projects }: ProjectListProps) { + const latestProjects = projects.slice(0, 3); + const otherProjects = projects.slice(3); + + return ( +
+

+ Here's what I've been
+ building lately +

+ +
+

+ Featured Projects +

+
+ {latestProjects.map(project => ( + + ))} +
+
+ + {otherProjects.length > 0 && ( +
+

+ All Projects +

+
+ {otherProjects.map(project => ( + + ))} +
+
+ )} +
+ ); +} diff --git a/src/src/content/config.ts b/src/src/content/config.ts index 4414394..8eed5f2 100644 --- a/src/src/content/config.ts +++ b/src/src/content/config.ts @@ -10,4 +10,15 @@ export const collections = { date: z.string(), }), }), -} + projects: defineCollection({ + schema: z.object({ + title: z.string(), + description: z.string(), + githubUrl: z.string().url().optional(), + demoUrl: z.string().url().optional(), + techStack: z.array(z.string()), + date: z.string(), + image: z.string().optional(), + }), + }), +}; diff --git a/src/src/content/projects/ai-code-reviewer.mdx b/src/src/content/projects/ai-code-reviewer.mdx new file mode 100644 index 0000000..929f379 --- /dev/null +++ b/src/src/content/projects/ai-code-reviewer.mdx @@ -0,0 +1,9 @@ +--- +title: "AI Code Review Assistant" +description: "An AI-powered code review tool that integrates with GitHub to provide automated code analysis and suggestions" +githubUrl: "https://github.com/username/ai-code-reviewer" +techStack: ["Python", "OpenAI API", "GitHub API", "FastAPI"] +date: "2024-02-28" +image: "/projects/ai-reviewer-preview.png" +--- + diff --git a/src/src/content/projects/embedded-rust.mdx b/src/src/content/projects/embedded-rust.mdx new file mode 100644 index 0000000..b26b2dc --- /dev/null +++ b/src/src/content/projects/embedded-rust.mdx @@ -0,0 +1,8 @@ +--- +title: "Embedded Rust Framework" +description: "A framework for writing embedded systems applications in Rust with a focus on safety and performance" +githubUrl: "https://github.com/username/embedded-rust" +techStack: ["Rust", "Embedded Systems", "RTOS", "HAL"] +date: "2024-01-15" +image: "/projects/embedded-preview.png" +--- diff --git a/src/src/content/projects/llm-finetuning.mdx b/src/src/content/projects/llm-finetuning.mdx new file mode 100644 index 0000000..f96f959 --- /dev/null +++ b/src/src/content/projects/llm-finetuning.mdx @@ -0,0 +1,9 @@ +--- +title: "LLM Fine-tuning Pipeline" +description: "A toolkit for fine-tuning large language models on custom datasets with optimized training procedures" +githubUrl: "https://github.com/username/llm-fine-tuning" +demoUrl: "https://llm-tuning.demo.dev" +techStack: ["Python", "PyTorch", "CUDA", "MLFlow"] +date: "2024-01-01" +image: "/projects/llm-preview.png" +--- diff --git a/src/src/content/projects/realtime-editor.mdx b/src/src/content/projects/realtime-editor.mdx new file mode 100644 index 0000000..961573a --- /dev/null +++ b/src/src/content/projects/realtime-editor.mdx @@ -0,0 +1,9 @@ +--- +title: "Real-time Collaboration Editor" +description: "A collaborative text editor with real-time synchronization using WebTransport protocol for minimal latency" +githubUrl: "https://github.com/username/real-time-collab" +demoUrl: "https://collab.demo.dev" +techStack: ["TypeScript", "React", "WebTransport", "CRDT"] +date: "2024-02-10" +image: "/projects/collab-preview.png" +--- diff --git a/src/src/content/projects/test.mdx b/src/src/content/projects/test.mdx new file mode 100644 index 0000000..0cef92a --- /dev/null +++ b/src/src/content/projects/test.mdx @@ -0,0 +1,26 @@ +--- +title: "Project Name" +description: "Project description here" +demoUrl: "https://demo.project.com" # optional +techStack: ["React", "TypeScript", "Tailwind"] +date: "2024-03-15" +image: "/projects/preview.png" # optional +--- + +# Project Overview + +This is a detailed description of the project... + +## Features + +- Feature 1 +- Feature 2 +- Feature 3 + +## Technical Details + +Here's how it works... + +## Challenges & Solutions + +During development... diff --git a/src/src/content/projects/test2.mdx b/src/src/content/projects/test2.mdx new file mode 100644 index 0000000..a4c4608 --- /dev/null +++ b/src/src/content/projects/test2.mdx @@ -0,0 +1,27 @@ +--- +title: "Rust WASM Game Engine" +description: "A lightweight 2D game engine built with Rust and compiled to WebAssembly for high-performance browser games" +githubUrl: "https://github.com/username/rust-wasm-game" +demoUrl: "https://rust-wasm-game.demo.dev" +techStack: ["Rust", "WebAssembly", "Canvas API", "Web Workers"] +date: "2024-03-15" +image: "/projects/rust-wasm-preview.png" +--- + +# Project Overview + +This is a detailed description of the project... + +## Features + +- Feature 1 +- Feature 2 +- Feature 3 + +## Technical Details + +Here's how it works... + +## Challenges & Solutions + +During development... diff --git a/src/src/layouts/projects.astro b/src/src/layouts/projects.astro new file mode 100644 index 0000000..4bcb9d1 --- /dev/null +++ b/src/src/layouts/projects.astro @@ -0,0 +1,33 @@ +--- +import "@/style/globals.css"; +import Header from "@/components/header"; +import Footer from "@/components/footer"; + +export interface Props { + title: string; + description?: string; + permalink?: string; +} + +const { title, description, permalink } = Astro.props; +--- + + + + + + + {title} + {description && } + {permalink && } + + +
+
+
+ +
+
+