@@ -2,14 +2,19 @@ import { useRef, type ReactNode } from 'react'
22import { useScrollReveal } from '../../hooks/useScrollReveal'
33import { useLang } from '../../context/LangContext'
44
5+ interface Tool {
6+ label : string
7+ color ?: string
8+ }
9+
510interface Domain {
611 id : string
712 color : string
813 badge ?: string
914 titleKey : string
1015 subKey : string
1116 icon : ReactNode
12- tools : string [ ]
17+ tools : Tool [ ]
1318}
1419
1520const DOMAINS : Domain [ ] = [
@@ -24,20 +29,84 @@ const DOMAINS: Domain[] = [
2429 < path d = "M4.93 4.93l2.12 2.12M16.95 16.95l2.12 2.12M4.93 19.07l2.12-2.12M16.95 7.05l2.12-2.12" />
2530 </ svg >
2631 ) ,
27- tools : [ 'Anthropic API' , 'OpenAI API' , 'Grok — xAI' , 'Gemini API' , 'Vertex AI' , 'Google AI Studio' , 'LLM Integration' , 'Agents & Workflows' ] ,
32+ tools : [
33+ { label : 'Anthropic API' , color : '#d97706' } ,
34+ { label : 'OpenAI API' , color : '#10a37f' } ,
35+ { label : 'Grok — xAI' , color : '#e2e8f0' } ,
36+ { label : 'Gemini API' , color : '#4285f4' } ,
37+ { label : 'Vertex AI' , color : '#34a853' } ,
38+ { label : 'Google AI Studio' , color : '#ea4335' } ,
39+ { label : 'LLM Pipelines' } ,
40+ { label : 'Multi-agent Systems' } ,
41+ { label : 'n8n AI Workflows' , color : '#ef6c00' } ,
42+ ] ,
2843 } ,
2944 {
30- id : 'cloud ' , color : '#38bdf8 ' ,
31- titleKey : 'Cloud & Infra ' , subKey : 'skills.cloud .sub' ,
45+ id : 'saas ' , color : '#22d3ee' , badge : 'LATAM ',
46+ titleKey : 'skills.saas.title ' , subKey : 'skills.saas .sub' ,
3247 icon : (
3348 < svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "1.8" strokeLinecap = "round" strokeLinejoin = "round" >
34- < path d = "M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z" />
49+ < rect x = "2" y = "3" width = "20" height = "14" rx = "2" />
50+ < path d = "M8 21h8M12 17v4" />
51+ < path d = "M7 7h3M7 11h5M14 7h3" />
52+ </ svg >
53+ ) ,
54+ tools : [
55+ { label : 'SaaS Architecture' } ,
56+ { label : 'ERP Systems' } ,
57+ { label : 'Multi-tenant Apps' } ,
58+ { label : 'CRM / POS' } ,
59+ { label : 'Fiscal Integrations' } ,
60+ { label : 'Vertical SaaS LATAM' } ,
61+ { label : 'Turborepo Monorepo' , color : '#ef4444' } ,
62+ { label : 'tRPC' , color : '#398ccb' } ,
63+ { label : 'Drizzle ORM' , color : '#c4e34a' } ,
64+ ] ,
65+ } ,
66+ {
67+ id : 'dev' , color : '#34d399' , badge : 'FAST BUILDER' ,
68+ titleKey : 'Web & Apps' , subKey : 'skills.dev.sub' ,
69+ icon : (
70+ < svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "1.8" strokeLinecap = "round" strokeLinejoin = "round" >
71+ < polyline points = "16 18 22 12 16 6" />
72+ < polyline points = "8 6 2 12 8 18" />
3573 </ svg >
3674 ) ,
37- tools : [ 'GCP (Google Cloud)' , 'Terraform' , 'VPS Linux' , 'Docker / Compose' , 'Linux' , 'macOS' , 'Bash Scripting' ] ,
75+ tools : [
76+ { label : 'TypeScript' , color : '#3178c6' } ,
77+ { label : 'React' , color : '#61dafb' } ,
78+ { label : 'Next.js' , color : '#e2e8f0' } ,
79+ { label : 'Node.js' , color : '#539e43' } ,
80+ { label : 'Astro' , color : '#ff5d01' } ,
81+ { label : 'Flutter' , color : '#54c5f8' } ,
82+ { label : 'REST API Design' } ,
83+ { label : 'NestJS' , color : '#e0234e' } ,
84+ { label : 'Git / CI/CD' , color : '#f05032' } ,
85+ ] ,
3886 } ,
3987 {
40- id : 'bots' , color : '#fb923c' ,
88+ id : 'python' , color : '#fb923c' ,
89+ titleKey : 'skills.python.title' , subKey : 'skills.python.sub' ,
90+ icon : (
91+ < svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "1.8" strokeLinecap = "round" strokeLinejoin = "round" >
92+ < path d = "M8 3h8a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H8a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h8" />
93+ < circle cx = "9.5" cy = "7.5" r = ".5" fill = "currentColor" />
94+ < circle cx = "14.5" cy = "16.5" r = ".5" fill = "currentColor" />
95+ </ svg >
96+ ) ,
97+ tools : [
98+ { label : 'Python' , color : '#3776ab' } ,
99+ { label : 'FastAPI' , color : '#009688' } ,
100+ { label : 'Django' , color : '#0c4b33' } ,
101+ { label : 'Pydantic' , color : '#e92063' } ,
102+ { label : 'PostgreSQL' , color : '#336791' } ,
103+ { label : 'Pandas / NumPy' } ,
104+ { label : 'PDF Processing' } ,
105+ { label : 'Script Automation' } ,
106+ ] ,
107+ } ,
108+ {
109+ id : 'bots' , color : '#f472b6' ,
41110 titleKey : 'skills.bots.title' , subKey : 'skills.bots.sub' ,
42111 icon : (
43112 < svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "1.8" strokeLinecap = "round" strokeLinejoin = "round" >
@@ -47,18 +116,33 @@ const DOMAINS: Domain[] = [
47116 < path d = "M8 15h.01M12 15h.01M16 15h.01" />
48117 </ svg >
49118 ) ,
50- tools : [ 'Python Ecosystem' , 'Jupyter Notebooks' , 'LLM Pipelines' , 'Script Automation' ] ,
119+ tools : [
120+ { label : 'WhatsApp API' , color : '#25d366' } ,
121+ { label : 'Telegram API' , color : '#2ca5e0' } ,
122+ { label : 'AI Chatbots' } ,
123+ { label : 'n8n Workflows' , color : '#ef6c00' } ,
124+ { label : 'LLM Integration' } ,
125+ { label : 'Automation Pipelines' } ,
126+ { label : 'Bot Builders' } ,
127+ ] ,
51128 } ,
52129 {
53- id : 'dev ' , color : '#34d399 ' ,
54- titleKey : 'Dev & APIs ' , subKey : 'skills.dev .sub' ,
130+ id : 'cloud ' , color : '#38bdf8 ' ,
131+ titleKey : 'Cloud & DevOps ' , subKey : 'skills.cloud .sub' ,
55132 icon : (
56133 < svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "1.8" strokeLinecap = "round" strokeLinejoin = "round" >
57- < polyline points = "16 18 22 12 16 6" />
58- < polyline points = "8 6 2 12 8 18" />
134+ < path d = "M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z" />
59135 </ svg >
60136 ) ,
61- tools : [ 'TypeScript / JS' , 'React / Next.js' , 'Node.js' , 'PostgreSQL' , 'REST API Design' , 'Git / CI/CD' ] ,
137+ tools : [
138+ { label : 'GCP' , color : '#4285f4' } ,
139+ { label : 'Terraform' , color : '#7b42bc' } ,
140+ { label : 'Docker / Compose' , color : '#2496ed' } ,
141+ { label : 'GitHub Actions' , color : '#e2e8f0' } ,
142+ { label : 'VPS Linux' , color : '#fcc624' } ,
143+ { label : 'Caddy / Traefik' } ,
144+ { label : 'Bash Scripting' } ,
145+ ] ,
62146 } ,
63147]
64148
@@ -101,7 +185,15 @@ export function Skills() {
101185 </ div >
102186 < div className = "sd-tools" >
103187 { d . tools . map ( tool => (
104- < span key = { tool } className = "sd-tool" > { tool } </ span >
188+ < span key = { tool . label } className = "sd-tool" >
189+ { tool . color && (
190+ < span
191+ className = "sd-tool-dot"
192+ style = { { background : tool . color } }
193+ />
194+ ) }
195+ { tool . label }
196+ </ span >
105197 ) ) }
106198 </ div >
107199 </ div >
0 commit comments