// STACK TECNOLÓGICO — Logos/iconos de tecnologías
const stackCategories = [
{
title: 'Frontend',
color: '#22D3EE',
items: [
{ n: 'React', icon: },
{ n: 'Next.js', icon: },
{ n: 'TypeScript', icon: },
{ n: 'Vue', icon: },
{ n: 'Tailwind', icon: },
],
},
{
title: 'Backend',
color: '#4F8CFF',
items: [
{ n: 'Node.js', icon: },
{ n: 'NestJS', icon: },
{ n: 'Laravel', icon: },
{ n: 'Python', icon: },
{ n: '.NET', icon: },
],
},
{
title: 'Datos & Infra',
color: '#A855F7',
items: [
{ n: 'PostgreSQL', icon: <> > },
{ n: 'MySQL', icon: <> > },
{ n: 'MongoDB', icon: },
{ n: 'Docker', icon: <> > },
{ n: 'AWS', icon: <> > },
],
},
{
title: 'Móvil',
color: '#4F8CFF',
items: [
{ n: 'React Native', icon: <> > },
{ n: 'Flutter', icon: },
{ n: 'Swift', icon: },
{ n: 'Kotlin', icon: },
],
},
];
function TechBadge({ item, color }) {
return (
{
e.currentTarget.style.borderColor = `${color}66`;
e.currentTarget.style.boxShadow = `0 0 30px ${color}33`;
e.currentTarget.style.transform = 'translateY(-3px)';
}}
onMouseLeave={(e)=>{
e.currentTarget.style.borderColor = 'var(--line)';
e.currentTarget.style.boxShadow = 'none';
e.currentTarget.style.transform = 'none';
}}
>
{item.icon}
{item.n}
);
}
function Stack() {
return (
Stack tecnológico
Las herramientas correctas para cada problema.
No somos religiosos con un solo stack. Elegimos tecnologías estables,
con comunidad sólida y que permiten que tu sistema siga evolucionando dentro de 5 o 10 años.
{stackCategories.map(cat => (
))}
);
}
window.Stack = Stack;