diff --git a/app/interfaces/web/templates/applications/index.html b/app/interfaces/web/templates/applications/index.html
index 8897e0c..4075b9b 100644
--- a/app/interfaces/web/templates/applications/index.html
+++ b/app/interfaces/web/templates/applications/index.html
@@ -1,12 +1,10 @@
{% extends "base.html" %}
{% block content %}
-
+{% set page_header_title = "Seguimiento" %}
+{% set page_header_description = "Control simple de vacantes que ya te interesan o a las que ya aplicaste." %}
+{% set page_header_copy_class = none %}
+{% include "components/_page_header.html" %}
{% include "applications/_shell.html" %}
diff --git a/app/interfaces/web/templates/components/_flash.html b/app/interfaces/web/templates/components/_flash.html
new file mode 100644
index 0000000..c10d301
--- /dev/null
+++ b/app/interfaces/web/templates/components/_flash.html
@@ -0,0 +1,3 @@
+
diff --git a/app/interfaces/web/templates/components/_page_header.html b/app/interfaces/web/templates/components/_page_header.html
new file mode 100644
index 0000000..3e0a299
--- /dev/null
+++ b/app/interfaces/web/templates/components/_page_header.html
@@ -0,0 +1,6 @@
+
diff --git a/app/interfaces/web/templates/components/_pagination.html b/app/interfaces/web/templates/components/_pagination.html
new file mode 100644
index 0000000..29d9af1
--- /dev/null
+++ b/app/interfaces/web/templates/components/_pagination.html
@@ -0,0 +1,25 @@
+{% if pagination.total_pages > 1 %}
+
+ {% if pagination.has_prev %}
+
Anterior
+ {% endif %}
+
Pagina {{ pagination.page }} de {{ pagination.total_pages }}
+ {% if pagination.has_next %}
+
Siguiente
+ {% endif %}
+
+{% endif %}
diff --git a/app/interfaces/web/templates/profile/_basics.html b/app/interfaces/web/templates/profile/_basics.html
new file mode 100644
index 0000000..4e50e27
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_basics.html
@@ -0,0 +1,57 @@
+
+ {% if basics_flash_message %}
+ {% set flash_tone = basics_flash_message[0] %}
+ {% set flash_text = basics_flash_message[1] %}
+ {% include "components/_flash.html" %}
+ {% endif %}
+
+
+
Datos principales
+
Estos datos alimentan el analisis de vacantes y el resumen general del perfil.
+
+
+ Los campos de esta seccion son la base del perfil y del contexto que consume el analizador.
+
+
diff --git a/app/interfaces/web/templates/profile/_basics_fragment.html b/app/interfaces/web/templates/profile/_basics_fragment.html
new file mode 100644
index 0000000..cb13dcc
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_basics_fragment.html
@@ -0,0 +1,7 @@
+{% set skills_shell_oob = true %}
+{% include "profile/_skills_shell.html" %}
+
+{% set cv_preview_oob = true %}
+{% include "profile/_cv_preview.html" %}
+
+{% include "profile/_basics.html" %}
diff --git a/app/interfaces/web/templates/profile/_certifications.html b/app/interfaces/web/templates/profile/_certifications.html
new file mode 100644
index 0000000..08fc722
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_certifications.html
@@ -0,0 +1,38 @@
+
+ Certificaciones Credenciales y badges relevantes para tus postulaciones.
{{ certifications|length }} registros
+
+ Agregar certificacion
+
+
+ {% if certifications %}
+
+ {% for item in certifications %}
+
+
+
+
+
+
+ {% endfor %}
+
+ {% else %}
+ Sin certificaciones registradas No hay certificaciones cargadas todavia.
+ {% endif %}
+
diff --git a/app/interfaces/web/templates/profile/_courses.html b/app/interfaces/web/templates/profile/_courses.html
new file mode 100644
index 0000000..9b0030e
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_courses.html
@@ -0,0 +1,38 @@
+
+ Cursos Formacion complementaria para reforzar tu perfil.
{{ courses|length }} registros
+
+ Agregar curso
+
+
+ {% if courses %}
+
+ {% for item in courses %}
+
+
+
+
+
+
+ {% endfor %}
+
+ {% else %}
+ Sin cursos registrados No hay cursos cargados todavia.
+ {% endif %}
+
diff --git a/app/interfaces/web/templates/profile/_cv_preview.html b/app/interfaces/web/templates/profile/_cv_preview.html
new file mode 100644
index 0000000..7cb7033
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_cv_preview.html
@@ -0,0 +1,16 @@
+
+
+
+
Vista CV
+
Vista de solo lectura del perfil consolidado para revisar como se presentaria tu hoja de vida.
+
+
+ {% if cv_preview_html %}
+ {{ cv_preview_html | safe }}
+ {% else %}
+
+
Sin vista CV disponible
+
Completa los datos principales del perfil para generar esta vista.
+
+ {% endif %}
+
diff --git a/app/interfaces/web/templates/profile/_education.html b/app/interfaces/web/templates/profile/_education.html
new file mode 100644
index 0000000..828c86e
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_education.html
@@ -0,0 +1,41 @@
+
+ Educacion Formacion academica principal.
{{ education|length }} registros
+
+ Agregar educacion
+
+
+ {% if education %}
+
+ {% for item in education %}
+
+
+
+
+
+
+ {% endfor %}
+
+ {% else %}
+ Sin educacion registrada No hay estudios cargados todavia.
+ {% endif %}
+
diff --git a/app/interfaces/web/templates/profile/_experience_record.html b/app/interfaces/web/templates/profile/_experience_record.html
new file mode 100644
index 0000000..af63a23
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_experience_record.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
diff --git a/app/interfaces/web/templates/profile/_experiences.html b/app/interfaces/web/templates/profile/_experiences.html
new file mode 100644
index 0000000..bd8e653
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_experiences.html
@@ -0,0 +1,33 @@
+
diff --git a/app/interfaces/web/templates/profile/_experiences_fragment.html b/app/interfaces/web/templates/profile/_experiences_fragment.html
new file mode 100644
index 0000000..c7ca43f
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_experiences_fragment.html
@@ -0,0 +1,11 @@
+
+ {% include "profile/_overview.html" %}
+
+
+{% set skills_shell_oob = true %}
+{% include "profile/_skills_shell.html" %}
+
+{% set cv_preview_oob = true %}
+{% include "profile/_cv_preview.html" %}
+
+{% include "profile/_experiences_shell.html" %}
diff --git a/app/interfaces/web/templates/profile/_experiences_shell.html b/app/interfaces/web/templates/profile/_experiences_shell.html
new file mode 100644
index 0000000..cd25238
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_experiences_shell.html
@@ -0,0 +1,11 @@
+
+ {% if experiences_flash_message %}
+ {% set flash_tone = experiences_flash_message[0] %}
+ {% set flash_text = experiences_flash_message[1] %}
+ {% include "components/_flash.html" %}
+ {% endif %}
+
+
+ {% include "profile/_experiences.html" %}
+
+
diff --git a/app/interfaces/web/templates/profile/_formation_fragment.html b/app/interfaces/web/templates/profile/_formation_fragment.html
new file mode 100644
index 0000000..1314b26
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_formation_fragment.html
@@ -0,0 +1,11 @@
+
+ {% include "profile/_overview.html" %}
+
+
+{% set skills_shell_oob = true %}
+{% include "profile/_skills_shell.html" %}
+
+{% set cv_preview_oob = true %}
+{% include "profile/_cv_preview.html" %}
+
+{% include "profile/_formation_shell.html" %}
diff --git a/app/interfaces/web/templates/profile/_formation_shell.html b/app/interfaces/web/templates/profile/_formation_shell.html
new file mode 100644
index 0000000..3a4a353
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_formation_shell.html
@@ -0,0 +1,16 @@
+
diff --git a/app/interfaces/web/templates/profile/_overview.html b/app/interfaces/web/templates/profile/_overview.html
new file mode 100644
index 0000000..74a5af6
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_overview.html
@@ -0,0 +1,16 @@
+
+ Skills
{{ skills|length }}
+ Experiencias
{{ experiences|length }}
+ Formacion
{{ education|length + courses|length + certifications|length }}
+
+
+
+
+ Como usar esta pantalla
+ Empieza por datos principales y skills. Luego completa experiencia y proyectos para mejorar el analisis de vacantes.
+
+
+ Vista CV
+ La vista CV se actualiza con la informacion registrada aqui y te sirve para revisar la consistencia general del perfil.
+
+
diff --git a/app/interfaces/web/templates/profile/_profile_status.html b/app/interfaces/web/templates/profile/_profile_status.html
new file mode 100644
index 0000000..9aec520
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_profile_status.html
@@ -0,0 +1,14 @@
+
+ Estado del perfil
+
+ Datos principales: {% if profile %}configurados{% else %}pendientes{% endif %}
+ Skills registradas: {{ skills|length }}
+ Experiencias registradas: {{ experiences|length }}
+ Proyectos registrados: {{ projects|length }}
+ Formacion registrada: {{ education|length + courses|length + certifications|length }}
+
+
+
Estado de migracion
+
Mi Perfil ya puede mantenerse desde la web para el flujo principal del producto.
+
+
diff --git a/app/interfaces/web/templates/profile/_project_record.html b/app/interfaces/web/templates/profile/_project_record.html
new file mode 100644
index 0000000..25ef504
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_project_record.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
diff --git a/app/interfaces/web/templates/profile/_projects.html b/app/interfaces/web/templates/profile/_projects.html
new file mode 100644
index 0000000..078344a
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_projects.html
@@ -0,0 +1,34 @@
+
diff --git a/app/interfaces/web/templates/profile/_projects_fragment.html b/app/interfaces/web/templates/profile/_projects_fragment.html
new file mode 100644
index 0000000..74e0541
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_projects_fragment.html
@@ -0,0 +1,4 @@
+{% set skills_shell_oob = true %}
+{% include "profile/_skills_shell.html" %}
+
+{% include "profile/_projects_shell.html" %}
diff --git a/app/interfaces/web/templates/profile/_projects_shell.html b/app/interfaces/web/templates/profile/_projects_shell.html
new file mode 100644
index 0000000..fa78023
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_projects_shell.html
@@ -0,0 +1,11 @@
+
+ {% if projects_flash_message %}
+ {% set flash_tone = projects_flash_message[0] %}
+ {% set flash_text = projects_flash_message[1] %}
+ {% include "components/_flash.html" %}
+ {% endif %}
+
+
+ {% include "profile/_projects.html" %}
+
+
diff --git a/app/interfaces/web/templates/profile/_shell.html b/app/interfaces/web/templates/profile/_shell.html
index 922b81d..044c2a8 100644
--- a/app/interfaces/web/templates/profile/_shell.html
+++ b/app/interfaces/web/templates/profile/_shell.html
@@ -1,411 +1,27 @@
{% if flash_message %}
-
+ {% set flash_tone = flash_message[0] %}
+ {% set flash_text = flash_message[1] %}
+ {% include "components/_flash.html" %}
{% endif %}
-
- Skills
{{ skills|length }}
- Experiencias
{{ experiences|length }}
- Formacion
{{ education|length + courses|length + certifications|length }}
-
-
-
-
- Como usar esta pantalla
- Empieza por datos principales y skills. Luego completa experiencia y proyectos para mejorar el analisis de vacantes.
-
-
- Vista CV
- La vista CV se actualiza con la informacion registrada aqui y te sirve para revisar la consistencia general del perfil.
-
-
+
+ {% include "profile/_overview.html" %}
+
-
+ {% include "profile/_basics.html" %}
-
-
-
-
-
Skills
-
Manten tus skills clave visibles para el analisis de afinidad.
-
-
- Mantener skills claras y concretas ayuda a que la afinidad con vacantes sea mas fiable.
-
-
- Categoria
- Skill
-
-
- Nivel
-
- {% for option in skill_level_options %}
- {{ option }}
- {% endfor %}
-
-
- Agregar skill
-
- {% if skills %}
-
- {% for item in skills %}
-
-
-
- {% endfor %}
-
- {% else %}
- Sin skills Agrega tus skills principales para que el analisis de vacantes sea mas preciso.
- {% endif %}
-
-
-
- Estado del perfil
-
- Datos principales: {% if profile %}configurados{% else %}pendientes{% endif %}
- Skills registradas: {{ skills|length }}
- Experiencias registradas: {{ experiences|length }}
- Proyectos registrados: {{ projects|length }}
- Formacion registrada: {{ education|length + courses|length + certifications|length }}
-
-
-
Estado de migracion
-
Mi Perfil ya puede mantenerse desde la web para el flujo principal del producto.
-
-
-
+ {% include "profile/_skills_shell.html" %}
-
+ {% include "profile/_experiences_shell.html" %}
-
+ {% include "profile/_projects_shell.html" %}
-
-
+{% include "profile/_formation_shell.html" %}
-
-
-
-
-
-
-
-
-
Vista CV
-
Vista de solo lectura del perfil consolidado para revisar como se presentaria tu hoja de vida.
-
-
- {% if cv_preview_html %}
- {{ cv_preview_html | safe }}
- {% else %}
-
-
Sin vista CV disponible
-
Completa los datos principales del perfil para generar esta vista.
-
- {% endif %}
-
+{% include "profile/_cv_preview.html" %}
diff --git a/app/interfaces/web/templates/profile/_skills.html b/app/interfaces/web/templates/profile/_skills.html
new file mode 100644
index 0000000..880bba2
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_skills.html
@@ -0,0 +1,43 @@
+
+
+
+
Skills
+
Manten tus skills clave visibles para el analisis de afinidad.
+
+
+ Mantener skills claras y concretas ayuda a que la afinidad con vacantes sea mas fiable.
+
+
+ Categoria
+ Skill
+
+
+ Nivel
+
+ {% for option in skill_level_options %}
+ {{ option }}
+ {% endfor %}
+
+
+ Agregar skill
+
+ {% if skills %}
+
+ {% for item in skills %}
+
+
+
+ {% endfor %}
+
+ {% else %}
+ Sin skills Agrega tus skills principales para que el analisis de vacantes sea mas preciso.
+ {% endif %}
+
diff --git a/app/interfaces/web/templates/profile/_skills_fragment.html b/app/interfaces/web/templates/profile/_skills_fragment.html
new file mode 100644
index 0000000..4860978
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_skills_fragment.html
@@ -0,0 +1,5 @@
+
+ {% include "profile/_overview.html" %}
+
+
+{% include "profile/_skills_shell.html" %}
diff --git a/app/interfaces/web/templates/profile/_skills_shell.html b/app/interfaces/web/templates/profile/_skills_shell.html
new file mode 100644
index 0000000..134887a
--- /dev/null
+++ b/app/interfaces/web/templates/profile/_skills_shell.html
@@ -0,0 +1,9 @@
+
+ {% if skills_flash_message %}
+ {% set flash_tone = skills_flash_message[0] %}
+ {% set flash_text = skills_flash_message[1] %}
+ {% include "components/_flash.html" %}
+ {% endif %}
+ {% include "profile/_skills.html" %}
+ {% include "profile/_profile_status.html" %}
+
diff --git a/app/interfaces/web/templates/profile/index.html b/app/interfaces/web/templates/profile/index.html
index 9f8b8d1..446ddc9 100644
--- a/app/interfaces/web/templates/profile/index.html
+++ b/app/interfaces/web/templates/profile/index.html
@@ -1,12 +1,10 @@
{% extends "base.html" %}
{% block content %}
-
+{% set page_header_title = "Mi Perfil" %}
+{% set page_header_description = "Configura tu contexto profesional para mejorar el analisis de vacantes y mantener tu hoja de vida al dia." %}
+{% set page_header_copy_class = none %}
+{% include "components/_page_header.html" %}
{% include "profile/_shell.html" %}
diff --git a/app/interfaces/web/templates/vacancies/_filters.html b/app/interfaces/web/templates/vacancies/_filters.html
new file mode 100644
index 0000000..190a796
--- /dev/null
+++ b/app/interfaces/web/templates/vacancies/_filters.html
@@ -0,0 +1,34 @@
+
diff --git a/app/interfaces/web/templates/vacancies/_list.html b/app/interfaces/web/templates/vacancies/_list.html
index a00f56d..e491385 100644
--- a/app/interfaces/web/templates/vacancies/_list.html
+++ b/app/interfaces/web/templates/vacancies/_list.html
@@ -69,31 +69,14 @@
{% endif %}
{% endfor %}
- {% if pagination.total_pages > 1 %}
-
- {% if pagination.has_prev %}
-
Anterior
- {% endif %}
-
Pagina {{ pagination.page }} de {{ pagination.total_pages }}
- {% if pagination.has_next %}
-
Siguiente
- {% endif %}
-
- {% endif %}
+ {% set pagination_prev_href = "/app/vacancies?q=%s&view=%s&page=%s&page_size=%s"|format(query, current_view, pagination.prev_page, pagination.page_size) %}
+ {% set pagination_prev_hx_get = "/app/vacancies/list?q=%s&view=%s&page=%s&page_size=%s"|format(query, current_view, pagination.prev_page, pagination.page_size) %}
+ {% set pagination_next_href = "/app/vacancies?q=%s&view=%s&page=%s&page_size=%s"|format(query, current_view, pagination.next_page, pagination.page_size) %}
+ {% set pagination_next_hx_get = "/app/vacancies/list?q=%s&view=%s&page=%s&page_size=%s"|format(query, current_view, pagination.next_page, pagination.page_size) %}
+ {% set pagination_hx_target = "#vacancy-list" %}
+ {% set pagination_hx_swap = "innerHTML" %}
+ {% set pagination_hx_push_url = "true" %}
+ {% include "components/_pagination.html" %}
{% else %}
No hay coincidencias
diff --git a/app/interfaces/web/templates/vacancies/_shell.html b/app/interfaces/web/templates/vacancies/_shell.html
new file mode 100644
index 0000000..3092f2c
--- /dev/null
+++ b/app/interfaces/web/templates/vacancies/_shell.html
@@ -0,0 +1,15 @@
+{% include "vacancies/_summary.html" %}
+
+{% if flash_message %}
+ {% set flash_tone = flash_message[0] %}
+ {% set flash_text = flash_message[1] %}
+ {% include "components/_flash.html" %}
+{% endif %}
+
+{% include "vacancies/_filters.html" %}
+
+
+
+ {% include "vacancies/_list.html" %}
+
+
diff --git a/app/interfaces/web/templates/vacancies/_summary.html b/app/interfaces/web/templates/vacancies/_summary.html
new file mode 100644
index 0000000..6220b36
--- /dev/null
+++ b/app/interfaces/web/templates/vacancies/_summary.html
@@ -0,0 +1,8 @@
+
+ {% for item in context_bar %}
+
+ {{ item.value }}
+ {{ item.label }}
+
+ {% endfor %}
+
diff --git a/app/interfaces/web/templates/vacancies/index.html b/app/interfaces/web/templates/vacancies/index.html
index 743d547..37c57ed 100644
--- a/app/interfaces/web/templates/vacancies/index.html
+++ b/app/interfaces/web/templates/vacancies/index.html
@@ -1,68 +1,12 @@
{% extends "base.html" %}
{% block content %}
-
+{% set page_header_title = "Inbox de Vacantes" %}
+{% set page_header_description = "Revisa, prioriza y decide sin salir del workspace." %}
+{% set page_header_copy_class = "page-header-copy" %}
+{% include "components/_page_header.html" %}
-
- {% for item in context_bar %}
-
- {{ item.value }}
- {{ item.label }}
-
- {% endfor %}
-
-
-{% if flash_message %}
-
- {{ flash_message[1] }}
-
-{% endif %}
-
-
-
-
-
- {% include "vacancies/_list.html" %}
-
-
+{% include "vacancies/_shell.html" %}