|
110 | 110 | "projects": { |
111 | 111 | "title": "Proyectos", |
112 | 112 |
|
113 | | - "labels": { |
114 | | - "problem": "Problema", |
115 | | - "solution": "Solución", |
116 | | - "result": "Resultado" |
117 | | - }, |
| 113 | + "psr_labels": { "problem": "Problema", "solution": "Solución", "result": "Resultado" }, |
| 114 | + "case_labels": { "problem": "Problema", "solution": "Solución", "signal": "Señal" }, |
118 | 115 |
|
119 | 116 | "p1_title": "WEB-DE-PROTOCOLOS-HSJD", |
120 | 117 | "p1_desc": "Aplicación desarrollada con PowerApps y SharePoint para que cada empleado acceda solo a los protocolos que le corresponden según su categoría y servicio.", |
121 | 118 | "p1_why": "Aprendí a integrar herramientas heterogéneas en un flujo coherente que automatiza tareas y reduce errores manuales. Fue un paso real hacia una “solución completa”.", |
122 | | - "p1_problem": "Los empleados no podían encontrar rápido los protocolos correctos según su rol/servicio.", |
123 | | - "p1_solution": "PowerApps + SharePoint con filtrado por categoría/servicio y flujo de versiones.", |
124 | | - "p1_result": "Evidencia: repositorio y capturas del flujo; app usada en contexto real de prácticas.", |
| 119 | + "p1_problem": "Los empleados necesitaban encontrar el protocolo correcto (y su versión vigente) sin perderse entre documentos y búsquedas manuales.", |
| 120 | + "p1_solution": "App PowerApps conectada a SharePoint con filtrado por rol/servicio, búsqueda, control de versiones y registro de lectura.", |
| 121 | + "p1_result": "Evidencia: proyecto real (TFG) con filtrado por rol y trazabilidad de lectura/versiones.", |
125 | 122 |
|
126 | 123 | "p2_title": "AvaloniaCatalogoWinForms", |
127 | | - "p2_desc": "Catálogo ficticio con CRUD completo: agregar, actualizar, eliminar, filtrar y ordenar productos en varias pantallas.", |
| 124 | + "p2_desc": "Catálogo de escritorio con CRUD completo: agregar, actualizar, eliminar, filtrar y ordenar productos en varias pantallas.", |
128 | 125 | "p2_why": "Me ayudó a estructurar datos en una app de escritorio y a mantener consistencia entre pantallas, base para proyectos más grandes.", |
129 | | - "p2_problem": "Necesidad de gestionar un catálogo con operaciones completas y navegación clara.", |
130 | | - "p2_solution": "App de escritorio con CRUD + filtros/ordenación y pantallas consistentes.", |
131 | | - "p2_result": "Evidencia: repo con funcionalidades completas (CRUD + filtros + ordenación).", |
| 126 | + "p2_problem": "Necesitaba practicar una app desktop completa de catálogo con navegación, persistencia y operaciones típicas (CRUD + filtro).", |
| 127 | + "p2_solution": "App en C#/.NET con Avalonia UI (MVVM) y persistencia en JSON, incluyendo búsqueda/filtrado y CRUD básico.", |
| 128 | + "p2_result": "Evidencia: CRUD + filtrado + capturas y pasos de ejecución en el README.", |
132 | 129 |
|
133 | 130 | "p3_title": "Agenda App", |
134 | 131 | "p3_desc": "App de agenda para gestionar contactos y/o eventos, con interfaz clara y enfoque en productividad.", |
135 | 132 | "p3_why": "Me permitió practicar estructura de app, persistencia de datos y una UI limpia orientada a uso real.", |
136 | | - "p3_problem": "Organizar contactos/eventos sin depender de herramientas externas y con una UI simple.", |
137 | | - "p3_solution": "App con estructura modular y persistencia para gestionar datos de forma cómoda.", |
138 | | - "p3_result": "Evidencia: repo con pantallas funcionales y flujo completo de gestión.", |
| 133 | + "p3_problem": "Gestionar contactos/tareas con datos por usuario y evitar perder información entre dispositivos.", |
| 134 | + "p3_solution": "App Android en Kotlin con Firebase Auth + Realtime Database, CRUD y validaciones con feedback en UI.", |
| 135 | + "p3_result": "Evidencia: login/registro + CRUD en la nube por usuario + capturas en el repo.", |
139 | 136 |
|
140 | 137 | "p4_title": "Realtime Collaborative Bingo Web App", |
141 | 138 | "p4_desc": "Bingo colaborativo en tiempo real: varios usuarios comparten sala y el estado del tablero se sincroniza al instante.", |
142 | 139 | "p4_why": "Antes era “BingoEnvidiosos”. Aquí practiqué sincronización en tiempo real, estados compartidos y UX multiusuario.", |
143 | | - "p4_problem": "En un bingo en grupo, el tablero se desincroniza si cada usuario va por su cuenta.", |
144 | | - "p4_solution": "Salas compartidas con sincronización del estado del tablero en tiempo real.", |
145 | | - "p4_result": "Evidencia: repo con lógica multiusuario y estado sincronizado (sin demo pública).", |
| 140 | + "p4_problem": "Coordinar un tablero compartido entre varios usuarios en tiempo real (sin recargas y sin desincronización).", |
| 141 | + "p4_solution": "Web app con salas y sincronización en tiempo real (estado compartido), controlando eventos y consistencia del tablero.", |
| 142 | + "p4_result": "Evidencia: proyecto multiusuario en tiempo real (repo con features y estructura).", |
146 | 143 |
|
147 | 144 | "p5_title": "Selenium end-to-end", |
148 | 145 | "p5_desc": "Tests E2E automatizados para validar flujos reales de usuario en web, asegurando que lo importante no se rompe.", |
149 | 146 | "p5_why": "Me aporta disciplina: pruebas reproducibles, detección temprana de fallos y enfoque en calidad.", |
150 | | - "p5_problem": "Cambios en una web pueden romper flujos críticos sin que se note hasta tarde.", |
151 | | - "p5_solution": "Suite de tests E2E con Selenium para validar escenarios reales de usuario.", |
152 | | - "p5_result": "Evidencia: repo con tests automatizados y ejecución repetible (base para CI).", |
153 | | - |
154 | | - "case_labels": { "problem": "Problema", "solution": "Solución", "signal": "Señal" }, |
| 147 | + "p5_problem": "Detectar roturas en flujos críticos de una web antes de que lleguen a producción.", |
| 148 | + "p5_solution": "Suite E2E con Selenium + JUnit5 usando Page Objects, helpers de waits y ejecución automática en CI.", |
| 149 | + "p5_result": "Evidencia: CI + reporting (Allure) + vídeo de ejecución en el repo.", |
155 | 150 |
|
156 | 151 | "p6_title": "Kotlin Labs", |
157 | 152 | "p6_desc": "Colección de mini-proyectos en Kotlin para dominar piezas clave: multimedia, concurrencia y persistencia.", |
158 | 153 | "p6_why": "Formato mini-casos: un problema real, una solución concreta y una señal clara de competencia técnica.", |
159 | | - "p6_problem": "Quería aprender Kotlin en profundidad con problemas reales y casos pequeños pero completos.", |
160 | | - "p6_solution": "Agrupación de mini-proyectos (coroutines, multimedia, persistencia) con foco en un objetivo por caso.", |
161 | | - "p6_result": "Evidencia: 3 repos separados + mini-casos documentados con problema/solución.", |
| 154 | + "p6_problem": "Aprender conceptos clave de Kotlin/Android sin hacer “mega proyectos” lentos de iterar.", |
| 155 | + "p6_solution": "Mini-proyectos enfocados: corrutinas (dispatchers/cancelación), multimedia (recursos/ciclo de vida) y persistencia (CRUD).", |
| 156 | + "p6_result": "Evidencia: 3 repos con features + capturas/documentación por mini-caso.", |
162 | 157 |
|
163 | 158 | "p6_cases": [ |
164 | 159 | { |
|
0 commit comments