diff --git a/src/assets/bobadrops.png b/src/assets/bobadrops.png new file mode 100644 index 0000000..e75c194 Binary files /dev/null and b/src/assets/bobadrops.png differ diff --git a/src/assets/democracy.png b/src/assets/democracy.png new file mode 100644 index 0000000..daf0fe9 Binary files /dev/null and b/src/assets/democracy.png differ diff --git a/src/assets/physicsvisualizer.png b/src/assets/physicsvisualizer.png new file mode 100644 index 0000000..268e250 Binary files /dev/null and b/src/assets/physicsvisualizer.png differ diff --git a/src/assets/skyvac.png b/src/assets/skyvac.png new file mode 100644 index 0000000..a6ea62b Binary files /dev/null and b/src/assets/skyvac.png differ diff --git a/src/assets/swarmgrid.png b/src/assets/swarmgrid.png new file mode 100644 index 0000000..e14da6b Binary files /dev/null and b/src/assets/swarmgrid.png differ diff --git a/src/lib/projects.ts b/src/lib/projects.ts index bb9ef11..c40a3ca 100644 --- a/src/lib/projects.ts +++ b/src/lib/projects.ts @@ -5,6 +5,11 @@ import project4 from "@/assets/ArtCriq.png"; import project5 from "@/assets/NYAS.png"; import project6 from "@/assets/MITE.png"; import project7 from "@/assets/m3.png"; +import swarmGridCover from "@/assets/swarmgrid.png"; +import democracyCover from "@/assets/democracy.png"; +import physicsCover from "@/assets/physicsvisualizer.png"; +import skyvacCover from "@/assets/skyvac.png"; +import bobaDropsCover from "@/assets/bobadrops.png"; export const projectFilters = [ "everything", @@ -28,6 +33,7 @@ export type Project = { highlights: string[]; projectUrl?: string; projectUrlLabel?: string; + repoUrl?: string; pdfUrl?: string; pdfEmbedUrl?: string; pdfLabel?: string; @@ -224,6 +230,135 @@ export const projects: Project[] = [ "63% lower cell damage", ], }, + { + slug: "swarm-grid-coordination-simulator", + title: "SWARM//GRID", + category: "Multi-Agent Simulation", + type: "projects", + image: swarmGridCover, + year: "2026", + projectUrl: "https://swarm-grid.vercel.app", + projectUrlLabel: "Run the simulator", + repoUrl: "https://github.com/toyeshhm/swarm-grid", + desc: "Deterministic browser strategy game and headless research sandbox for autonomous fleet coordination under incomplete information and degrading comms.", + details: [ + "Built a fixed-step 20 Hz simulation core with deterministic seeding, so any match replays identically from its seed.", + "Implemented a real-time command view, a simulation dashboard, and a headless multi-agent sandbox over one shared engine.", + "Modeled sensing, communication interference, battery, and movement as normalized values across abstract fictional fleets.", + ], + highlights: [ + "Deterministic replay", + "AI vs. AI + player modes", + "Headless research sandbox", + ], + }, + { + slug: "democracy-camera-agent", + title: "Democracy", + category: "Computer Vision + Agents", + type: "projects", + image: democracyCover, + year: "2026", + projectUrl: "https://democracy-dashboard-beta.vercel.app", + projectUrlLabel: "Open the console", + repoUrl: "https://github.com/toyeshhm/Democracy", + desc: "Turns an ordinary security camera into an agent that recognizes an incident and completes the follow-up work itself — filing tickets, updating sheets, and posting to Slack.", + details: [ + "Built the perception layer that converts live video into structured, reviewable events rather than raw footage.", + "Wired those events into real software actions through an automation layer with traceable, human-reviewable steps.", + "Shipped a console for connecting cameras, managing integrations, and watching the live event and workflow feed.", + ], + highlights: [ + "Local object grounding", + "Traceable events", + "Human-in-the-loop control", + ], + }, + { + slug: "physics-visualizer", + title: "Physics Visualizer", + category: "Interactive Education", + type: "projects", + image: physicsCover, + year: "2024", + projectUrl: "https://physicsvisualizer-kappa.vercel.app", + projectUrlLabel: "Open the simulators", + repoUrl: "https://github.com/toyeshhm/PhysicsVisualizer", + desc: "Nine interactive physics simulators — Atwood's machine, circular motion, SHM, collisions, projectiles, buoyancy, fluids, rotation, and inclined planes — with live parameter control.", + details: [ + "Wrote each simulator against a shared canvas animation loop so parameter changes update the system in real time.", + "Designed a hub interface with light and dark themes routing into nine independent simulation pages.", + "Structured the codebase so additional physics systems drop in without touching the existing simulators.", + ], + highlights: [ + "9 simulators", + "Real-time parameter control", + "Vanilla JS, no framework", + ], + }, + { + slug: "findfree-deal-discovery", + title: "FindFree", + category: "Mobile + LLM Pipeline", + type: "projects", + year: "2026", + repoUrl: "https://github.com/toyeshhm/FindFree", + desc: "React Native app that finds free stuff and local deals near you, generated by an LLM engine across 11 categories and backed by scraper fallbacks.", + details: [ + "Built an LLM discovery engine (Groq LLaMA 3.3 70B / Gemini) that searches, verifies, and categorizes deals into readable posts with claim instructions.", + "Added a scraping fallback layer over Reddit, the Flipp deals API, and seven US retailer flyers to keep the feed populated.", + "Shipped map view, saved items, user posting, a community board, and in-app messaging on Supabase.", + ], + highlights: [ + "11 deal categories", + "LLM + scraper hybrid", + "Map-based discovery", + ], + }, + { + slug: "breathe-for-change-skyvac", + title: "SkyVac", + category: "Environmental Engineering", + type: "projects", + image: skyvacCover, + year: "2025", + projectUrl: "https://skyvac.vercel.app", + projectUrlLabel: "View the SkyVac site", + repoUrl: "https://github.com/toyeshhm/BreatheforChange-SkyVac", + desc: "Public-facing site for SkyVac, the atmospheric capture arm of the BreatheForChange initiative, covering the technology, impact goals, and development roadmap.", + details: [ + "Designed and built the full site presenting the technology breakthrough, target beneficiaries, and global impact goals.", + "Structured the narrative from problem through roadmap so a non-technical reader can follow the engineering case.", + "Companion to the NanoChar filter research presented at the New York Academy of Sciences.", + ], + highlights: [ + "Full site design + build", + "Impact + roadmap narrative", + "BreatheForChange initiative", + ], + }, + { + slug: "winter-boba-drops-hackathon", + title: "Winter Break To-Do", + category: "Hackathon Build", + type: "projects", + image: bobaDropsCover, + year: "2024", + projectUrl: "https://boba-drops-omega.vercel.app", + projectUrlLabel: "Try the app", + repoUrl: "https://github.com/toyeshhm/Boba-Drops-Website", + desc: "Entry for the December 2024 Boba Drops Hackathon — a winter-themed task app built on vanilla JS with a hand-written animation layer.", + details: [ + "Wrote the snowfall, frosted-glass, and sparkle-on-complete effects directly in CSS with no animation library.", + "Built the full interaction layer in vanilla JavaScript against a Vite build, no framework dependencies.", + "Delivered inside the hackathon window as a self-contained, responsive single-page app.", + ], + highlights: [ + "Dec 2024 hackathon", + "Zero dependencies", + "Hand-written CSS animation", + ], + }, ]; export const getProjectBySlug = (slug: string) => diff --git a/src/pages/WorkProjectDetail.tsx b/src/pages/WorkProjectDetail.tsx index a2cc259..211afa4 100644 --- a/src/pages/WorkProjectDetail.tsx +++ b/src/pages/WorkProjectDetail.tsx @@ -213,6 +213,24 @@ const WorkProjectDetail = () => { ) : null} + + {project.repoUrl ? ( +
+ + window.open( + project.repoUrl, + "_blank", + "noopener,noreferrer", + ) + } + className="px-6 py-3 rounded-lg border border-border text-foreground font-body text-sm font-medium tracking-wide hover:border-primary/40 transition-colors" + > + View source on GitHub + +
+ ) : null}