Updated Job layout to show it was all done within the same contract. Added entries for personal projects
This commit is contained in:
1 parent
cbd5a1e42c
commit
feb1c4effc
1 file changed
+136
-29
+136
-29
@@ -16,10 +16,21 @@ export interface TreeNode {
|
|||||||
endDate?: string; // Use "Present" for current role
|
endDate?: string; // Use "Present" for current role
|
||||||
highlights?: string[]; // Key achievements or responsibilities
|
highlights?: string[]; // Key achievements or responsibilities
|
||||||
|
|
||||||
// ========== PROJECT-SPECIFIC FIELDS ==========
|
// ========== CONTRACT-SPECIFIC FIELDS ==========
|
||||||
|
contractName?: string;
|
||||||
|
client?: string;
|
||||||
|
contractStart?: string;
|
||||||
|
contractEnd?: string;
|
||||||
|
|
||||||
|
// ========== PROJECT-SPECIFIC FIELDS (extended) ==========
|
||||||
techStack?: string[];
|
techStack?: string[];
|
||||||
projectUrl?: string;
|
projectUrl?: string;
|
||||||
repoUrl?: string;
|
repoUrl?: string;
|
||||||
|
npmUrl?: string; // For npm packages
|
||||||
|
pypiUrl?: string; // For PyPI packages
|
||||||
|
downloads?: string; // "1,000+ downloads"
|
||||||
|
stars?: number; // GitHub stars
|
||||||
|
status?: 'active' | 'maintained' | 'archived';
|
||||||
|
|
||||||
// ========== SKILL-SPECIFIC FIELDS ==========
|
// ========== SKILL-SPECIFIC FIELDS ==========
|
||||||
proficiency?: 'beginner' | 'intermediate' | 'advanced' | 'expert';
|
proficiency?: 'beginner' | 'intermediate' | 'advanced' | 'expert';
|
||||||
@@ -39,6 +50,7 @@ export interface TreeNode {
|
|||||||
linkedIn?: string;
|
linkedIn?: string;
|
||||||
github?: string;
|
github?: string;
|
||||||
website?: string;
|
website?: string;
|
||||||
|
resumeUrl?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The center of our tree is at (0, 0)
|
// The center of our tree is at (0, 0)
|
||||||
@@ -65,9 +77,10 @@ export const treeNodes: TreeNode[] = [
|
|||||||
linkedIn: 'https://www.linkedin.com/in/kevinriehl',
|
linkedIn: 'https://www.linkedin.com/in/kevinriehl',
|
||||||
github: 'https://github.com/TehRiehlDeal',
|
github: 'https://github.com/TehRiehlDeal',
|
||||||
website: 'https://tehriehldeal.com',
|
website: 'https://tehriehldeal.com',
|
||||||
|
resumeUrl: '/kevin-riehl-resume.pdf',
|
||||||
},
|
},
|
||||||
|
|
||||||
// ========== EXPERIENCE (Upper Right - Timeline Path) ==========
|
// ========== EXPERIENCE (Upper Right - Contract-Based) ==========
|
||||||
{
|
{
|
||||||
id: 'exp-branch',
|
id: 'exp-branch',
|
||||||
label: 'Experience',
|
label: 'Experience',
|
||||||
@@ -79,13 +92,32 @@ export const treeNodes: TreeNode[] = [
|
|||||||
size: 'large',
|
size: 'large',
|
||||||
icon: '/icons/experience.svg',
|
icon: '/icons/experience.svg',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Contract Parent Node
|
||||||
|
{
|
||||||
|
id: 'exp-contract',
|
||||||
|
label: 'DHA - Web and Mobile Technology',
|
||||||
|
description: 'Continuous work supporting the same government client through multiple contracting companies as the contract was re-competed and awarded.',
|
||||||
|
x: 320,
|
||||||
|
y: -220,
|
||||||
|
parentId: 'exp-branch',
|
||||||
|
category: 'experience',
|
||||||
|
size: 'medium',
|
||||||
|
icon: '/icons/contract.svg',
|
||||||
|
contractName: 'DHA WMT',
|
||||||
|
client: 'Defense Health Agency',
|
||||||
|
contractStart: 'October 2020',
|
||||||
|
contractEnd: 'Present',
|
||||||
|
},
|
||||||
|
|
||||||
|
// Job 1 - First company (starting point of the arc)
|
||||||
{
|
{
|
||||||
id: 'exp-job1',
|
id: 'exp-job1',
|
||||||
label: 'Software Engineer',
|
label: 'Software Engineer',
|
||||||
description: 'Junior developer at the start of my career.',
|
description: 'Junior developer at the start of my career.',
|
||||||
x: 300,
|
x: 420,
|
||||||
y: -200,
|
y: -280,
|
||||||
parentId: 'exp-branch',
|
parentId: 'exp-contract',
|
||||||
category: 'experience',
|
category: 'experience',
|
||||||
size: 'small',
|
size: 'small',
|
||||||
icon: '/icons/insightglobal.webp',
|
icon: '/icons/insightglobal.webp',
|
||||||
@@ -98,12 +130,14 @@ export const treeNodes: TreeNode[] = [
|
|||||||
'Executed a critical database migration from MySQL to MSSQL, ensuring data integrity during the transfer and optimizing schema definitions for the new environment',
|
'Executed a critical database migration from MySQL to MSSQL, ensuring data integrity during the transfer and optimizing schema definitions for the new environment',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Job 2 - Arc continues upward
|
||||||
{
|
{
|
||||||
id: 'exp-job2',
|
id: 'exp-job2',
|
||||||
label: 'Software Engineer',
|
label: 'Software Engineer',
|
||||||
description: 'Slightly more experienced still early in my career.',
|
description: 'Growing my skills and taking on more responsibility.',
|
||||||
x: 400,
|
x: 500,
|
||||||
y: -280,
|
y: -350,
|
||||||
parentId: 'exp-job1',
|
parentId: 'exp-job1',
|
||||||
category: 'experience',
|
category: 'experience',
|
||||||
size: 'small',
|
size: 'small',
|
||||||
@@ -118,12 +152,14 @@ export const treeNodes: TreeNode[] = [
|
|||||||
'Supported engineering team growth by conducting code reviews and leading the onboarding process for new developers, ensuring smooth knowledge transfer and adherence to coding standards',
|
'Supported engineering team growth by conducting code reviews and leading the onboarding process for new developers, ensuring smooth knowledge transfer and adherence to coding standards',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Job 3 - Peak of the arc
|
||||||
{
|
{
|
||||||
id: 'exp-job3',
|
id: 'exp-job3',
|
||||||
label: 'Intermediate Software Engineer',
|
label: 'Intermediate Software Engineer',
|
||||||
description: 'Stepping into a more senior role.',
|
description: 'Stepping into a more senior role.',
|
||||||
x: 500,
|
x: 560,
|
||||||
y: -220,
|
y: -430,
|
||||||
parentId: 'exp-job2',
|
parentId: 'exp-job2',
|
||||||
category: 'experience',
|
category: 'experience',
|
||||||
size: 'small',
|
size: 'small',
|
||||||
@@ -138,12 +174,14 @@ export const treeNodes: TreeNode[] = [
|
|||||||
"Supported the engineering team's migration to containerized workflows by configuring, testing, and troubleshooting custom Docker environments, ensuring consistent application behavior across development and production",
|
"Supported the engineering team's migration to containerized workflows by configuring, testing, and troubleshooting custom Docker environments, ensuring consistent application behavior across development and production",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Job 4 - Continuing upward and right
|
||||||
{
|
{
|
||||||
id: 'exp-job4',
|
id: 'exp-job4',
|
||||||
label: 'Intermediate Software Engineer',
|
label: 'Intermediate Software Engineer',
|
||||||
description: 'Where one journey ends, another begins.',
|
description: 'Where one journey ends, another begins.',
|
||||||
x: 580,
|
x: 600,
|
||||||
y: -300,
|
y: -510,
|
||||||
parentId: 'exp-job3',
|
parentId: 'exp-job3',
|
||||||
category: 'experience',
|
category: 'experience',
|
||||||
size: 'small',
|
size: 'small',
|
||||||
@@ -158,12 +196,14 @@ export const treeNodes: TreeNode[] = [
|
|||||||
'Engineered adaptive network logic that monitors packet loss in real-time and dynamically adjusts video stream quality, ensuring connection stability and optimal user experience during bandwidth fluctuations',
|
'Engineered adaptive network logic that monitors packet loss in real-time and dynamically adjusts video stream quality, ensuring connection stability and optimal user experience during bandwidth fluctuations',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Job 5 - Current (highest point, prominent)
|
||||||
{
|
{
|
||||||
id: 'exp-job5',
|
id: 'exp-job5',
|
||||||
label: 'Lead Associate',
|
label: 'Lead Associate',
|
||||||
description: 'Where I am now.',
|
description: 'Where I am now.',
|
||||||
x: 650,
|
x: 620,
|
||||||
y: -380,
|
y: -590,
|
||||||
parentId: 'exp-job4',
|
parentId: 'exp-job4',
|
||||||
category: 'experience',
|
category: 'experience',
|
||||||
size: 'medium',
|
size: 'medium',
|
||||||
@@ -177,37 +217,104 @@ export const treeNodes: TreeNode[] = [
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
// ========== PROJECTS (Top Left Quadrant) ==========
|
// ========== PROJECTS (Upper Left Quadrant) ==========
|
||||||
{
|
{
|
||||||
id: 'proj-branch',
|
id: 'proj-branch',
|
||||||
label: 'Projects',
|
label: 'Projects',
|
||||||
description: 'Things I have built.',
|
description: 'Personal projects and open-source contributions.',
|
||||||
x: -150,
|
x: -200,
|
||||||
y: -100,
|
y: -150,
|
||||||
parentId: 'origin',
|
parentId: 'origin',
|
||||||
category: 'projects',
|
category: 'projects',
|
||||||
size: 'large',
|
size: 'large',
|
||||||
icon: '/icons/projects.svg'
|
icon: '/icons/projects.svg',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Open Source Libraries
|
||||||
{
|
{
|
||||||
id: 'proj-1',
|
id: 'proj-opensource',
|
||||||
label: 'Portfolio Site',
|
label: 'Open Source',
|
||||||
description: 'This very skill tree you are exploring right now!',
|
description: 'Published packages and libraries available for the community.',
|
||||||
x: -300,
|
x: -350,
|
||||||
y: -180,
|
y: -220,
|
||||||
parentId: 'proj-branch',
|
parentId: 'proj-branch',
|
||||||
category: 'projects',
|
category: 'projects',
|
||||||
size: 'small',
|
size: 'medium',
|
||||||
|
icon: '/icons/opensource.svg',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Personal Tools
|
||||||
{
|
{
|
||||||
id: 'proj-2',
|
id: 'proj-tools',
|
||||||
label: 'Side Project',
|
label: 'Personal Tools',
|
||||||
description: 'A passion project I built to learn new technologies.',
|
description: 'Applications built to solve real problems.',
|
||||||
x: -320,
|
x: -350,
|
||||||
y: -80,
|
y: -80,
|
||||||
parentId: 'proj-branch',
|
parentId: 'proj-branch',
|
||||||
category: 'projects',
|
category: 'projects',
|
||||||
|
size: 'medium',
|
||||||
|
icon: '/icons/tools.svg',
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========== OPEN SOURCE CHILDREN ==========
|
||||||
|
{
|
||||||
|
id: 'proj-tvdbapi',
|
||||||
|
label: 'tvdbAPI',
|
||||||
|
description: 'Python library for accessing The TVDB API. Fetch show info, episodes, actors, and images with a simple interface. Published on PyPI.',
|
||||||
|
x: -420,
|
||||||
|
y: -310,
|
||||||
|
parentId: 'proj-opensource',
|
||||||
|
category: 'projects',
|
||||||
size: 'small',
|
size: 'small',
|
||||||
|
icon: '/icons/python.svg',
|
||||||
|
techStack: ['Python', 'REST API', 'PyPI', 'GitHub Actions', 'Unit Testing'],
|
||||||
|
repoUrl: 'https://github.com/TehRiehlDeal/TVDB-API',
|
||||||
|
pypiUrl: 'https://pypi.org/project/tvdbAPI/',
|
||||||
|
status: 'maintained'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'proj-tmdbapi',
|
||||||
|
label: 'tmdbAPI',
|
||||||
|
description: 'Python library for The Movie Database API. Search for movies, TV shows, actors, and collections with comprehensive query options.',
|
||||||
|
x: -500,
|
||||||
|
y: -250,
|
||||||
|
parentId: 'proj-opensource',
|
||||||
|
category: 'projects',
|
||||||
|
size: 'small',
|
||||||
|
icon: '/icons/python.svg',
|
||||||
|
techStack: ['Python', 'REST API', 'PyPI', 'GitHub Actions', 'Unit Testing'],
|
||||||
|
repoUrl: 'https://github.com/TehRiehlDeal/tmdbAPI',
|
||||||
|
pypiUrl: 'https://pypi.org/project/tvdbAPI/',
|
||||||
|
status: 'maintained'
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========== PERSONAL TOOLS CHILDREN ==========
|
||||||
|
{
|
||||||
|
id: 'proj-renameshow',
|
||||||
|
label: 'Rename Show',
|
||||||
|
description: 'Desktop application for batch renaming TV show files using metadata from TVDB and TMDB. Features undo support, multi-episode detection, and automatic show searching.',
|
||||||
|
x: -450,
|
||||||
|
y: -130,
|
||||||
|
parentId: 'proj-tools',
|
||||||
|
category: 'projects',
|
||||||
|
size: 'small',
|
||||||
|
icon: '/icons/desktop.svg',
|
||||||
|
techStack: ['Python', 'Tkinter', 'tvdbAPI', 'tmdbAPI', 'PIL'],
|
||||||
|
repoUrl: 'https://github.com/TehRiehlDeal/python-file-rename',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'proj-portfolio',
|
||||||
|
label: 'Skill Tree Portfolio',
|
||||||
|
description: 'This interactive portfolio you\'re exploring right now! A Path of Exile inspired skill tree built with modern web technologies.',
|
||||||
|
x: -450,
|
||||||
|
y: -50,
|
||||||
|
parentId: 'proj-tools',
|
||||||
|
category: 'projects',
|
||||||
|
size: 'small',
|
||||||
|
icon: '/icons/svelte.svg',
|
||||||
|
techStack: ['SvelteKit', 'TypeScript', 'PixiJS', 'GSAP', 'Tailwind CSS'],
|
||||||
|
projectUrl: 'https://yourportfolio.com',
|
||||||
|
repoUrl: 'https://github.com/yourusername/skill-tree-portfolio',
|
||||||
},
|
},
|
||||||
|
|
||||||
// ========== SKILLS (Bottom Right Quadrant) ==========
|
// ========== SKILLS (Bottom Right Quadrant) ==========
|
||||||
|
|||||||
Reference in new issue
Block a user