// TechStack.jsx — thomasgoodman.me const stackGroups = [ { label: 'Strong / Production-Ready', comment: '// daily drivers', items: [ 'JavaScript (ES6+)', 'Node.js', 'Express', 'React', 'Next.js', 'HTML5', 'CSS3', 'Tailwind CSS', 'Material UI (MUI)', 'Bootstrap', 'REST APIs', 'MySQL', 'PostgreSQL', 'MongoDB', 'Docker', 'Docker Compose', 'GitHub Actions CI/CD', 'Git', 'GitHub', 'Agile/Scrum', 'Unit Testing', 'Responsive Design', 'Figma', ], tier: 'strong', }, { label: 'Working Knowledge', comment: '// used in projects, still deepening', items: ['TypeScript', 'Azure', 'AWS', 'GCP', 'Redis', 'Linux', 'Bash'], tier: 'working', }, { label: 'Elementary', comment: '// foundational, not production', items: ['Python'], tier: 'elementary', }, { label: 'Coursework Exposure', comment: '// academic only', items: ['Java', 'Native C'], tier: 'coursework', }, { label: 'Currently Learning', comment: '// in progress', items: ['C# / .NET'], tier: 'learning', }, ]; const tierStyles = { strong: { color: 'var(--color-mono)', bg: 'var(--color-accent-subtle)', border: 'var(--color-accent-muted)' }, working: { color: 'var(--color-text-secondary)', bg: 'var(--color-bg-raised)', border: 'var(--color-border-default)' }, elementary: { color: 'var(--color-text-muted)', bg: 'var(--color-bg-raised)', border: 'var(--color-border-subtle)' }, coursework: { color: 'var(--color-text-muted)', bg: 'var(--color-bg-raised)', border: 'var(--color-border-subtle)' }, learning: { color: 'var(--color-accent)', bg: 'var(--color-accent-subtle)', border: 'var(--color-accent-muted)' }, }; const TechStack = () => (

Tech Stack

{stackGroups.map(group => { const s = tierStyles[group.tier]; return (
{group.label} {group.comment}
{group.items.map(item => ( {item} ))}
); })}
); Object.assign(window, { TechStack });