Update profile links, projects, and experience
This commit is contained in:
@@ -13,6 +13,12 @@ export interface OpenSourceProject {
|
||||
|
||||
|
||||
export const openSourceProjects: OpenSourceProject[] = [
|
||||
{
|
||||
name: 'TypstDrive',
|
||||
description: 'TypstDrive is a self-hosted collaborative web editor for Typst.',
|
||||
tech: ['Typst', 'Self-Hosted', 'Collaborative'],
|
||||
github: 'https://github.com/SirBlobby/TypstDrive',
|
||||
},
|
||||
{
|
||||
name: 'Pkit',
|
||||
description: 'CLI toolkit and utilities (Rust project) — small developer-focused CLI.',
|
||||
@@ -115,6 +121,50 @@ export const models: Model3D[] = [
|
||||
}
|
||||
];
|
||||
|
||||
// ============================================================================
|
||||
// EXPERIENCE
|
||||
// ============================================================================
|
||||
|
||||
export interface Experience {
|
||||
role: string;
|
||||
organization: string;
|
||||
employmentType?: string;
|
||||
location?: string;
|
||||
period: string;
|
||||
description?: string;
|
||||
tech?: string[];
|
||||
awards?: string[];
|
||||
}
|
||||
|
||||
|
||||
export const experience: Experience[] = [
|
||||
{
|
||||
role: 'Research Assistant',
|
||||
organization: 'College of Engineering and Computing',
|
||||
employmentType: 'Part-time',
|
||||
period: 'May 2026 – Present · 3 mos'
|
||||
},
|
||||
{
|
||||
role: 'Software Engineering Lead',
|
||||
organization: 'Raytheon Autonomous Vehicle Competition',
|
||||
period: 'Dec 2025 – May 2026 · 6 mos',
|
||||
description:
|
||||
'Developing a collaborative autonomous system utilizing Python and ROS2 to coordinate communication and control as a UAV scouts and lands on a moving UGV. Engineering Gazebo simulation environments to validate computer vision algorithms for ArUco marker target identification and obstacle avoidance.',
|
||||
tech: ['Python', 'ROS2'],
|
||||
awards: ['1st Place Overall Winner']
|
||||
},
|
||||
{
|
||||
role: 'QA Automation Intern',
|
||||
organization: 'Deltek',
|
||||
employmentType: 'Internship',
|
||||
location: 'Hybrid',
|
||||
period: 'Jun 2025 – Aug 2025 · 3 mos',
|
||||
description:
|
||||
'Designed and implemented a workflow integrating AI into the QA automation pipeline, enhancing test efficiency for the GovWin IQ team. Researched Model Context Protocol (MCP) servers to improve automation, developed and published a public Selenium MCP package to NPM, enabling browser automation interactions with Agentic AI.',
|
||||
tech: ['Artificial Intelligence (AI)', 'TypeScript', 'Selenium']
|
||||
}
|
||||
];
|
||||
|
||||
// ============================================================================
|
||||
// HACKATHONS
|
||||
// ============================================================================
|
||||
@@ -137,6 +187,37 @@ export type Card = {
|
||||
};
|
||||
|
||||
export const cards: Card[] = [
|
||||
{
|
||||
image: "/hacks/hushmap.png",
|
||||
title: "HushMap",
|
||||
description:
|
||||
"Architected a real-time campus noise and occupancy monitoring system utilizing SvelteKit, FastAPI, and MongoDB to help students locate quiet study spaces.",
|
||||
link: "https://hushmap.study/",
|
||||
hackathonName: "Bitcamp 2026",
|
||||
university: "University of Maryland",
|
||||
location: "College Park, MD",
|
||||
year: "2026",
|
||||
tags: ["Svelte", "YOLOv8", "FastAPI", "MongoDB"],
|
||||
featured: true,
|
||||
awards: [
|
||||
{ track: "Best UI/UX Hack", place: "Winner" }
|
||||
]
|
||||
},
|
||||
{
|
||||
image: "/hacks/learningbuddy.png",
|
||||
title: "LearningBuddy",
|
||||
description:
|
||||
"Engineered an ESP32-S3 IoT study companion in C++ with secure Wi-Fi provisioning, utilizing WebSockets and Socket.IO to stream low-latency raw audio for live lecture capture.",
|
||||
hackathonName: "HaxFax x PatriotHacks 2026",
|
||||
university: "George Mason University",
|
||||
location: "Fairfax, VA",
|
||||
year: "2026",
|
||||
tags: ["C++", "WebSocket", "ESP32-S3", "Socket.IO"],
|
||||
featured: true,
|
||||
awards: [
|
||||
{ track: "Best use of MongoDB", place: "Winner" }
|
||||
]
|
||||
},
|
||||
{
|
||||
image: "/hacks/fooddecisive.png",
|
||||
title: "Food Decisive",
|
||||
|
||||
@@ -25,9 +25,9 @@ export {
|
||||
animations
|
||||
} from './theme';
|
||||
|
||||
// Content: projects, models, hackathon cards
|
||||
export type { OpenSourceProject, PackageProject, Model3D, Card } from './content';
|
||||
export { openSourceProjects, packageProjects, models, cards, sortedCards } from './content';
|
||||
// Content: projects, models, experience, hackathon cards
|
||||
export type { OpenSourceProject, PackageProject, Model3D, Experience, Card } from './content';
|
||||
export { openSourceProjects, packageProjects, models, experience, cards, sortedCards } from './content';
|
||||
|
||||
// Terminal settings, TUI styling, speed presets, model viewer, particles, shortcuts
|
||||
export type { SpeedPreset, TerminalSettings } from './terminal';
|
||||
|
||||
@@ -20,7 +20,6 @@ export const user = {
|
||||
// Social links - array of { name, icon (Iconify), link }
|
||||
socials: [
|
||||
{ name: 'GitHub', icon: 'mdi:github', link: 'https://github.com/SirBlobby' },
|
||||
{ name: 'Gitea', icon: 'simple-icons:gitea', link: 'https://git.sirblob.co/SirBlob' },
|
||||
{ name: 'LinkedIn', icon: 'mdi:linkedin', link: 'https://www.linkedin.com/in/gmanjunatha/' },
|
||||
{ name: 'Devpost', icon: 'simple-icons:devpost', link: 'https://devpost.com/Sir_Blob_' },
|
||||
{ name: 'Discord', icon: 'ic:baseline-discord', link: 'https://discord.com/users/sir_blob_' }
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
|
||||
import type { TerminalLine } from '$lib/components/tui/types';
|
||||
import { user, skills, openSourceProjects } from '$lib/config';
|
||||
import { user, skills, openSourceProjects, experience } from '$lib/config';
|
||||
|
||||
const experienceElements: TerminalLine[] = [];
|
||||
|
||||
experience.forEach(exp => {
|
||||
experienceElements.push(
|
||||
{ type: 'header', content: `(&orange,bold)${exp.role}(&)` },
|
||||
{ type: 'output', content: `(&primary)${exp.organization}(&)` + (exp.employmentType ? ` (&muted)· ${exp.employmentType}(&)` : '') },
|
||||
{ type: 'output', content: `(&muted)${exp.period}(&)` + (exp.location ? ` (&muted)· ${exp.location}(&)` : '') },
|
||||
...(exp.description ? [{ type: 'output' as const, content: `(&muted)${exp.description}(&)` }] : []),
|
||||
...(exp.tech ? [{ type: 'output' as const, content: ' ' + exp.tech.map(t => `(&blue)${t}(&)`).join(' (&muted)•(&) ') }] : []),
|
||||
...(exp.awards ? exp.awards.map(award => ({ type: 'success' as const, content: `(&success)${award}(&)` })) : []),
|
||||
{ type: 'blank', content: '' }
|
||||
);
|
||||
});
|
||||
|
||||
const openSourceElements:TerminalLine[] = [];
|
||||
|
||||
@@ -48,6 +62,7 @@ export const lines: TerminalLine[] = [
|
||||
children: [
|
||||
{ type: 'output', content: `(&primary, bold)Links >(&)`, inline: true },
|
||||
{ type: 'link', href: "/portfolio#contact", content: `(&bg-blue,black)Contact(&)`, inline: true },
|
||||
{ type: 'link', href: "/portfolio#experience", content: `(&bg-magenta,black)Experience(&)`, inline: true },
|
||||
{ type: 'link', href: "/portfolio#skills", content: `(&bg-orange,black)Skills(&)`, inline: true },
|
||||
{ type: 'link', href: "/portfolio#projects", content: `(&bg-green,black)Projects(&)`, inline: true },
|
||||
]
|
||||
@@ -63,6 +78,10 @@ export const lines: TerminalLine[] = [
|
||||
inline: true
|
||||
})),
|
||||
|
||||
{ type: 'divider', content: 'EXPERIENCE', id: 'experience' },
|
||||
|
||||
...experienceElements,
|
||||
|
||||
{ type: 'divider', content: 'SKILLS', id: 'skills' },
|
||||
|
||||
// Skills as TUI sections
|
||||
|
||||
Reference in New Issue
Block a user