diff --git a/data/cv-es.json b/data/cv-es.json
index 620949d..d2b9086 100644
--- a/data/cv-es.json
+++ b/data/cv-es.json
@@ -333,14 +333,35 @@
"APIs OpenAI y Anthropic"
]
},
+ {
+ "category": "Lenguajes de Programación",
+ "proficiency": 4,
+ "items": [
+ "JavaScript (ES6+)",
+ "Go (Golang)",
+ "Java",
+ "Groovy",
+ "PHP",
+ "XML",
+ "XSLT",
+ "Action Script",
+ "Shell Scripts (Unix)",
+ "C",
+ "C++"
+ ]
+ },
{
"category": "Ecosistema JavaScript",
"proficiency": 5,
"items": [
"JavaScript Avanzado (ES6+)",
"React y Ecosistema React",
+ "Redux",
+ "Flux",
"Node.js y Express",
- "Webpack, Vite, Herramientas de Build Modernas"
+ "Webpack, Vite",
+ "Gulp",
+ "Grunt"
]
},
{
@@ -350,7 +371,43 @@
"HTML5, CSS3, Web Semántica",
"Diseño y Desarrollo de APIs REST",
"LESS, SASS, Preprocesadores CSS",
- "Diseño Responsive y Mobile-First"
+ "Diseño Responsive y Mobile-First",
+ "JSP",
+ "PHP",
+ "Handlebars",
+ "Moustache",
+ "Velocity",
+ "Freemarker",
+ "jQuery",
+ "mooTools",
+ "DOM",
+ "Ajax",
+ "SEO",
+ "WebServices"
+ ]
+ },
+ {
+ "category": "Frameworks PHP",
+ "proficiency": 4,
+ "items": [
+ "Yii Framework",
+ "Zend Framework",
+ "API de Wordpress",
+ "API de Joomla"
+ ]
+ },
+ {
+ "category": "Frameworks Java",
+ "proficiency": 4,
+ "items": [
+ "Play! Framework",
+ "Struts",
+ "Spring Framework",
+ "Hibernate",
+ "Ibatis",
+ "Magnolia CMS",
+ "XWiki",
+ "Framework TESEO"
]
},
{
@@ -364,6 +421,33 @@
"PHP"
]
},
+ {
+ "category": "Servidores de Aplicaciones",
+ "proficiency": 4,
+ "items": [
+ "Apache",
+ "WAMP",
+ "MAMP",
+ "Tomcat",
+ "JBoss",
+ "Resin",
+ "Jetty",
+ "Websphere",
+ "Weblogic"
+ ]
+ },
+ {
+ "category": "CMS y Entornos de Producción Web",
+ "proficiency": 4,
+ "items": [
+ "Joomla",
+ "Wordpress",
+ "RapidWeaver",
+ "Servoy",
+ "WebRatio",
+ "Magnolia CMS"
+ ]
+ },
{
"category": "Bases de Datos",
"proficiency": 4,
@@ -372,6 +456,8 @@
"MySQL",
"Oracle",
"MongoDB (NoSQL)",
+ "Hypersonic",
+ "Dominio de SQL",
"Diseño y Optimización de Bases de Datos"
]
},
@@ -394,6 +480,16 @@
"Testing Automatizado",
"Metodologías Ágiles"
]
+ },
+ {
+ "category": "Herramientas de Diseño",
+ "proficiency": 3,
+ "items": [
+ "Corel Draw",
+ "Adobe PhotoShop",
+ "Adobe Illustrator",
+ "GIMP"
+ ]
}
],
"soft_skills": [
@@ -405,24 +501,38 @@
"Formación y Mentoría",
"Gestión de Relaciones con Clientes",
"Flexibilidad y Adaptabilidad",
- "Marketing y Gestión de Recursos"
+ "Marketing y Gestión de Recursos",
+ "Preparación y puesta en marcha de proyectos",
+ "Comunicación fluida con los clientes",
+ "Contratación de personal",
+ "Gestión de tareas",
+ "Reportes mensuales"
]
},
"languages": [
{
"language": "Español",
"proficiency": "Nativo",
- "level": 5
+ "level": 5,
+ "detail": "Nativo"
+ },
+ {
+ "language": "Catalán",
+ "proficiency": "Comprensión",
+ "level": 2,
+ "detail": "Comprensión"
},
{
"language": "Inglés",
"proficiency": "Profesional Avanzado",
- "level": 4
+ "level": 4,
+ "detail": "Oral (Medio/Alto) Escrito (Alto)"
},
{
"language": "Italiano",
"proficiency": "Intermedio",
- "level": 3
+ "level": 3,
+ "detail": "Oral (Medio/Alto) Escrito (Medio)"
}
],
"projects": [
@@ -559,8 +669,84 @@
"description": "Certificación de protección de datos y cumplimiento GDPR"
}
],
+ "courses": [
+ {
+ "title": "Servoy World 2011",
+ "institution": "Servoy",
+ "location": "Amsterdam",
+ "date": "2011-02",
+ "duration": "3 días",
+ "description": "Convención bianual que se celebra en Amsterdam en la que se discute acerca del mundo Servoy."
+ },
+ {
+ "title": "Formador de Formadores",
+ "institution": "FOREM Extremadura",
+ "location": "Cáceres",
+ "date": "2009-06",
+ "duration": "150 horas",
+ "description": "Realizado con aprovechamiento curso de Metodología Didáctica (Formador de Formadores)"
+ },
+ {
+ "title": "Windows 2003 Server",
+ "institution": "Cámara de Comercio de Cáceres",
+ "location": "Cáceres",
+ "date": "2006-01",
+ "duration": "80 horas",
+ "description": "Curso de 80 Horas impartido por la Cámara de Comercio de Cáceres."
+ },
+ {
+ "title": "I Jornada Extremeña sobre la Industria del Software",
+ "institution": "Universidad de Extremadura",
+ "location": "Cáceres",
+ "date": "2005-07",
+ "duration": "3 días",
+ "description": "Jornadas de 3 días de duración impartidas por la Universidad de Extremadura."
+ }
+ ],
+ "references": [
+ {
+ "title": "Cartas de recomendación de TwenTiC",
+ "url": "http://www.drolosoft.com/2010/downloads/recomendacion.pdf",
+ "type": "recommendation"
+ },
+ {
+ "title": "Carta de presentación",
+ "url": "http://www.domestika.org/empleo/demanda/txeo",
+ "type": "presentation"
+ },
+ {
+ "title": "Portfolio Completo (Inglés)",
+ "url": "http://www.behance.net/txeo",
+ "type": "portfolio"
+ },
+ {
+ "title": "Portfolio Completo (Castellano)",
+ "url": "http://www.domestika.org/portfolios/txeo",
+ "type": "portfolio"
+ },
+ {
+ "title": "Perfil de LinkedIn",
+ "url": "https://www.linkedin.com/in/juan-andr%C3%A9s-moreno-rubio-3277729/",
+ "type": "profile"
+ },
+ {
+ "title": "Perfil de Tecnoempleo",
+ "url": "https://www.tecnoempleo.com/juan-andres-moreno-rubio.mpt",
+ "type": "profile"
+ },
+ {
+ "title": "Currículum Vitae en PDF en Inglés",
+ "url": "http://www.morenoyrubio.com/cv/cv_jamr_2021_en.pdf",
+ "type": "cv"
+ },
+ {
+ "title": "Currículum Vitae Cronológico",
+ "url": "http://morenoyrubio.com/cv/cv_cronologico_jamr_2021_es.pdf",
+ "type": "cv"
+ }
+ ],
"other": {
- "driverLicense": "Tipo C"
+ "driverLicense": "Tipo B"
},
"meta": {
"version": "2024",
diff --git a/internal/models/cv.go b/internal/models/cv.go
index ebcb2e9..43a59c6 100644
--- a/internal/models/cv.go
+++ b/internal/models/cv.go
@@ -18,6 +18,8 @@ type CV struct {
Projects []Project `json:"projects"`
Awards []Award `json:"awards"`
Certifications []Certification `json:"certifications"`
+ Courses []Course `json:"courses"`
+ References []Reference `json:"references"`
Other Other `json:"other"`
Meta Meta `json:"meta"`
}
@@ -90,6 +92,7 @@ type Language struct {
Language string `json:"language"`
Proficiency string `json:"proficiency"`
Level int `json:"level"`
+ Detail string `json:"detail,omitempty"` // Optional detail like "Oral (Medio/Alto) Escrito (Alto)"
}
type Project struct {
@@ -116,6 +119,21 @@ type Certification struct {
Description string `json:"description"`
}
+type Course struct {
+ Title string `json:"title"`
+ Institution string `json:"institution"`
+ Location string `json:"location"`
+ Date string `json:"date"`
+ Duration string `json:"duration"`
+ Description string `json:"description"`
+}
+
+type Reference struct {
+ Title string `json:"title"`
+ URL string `json:"url"`
+ Type string `json:"type"` // "recommendation", "portfolio", "profile", "cv", "presentation"
+}
+
type Other struct {
DriverLicense string `json:"driverLicense"`
}
diff --git a/static/css/main.css b/static/css/main.css
index 4a7c0f2..c607c09 100644
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -427,6 +427,73 @@ a:hover {
.language-item {
font-size: 0.9rem;
color: var(--text-dark);
+ margin-bottom: 0.5rem;
+}
+
+.language-item small {
+ display: block;
+ font-size: 0.8em;
+ margin-top: 0.2rem;
+ font-style: italic;
+}
+
+/* Courses */
+.course-item {
+ margin-bottom: 1rem;
+ padding-bottom: 0.8rem;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+.course-item:last-child {
+ border-bottom: none;
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+
+.course-item strong {
+ font-size: 0.95em;
+ color: var(--text-dark);
+ line-height: 1.3;
+}
+
+.course-item small {
+ display: block;
+ font-size: 0.85em;
+ color: var(--text-gray);
+ margin-top: 0.2rem;
+}
+
+.course-desc {
+ font-size: 0.85em;
+ color: var(--text-gray);
+ margin-top: 0.4rem;
+ line-height: 1.4;
+ text-align: justify;
+}
+
+/* References */
+.reference-item {
+ margin-bottom: 0.6rem;
+ line-height: 1.4;
+}
+
+.reference-item a {
+ font-size: 0.9em;
+ color: var(--accent-blue);
+ text-decoration: none;
+ word-break: break-word;
+}
+
+.reference-item a:hover {
+ text-decoration: underline;
+}
+
+.ref-type {
+ display: block;
+ font-size: 0.8em;
+ color: var(--text-gray);
+ font-style: italic;
+ margin-top: 0.2rem;
}
/* Footer */
diff --git a/templates/cv-content.html b/templates/cv-content.html
index 337f192..54e1d5d 100644
--- a/templates/cv-content.html
+++ b/templates/cv-content.html
@@ -13,39 +13,70 @@
@@ -119,15 +150,4 @@
{{end}}
-
- {{if eq .Lang "es"}}Idiomas{{else}}Languages{{end}}
-