Website config Update
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
// ============================================================================
|
||||
// PROJECTS
|
||||
// ============================================================================
|
||||
|
||||
export interface Project {
|
||||
name: string;
|
||||
description: string;
|
||||
tech: string[];
|
||||
github?: string;
|
||||
live?: string;
|
||||
image?: string;
|
||||
featured?: boolean;
|
||||
}
|
||||
|
||||
export const projects: Project[] = [
|
||||
{
|
||||
name: 'PokemonTCGAPI',
|
||||
description: 'Official NPM package wrapper for the PokemonTCG API — utilities and helpers for working with Pokemon TCG data.',
|
||||
tech: ['TypeScript', 'Node.js'],
|
||||
live: 'https://www.npmjs.com/package/@bosstop/pokemontcgapi',
|
||||
image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Npm-logo.svg/1200px-Npm-logo.svg.png',
|
||||
featured: false
|
||||
},
|
||||
{
|
||||
name: 'MCSS TS API',
|
||||
description: 'TypeScript API for MCServersSoft services, published to NPM.',
|
||||
tech: ['TypeScript', 'Node.js'],
|
||||
live: 'https://www.npmjs.com/package/@mcserversoft/mcss-api',
|
||||
image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Npm-logo.svg/1200px-Npm-logo.svg.png',
|
||||
featured: false
|
||||
},
|
||||
{
|
||||
name: 'MCP Selenium',
|
||||
description: 'Selenium automation utilities for MCP workflows, packaged for reuse.',
|
||||
tech: ['TypeScript', 'Selenium'],
|
||||
live: 'https://www.npmjs.com/package/@sirblob/mcp-selenium',
|
||||
image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Npm-logo.svg/1200px-Npm-logo.svg.png',
|
||||
featured: false
|
||||
},
|
||||
{
|
||||
name: 'Pkit',
|
||||
description: 'CLI toolkit and utilities (Rust project) — small developer-focused CLI.',
|
||||
tech: ['Rust', 'CLI'],
|
||||
github: 'https://github.com/dead-projects-inc/pkit-cli',
|
||||
image: 'https://icons.veryicon.com/png/o/business/vscode-program-item-icon/rust-1.png',
|
||||
featured: false
|
||||
}
|
||||
];
|
||||
|
||||
// ============================================================================
|
||||
// 3D MODELS
|
||||
// ============================================================================
|
||||
|
||||
export interface Model3D {
|
||||
name: string;
|
||||
description: string;
|
||||
thumbnail: string;
|
||||
modelUrl?: string; // URL to .glb/.gltf file for preview
|
||||
downloadUrl?: string;
|
||||
software: string[];
|
||||
polyCount?: string;
|
||||
featured?: boolean;
|
||||
}
|
||||
|
||||
export const models: Model3D[] = [
|
||||
{
|
||||
name: 'Bake Potato',
|
||||
description: 'A fun baked-potato 3D model for demos and testing.',
|
||||
thumbnail: '/models/BakePotato-thumb.png',
|
||||
modelUrl: '/models/BakePotato.glb',
|
||||
software: ['Blender'],
|
||||
polyCount: '1k tris',
|
||||
featured: true
|
||||
},
|
||||
{
|
||||
name: 'Soda Can',
|
||||
description: 'A realistic soda can GLB used for materials/tests.',
|
||||
thumbnail: '/models/Soda-thumb.png',
|
||||
modelUrl: '/models/Soda.glb',
|
||||
software: ['Blender'],
|
||||
polyCount: '800 tris',
|
||||
featured: false
|
||||
}
|
||||
];
|
||||
|
||||
// ============================================================================
|
||||
// HACKATHONS
|
||||
// ============================================================================
|
||||
|
||||
export type Card = {
|
||||
title: string;
|
||||
description: string;
|
||||
image?: string;
|
||||
link?: string;
|
||||
repo?: string;
|
||||
devpost?: string;
|
||||
hackathonName?: string;
|
||||
university?: string;
|
||||
location?: string;
|
||||
year?: string;
|
||||
tags?: string[];
|
||||
featured?: boolean;
|
||||
awards?: { track: string; place: string }[];
|
||||
liveWarning?: boolean;
|
||||
};
|
||||
|
||||
export const cards: Card[] = [
|
||||
{
|
||||
image: "/hacks/fooddecisive.png",
|
||||
title: "Food Decisive",
|
||||
description:
|
||||
"Ever felt the indecisiveness of choosing what to eat? Don't fret! Decide your next bite with Food Decisive",
|
||||
link: "https://fooddecisive.sirblob.co/",
|
||||
repo: "https://github.com/SirBlobby/VTHacks-12",
|
||||
devpost: "https://devpost.com/software/food-decisive",
|
||||
hackathonName: "VTHacks 12",
|
||||
university: "Virginia Tech",
|
||||
location: "Blacksburg, VA",
|
||||
year: "2024",
|
||||
tags: ["AI", "Llama3.1", "Svelte", "Node.js"],
|
||||
featured: false,
|
||||
liveWarning: true
|
||||
},
|
||||
{
|
||||
image: "/hacks/carbin.png",
|
||||
title: "Carbin",
|
||||
description:
|
||||
"Encourage student participation in responsible waste management with smart bins that guide proper disposal.",
|
||||
repo: "https://github.com/SirBlobby/patriotHacks2024",
|
||||
devpost: "https://devpost.com/software/carboniferous-akc4mj",
|
||||
hackathonName: "PatriotHacks 2024",
|
||||
university: "George Mason University",
|
||||
location: "Fairfax, VA",
|
||||
year: "2024",
|
||||
tags: ["AI", "Azure", "CloudConvert", "Python", "React", "TypeScript", "API"],
|
||||
featured: true,
|
||||
awards: [
|
||||
{ track: "Save the World", place: "2nd Place" },
|
||||
{ track: "Microsoft X Cloudforce", place: "2nd Place" }
|
||||
]
|
||||
},
|
||||
{
|
||||
image: "/hacks/patsafe.png",
|
||||
title: "PatSafe",
|
||||
description:
|
||||
"Bridging the gap between doctors and patients for seamless post-discharge care",
|
||||
link: "https://hoya-hax2025.vercel.app/",
|
||||
repo: "https://github.com/SirBlobby/HoyaHax2025",
|
||||
devpost: "https://devpost.com/software/patsafe",
|
||||
hackathonName: "HoyaHax 2025",
|
||||
university: "Georgetown University",
|
||||
location: "Washington, D.C.",
|
||||
year: "2025",
|
||||
tags: ["Javascript", "Next.js", "React", "TypeScript", "LangChain", "OpenAI"],
|
||||
},
|
||||
{
|
||||
image: "https://placehold.co/800x400/334155/94a3b8?text=Fauxcall",
|
||||
title: "Fauxcall",
|
||||
description:
|
||||
"This product is perfect for situations where you are walking at night and you feel unsafe from someone. Fauxcall lets users create a convincing fake phone call to deter potential attackers and provide a quick escape mechanism.",
|
||||
link: "",
|
||||
repo: "https://github.com/SirBlobby/HooHacks-12",
|
||||
devpost: "https://devpost.com/software/fauxcall",
|
||||
hackathonName: "HooHacks 2025",
|
||||
university: "University of Virginia",
|
||||
location: "Charlottesville, VA",
|
||||
year: "2025",
|
||||
tags: ["mongodb", "next.js", "python", "react", "sesame.com", "skeleton", "twilio"],
|
||||
featured: false
|
||||
},
|
||||
{
|
||||
image: "/hacks/drinkhappy.png",
|
||||
title: "Drink Happy",
|
||||
description:
|
||||
"drinkhappy.tech is a gamified hydration wellness app that helps users track drinks, earn points for healthy choices, and compete with friends. It's powered by Gemini AI for smart drink recognition.",
|
||||
link: "https://drinkhappy.tech",
|
||||
repo: "https://github.com/SirBlobby/Bitcamp-2025",
|
||||
devpost: "https://devpost.com/software/drink-happy",
|
||||
hackathonName: "Bitcamp",
|
||||
university: "University of Maryland",
|
||||
location: "College Park, MD",
|
||||
year: "2025",
|
||||
tags: ["api", "auth0", "gemini", "github", "javascript", "mongodb", "nextjs", "react", "tailwind", "vercel"],
|
||||
featured: false
|
||||
},
|
||||
{
|
||||
image: "/hacks/roadcast.png",
|
||||
title: "Roadcast",
|
||||
description:
|
||||
"Roadcast provides drivers with crash data and weather insights to choose safer routes home. The project combines historical crash data, weather feeds, and spatial analysis to surface hazardous areas and route-level safety recommendations.",
|
||||
link: "https://roadcast.sirblob.co/",
|
||||
repo: "https://github.com/SirBlobby/roadcast",
|
||||
devpost: "https://devpost.com/software/roadcast",
|
||||
hackathonName: "VTHacks 13",
|
||||
university: "Virginia Tech",
|
||||
location: "Blacksburg, VA",
|
||||
year: "2025",
|
||||
tags: ["react", "node.js", "python", "mongodb", "geospatial", "mapbox"],
|
||||
featured: true,
|
||||
liveWarning: true
|
||||
}
|
||||
];
|
||||
|
||||
// Sort cards to show featured first
|
||||
export const sortedCards = [...cards].sort((a, b) => {
|
||||
if (a.featured && !b.featured) return -1;
|
||||
if (!a.featured && b.featured) return 1;
|
||||
return 0;
|
||||
});
|
||||
Reference in New Issue
Block a user