refactor: restructure project to classic MVC pattern

This commit is contained in:
2025-09-09 19:57:43 +02:00
parent a28728af2a
commit 2a8d5d093c
58 changed files with 1601 additions and 1991 deletions

View File

@@ -0,0 +1,25 @@
{
"content": [
{
"id": "cert1",
"name": "AWS Certified Developer Associate",
"issuer": "Amazon Web Services",
"date": "2022",
"credentialId": "AWS-123456"
},
{
"id": "cert2",
"name": "MongoDB Certified Developer",
"issuer": "MongoDB Inc.",
"date": "2021",
"credentialId": "MONGO-789012"
},
{
"id": "cert3",
"name": "Certified Scrum Master",
"issuer": "Scrum Alliance",
"date": "2020",
"credentialId": "CSM-345678"
}
]
}

View File

@@ -0,0 +1,83 @@
{
"content": {
"welcome": {
"message": "¡Hola! 👋 Soy el asistente virtual de Pablo. ¿Te interesa saber sobre su trabajo en backend, despliegue automatizado o LLMs locales?",
"quickActions": [
{
"text": "¿Cuál es su experiencia laboral?",
"category": "experience"
},
{
"text": "¿Qué tecnologías domina?",
"category": "skills"
},
{
"text": "Cuéntame sobre sus proyectos",
"category": "projects"
},
{
"text": "¿Cómo puedo contactarlo?",
"category": "contact"
}
]
},
"responses": {
"experience": {
"keywords": [
"experiencia",
"trabajo",
"laboral",
"empresa",
"puesto",
"carrera"
],
"response": "Pablo trabaja actualmente como Arquitecto de Software en la Xunta de Galicia, liderando desarrollos backend complejos. Anteriormente ha trabajado como consultor y freelance, siempre enfocado en eficiencia y automatización."
},
"skills": {
"keywords": [
"habilidades",
"tecnologías",
"stack",
"lenguajes",
"frameworks"
],
"response": "Domina tecnologías como Java (Spring Boot), Vue.js (Quasar), despliegue automatizado con Docker y GitHub Actions, y recientemente integración con modelos LLM offline."
},
"projects": {
"keywords": [
"proyectos",
"desarrollado",
"creado",
"portfolio",
"aplicaciones"
],
"response": "Ha desarrollado una app LLM offline en Java, un sistema de reservas autónomo para un hostel, y una plataforma completa de tramitación electrónica con firma digital y backend distribuido."
},
"contact": {
"keywords": [
"contacto",
"email",
"teléfono",
"linkedin",
"ubicación"
],
"response": "Puedes contactar a Pablo en pablo@pablotj.com o vía LinkedIn: linkedin.com/in/pablotj. Vive en Galicia, España."
},
"education": {
"keywords": [
"educación",
"estudios",
"universidad",
"carrera",
"certificaciones"
],
"response": "Estudió Ingeniería Informática en la Universidade de Vigo. Está certificado en arquitectura Java, GitOps y modelos LLM locales."
}
},
"fallback": [
"Buena pregunta. Pablo valora mucho el rendimiento y la mantenibilidad en sus proyectos.",
"Interesante. Él suele aplicar principios de arquitectura limpia y buenas prácticas DevOps.",
"Siempre busca mantener la simplicidad sin sacrificar funcionalidad o seguridad."
]
}
}

View File

@@ -0,0 +1,12 @@
{
"content": [
{
"id": "edu1",
"institution": "CIFP Daniel Castelao, Vigo",
"degree": "Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Multiplataforma",
"period": "2015 - 2017",
"description": "Formación técnica especializada en desarrollo de aplicaciones móviles y de escritorio multiplataforma, bases de datos, y programación orientada a objetos.",
"grade": "No aplicable"
}
]
}

View File

@@ -0,0 +1,77 @@
{
"content": [
{
"id": "exp1",
"company": "Bahia Software",
"position": "Analista Programador Senior y Líder Tecnológico",
"period": "2019 - Presente",
"location": "O Milladoiro, Galicia, España / Remoto",
"description": "Evolución desde programador junior hasta líder tecnológico. Responsable de análisis, desarrollo y liderazgo técnico.",
"technologies": [
"Java 8",
"Java 11",
"Spring Boot",
"Spring Framework",
"Spring Security",
"Spring Cloud",
"Docker",
"Jenkins",
"Keycloak",
"Vue.js",
"Oracle DB",
"MariaDB",
"SOAP",
"REST",
"WebLogic",
"Tomcat",
"SonarQube",
"JMS",
"Arquitectura Hexagonal"
],
"achievements": [
"Liderazgo técnico en proyectos clave para la AMTEGA",
"Automatización de despliegues y calidad de código con Sonar y Jenkins"
]
},
{
"id": "exp2",
"company": "Optare Solutions",
"position": "Programador Junior",
"period": "2018 - 2019",
"location": "Vigo, Galicia, España",
"description": "Inicio profesional con beca FEUGA y posterior incorporación como programador junior. Participación en proyectos Java, migración de versiones y tareas puntuales relacionadas con VoIP y AWS.",
"technologies": [
"Java",
"Java 8",
"Java 11",
"Angular",
"VoIP",
"AWS"
],
"achievements": [
"Migración de aplicaciones de Java 8 a Java 11",
"Colaboración en desarrollo frontend con Angular",
"Participación en entornos productivos de telecomunicaciones"
]
},
{
"id": "exp3",
"company": "Kidcode",
"position": "Tutor de programación didáctica",
"period": "2017 - 2018",
"location": "Galicia, España",
"description": "Tutor de tiempo libre para iniciación a la programación en niños de entre 5 y 12 años. Uso de herramientas educativas como Arduino, Raspberry Pi, Lego y entornos low-code.",
"technologies": [
"Arduino",
"Raspberry Pi",
"Lego",
"Low-code"
],
"achievements": [
"Diseño de actividades didácticas adaptadas por edades",
"Fomento del pensamiento computacional en edades tempranas",
"Introducción práctica a la robótica educativa"
]
}
]
}

View File

@@ -0,0 +1,23 @@
{
"content": {
"id": -1,
"name": "Pablo de la Torre",
"title": "Softaware Developer",
"subtitle": "Especializado en Java",
"email": "contact@pablotj.com",
"phone": "",
"location": "Pontevedra, Galicia, España",
"avatar": "assets/avatar-bot.png",
"bio": "Desarrollador de software con más de 7 años de experiencia. Apasionado por crear sistemas sólidos, automatizar tareas y trabajar con contenedores. Recientemente, he empezado a explorar modelos LLM locales como parte de mis intereses técnicos.",
"social": [
{
"url": "https://github.com/pablotj",
"platform": "github"
},
{
"url": "https://linkedin.com/in/pablotj",
"platform": "linkedin"
}
]
}
}

View File

@@ -0,0 +1,78 @@
{
"content": [
{
"id": "proj1",
"title": "E-commerce Platform",
"description": "Plataforma completa de comercio electrónico con más de 50,000 usuarios activos mensuales",
"image": "/placeholder.svg?height=300&width=400",
"technologies": [
"Vue.js",
"Node.js",
"PostgreSQL",
"Redis",
"Stripe"
],
"features": [
"Integración con múltiples pasarelas de pago",
"Panel de administración con analytics",
"Sistema de inventario en tiempo real"
],
"metrics": {
"users": "50,000+",
"uptime": "99.9%",
"loadTime": "2s"
},
"demo": "https://demo-ecommerce.com",
"repository": "https://github.com/pablo/ecommerce"
},
{
"id": "proj2",
"title": "Real-time Analytics Dashboard",
"description": "Dashboard empresarial con visualizaciones interactivas y procesamiento de más de 1M eventos/día",
"image": "/placeholder.svg?height=300&width=400",
"technologies": [
"React",
"D3.js",
"Socket.io",
"InfluxDB",
"Node.js"
],
"features": [
"Visualizaciones en tiempo real",
"Exportación de reportes automatizada",
"Alertas personalizables"
],
"metrics": {
"events": "1M+/día",
"reduction": "70% tiempo análisis",
"users": "500+"
},
"demo": "https://analytics-demo.com",
"repository": "https://github.com/pablo/analytics"
},
{
"id": "proj3",
"title": "Microservices Architecture",
"description": "Migración de monolito a arquitectura de microservicios con 12 servicios distribuidos",
"image": "/placeholder.svg?height=300&width=400",
"technologies": [
"Node.js",
"Docker",
"Kubernetes",
"AWS EKS",
"MongoDB"
],
"features": [
"Event Sourcing y CQRS",
"Monitoreo con Prometheus",
"Auto-scaling automático"
],
"metrics": {
"services": "12",
"latencyReduction": "60%",
"availability": "99.95%"
},
"repository": "https://github.com/pablo/microservices"
}
]
}

View File

@@ -0,0 +1,201 @@
{
"content": [
{
"name": "Backend",
"icon": "Server",
"skills": [
{
"name": "Java",
"level": 95,
"years": 7
},
{
"name": "Spring Boot",
"level": 90,
"years": 6
},
{
"name": "Spring Framework",
"level": 85,
"years": 6
},
{
"name": "Spring Security",
"level": 80,
"years": 5
},
{
"name": "Spring Cloud",
"level": 75,
"years": 3
},
{
"name": "Node.js",
"level": 40,
"years": 1
},
{
"name": "Python",
"level": 30,
"years": 1
},
{
"name": "JUnit",
"level": 80,
"years": 5
},
{
"name": "Mockito",
"level": 75,
"years": 4
}
]
},
{
"name": "DevOps",
"icon": "Server",
"skills": [
{
"name": "Docker",
"level": 90,
"years": 5
},
{
"name": "Jenkins",
"level": 85,
"years": 4
},
{
"name": "Keycloak",
"level": 80,
"years": 3
},
{
"name": "CI/CD",
"level": 85,
"years": 4
},
{
"name": "SonarQube",
"level": 75,
"years": 3
},
{
"name": "Linux",
"level": 85,
"years": 6
},
{
"name": "Git",
"level": 90,
"years": 6
},
{
"name": "SVN",
"level": 60,
"years": 4
},
{
"name": "Kubernetes",
"level": 40,
"years": 1
}
]
},
{
"name": "Base de Datos",
"icon": "Server",
"skills": [
{
"name": "Oracle",
"level": 85,
"years": 5
},
{
"name": "MariaDB",
"level": 80,
"years": 4
},
{
"name": "JMS",
"level": 75,
"years": 3
}
]
},
{
"name": "Frontend",
"icon": "Server",
"skills": [
{
"name": "Angular",
"level": 85,
"years": 5
},
{
"name": "Bootstrap",
"level": 75,
"years": 4
},
{
"name": "TypeScript",
"level": 70,
"years": 3
},
{
"name": "Vue.js",
"level": 40,
"years": 1
}
]
},
{
"name": "Methodologies",
"icon": "Server",
"skills": [
{
"name": "Agile",
"level": 85,
"years": 5
},
{
"name": "Scrum",
"level": 80,
"years": 4
},
{
"name": "Kanban",
"level": 70,
"years": 3
}
]
},
{
"name": "Monitoring",
"icon": "Server",
"skills": [
{
"name": "Prometheus",
"level": 30,
"years": 1
},
{
"name": "Grafana",
"level": 30,
"years": 1
}
]
},
{
"name": "Languages",
"icon": "Server",
"skills": [
{
"name": "Inglés",
"level": 80,
"years": 7
}
]
}
]
}