Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added src/assets/bobadrops.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/democracy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/physicsvisualizer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/skyvac.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/swarmgrid.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
135 changes: 135 additions & 0 deletions src/lib/projects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -28,6 +33,7 @@ export type Project = {
highlights: string[];
projectUrl?: string;
projectUrlLabel?: string;
repoUrl?: string;
pdfUrl?: string;
pdfEmbedUrl?: string;
pdfLabel?: string;
Expand Down Expand Up @@ -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) =>
Expand Down
18 changes: 18 additions & 0 deletions src/pages/WorkProjectDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,24 @@ const WorkProjectDetail = () => {
</MagneticButton>
</div>
) : null}

{project.repoUrl ? (
<div className="mt-4">
<MagneticButton
type="button"
onClick={() =>
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
</MagneticButton>
</div>
) : null}
</section>

<section className="rounded-[1.5rem] border border-border/70 bg-card/80 backdrop-blur-sm p-6 md:p-8">
Expand Down