Documento de Instrucciones Técnicas para IA: Gestor de Tarjetas con Importación/Exportación JSON

Nota: Recuerda adjuntar el código actual...

Carpeta de trabajo con el código y estructura de entrega: Descargar

# Documento de Instrucciones Técnicas para IA: Gestor de Tarjetas con Importación/Exportación JSON (v3.0)

**Propósito:** Este documento describe la arquitectura, funcionalidades y estructura del código fuente de un gestor de tarjetas web (denominado "Tarjeta Maestro v3.0") que permite a los usuarios crear, editar, eliminar y reordenar tarjetas con datos personalizados. Además, incorpora la capacidad de importar y exportar colecciones de tarjetas en formato JSON estandarizado, facilitando la gestión y el intercambio de datos. Esta documentación está diseñada para una IA con el objetivo de comprender el sistema y poder generar mejoras, optimizaciones o nuevas funcionalidades a partir del código fuente adjunto.

---

## 1. Arquitectura General

La aplicación "Tarjeta Maestro v3.0" sigue una arquitectura principalmente del lado del cliente (Front-End) con persistencia de datos en el navegador utilizando `localStorage`. El Back-End (PHP) se utiliza principalmente para servir la estructura HTML base y la configuración inicial.

**Componentes Principales:**

1.  **Estructura HTML (`index.php`):** Define la interfaz de usuario, incluyendo secciones para la creación/edición de tarjetas, importación/exportación, y la visualización de las tarjetas guardadas. Utiliza Tailwind CSS para el estilado y la responsividad.
2.  **Lógica del Cliente (JavaScript):** Implementa la interactividad de la aplicación, incluyendo:
    * Manipulación dinámica del DOM para agregar, editar y eliminar campos y tarjetas.
    * Gestión del formulario de creación/edición de tarjetas.
    * Implementación de la funcionalidad de arrastrar y soltar para reordenar tarjetas utilizando la librería SortableJS.
    * Lectura y escritura de datos en `localStorage` para la persistencia de las tarjetas.
    * Implementación de la importación de datos desde archivos JSON.
    * Implementación de la exportación de datos a archivos JSON.
    * Control de la interfaz de usuario y mensajes de retroalimentación al usuario (a través de un sistema de modales, presumiblemente implementado en `components/modal.php`).
3.  **Estilos (Tailwind CSS):** Framework CSS "utility-first" utilizado para el diseño y la apariencia de la interfaz. La configuración se encuentra en la sección `<script>tailwind.config = { ... }` dentro del `index.php`.
4.  **Librerías Externas:**
    * **SortableJS:** (`https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js`) Utilizada para la funcionalidad de arrastrar y soltar para reordenar las tarjetas.
5.  **Componentes PHP (`components/header.php`, `components/footer.php`, `components/modal.php`):** Archivos PHP que contienen fragmentos de HTML reutilizables para la estructura de la página y los modales de retroalimentación.
6.  **Configuración PHP (`config.php`):** Archivo PHP que contiene variables de configuración de la aplicación (por ejemplo, el nombre de la aplicación).

## 2. Funcionalidades Principales

1.  **Creación de Tarjetas Personalizadas:**
    * Interfaz para agregar dinámicamente campos de "Nombre del campo" y "Valor del campo".
    * Previsualización en tiempo real de la tarjeta a medida que se agregan o editan los campos.
    * Posibilidad de guardar la tarjeta con los campos definidos.
2.  **Edición de Tarjetas Existentes:**
    * Interfaz para seleccionar una tarjeta guardada y cargar sus datos en el formulario de edición.
    * Posibilidad de modificar los valores de los campos existentes y agregar o eliminar campos.
    * Guardado de los cambios en la tarjeta seleccionada.
3.  **Eliminación de Tarjetas:**
    * Opción para eliminar tarjetas individuales de la lista de tarjetas guardadas.
    * Opción para eliminar todas las tarjetas guardadas con una confirmación.
4.  **Reordenamiento de Tarjetas:**
    * Funcionalidad de arrastrar y soltar para cambiar el orden visual de las tarjetas en la lista.
    * El nuevo orden de las tarjetas se persiste en `localStorage`.
5.  **Importación desde JSON:**
    * Interfaz para seleccionar un archivo JSON (`.json`) que contenga datos de prompts estandarizados (siguiendo un formato específico, presumiblemente el descrito en el prompt anterior).
    * Capacidad para procesar tanto un único objeto JSON como un array de objetos JSON dentro del archivo de importación.
    * Extracción de los datos relevantes del JSON y creación de nuevas tarjetas con estos datos.
    * Mensajes de retroalimentación para indicar el éxito o el fallo de la importación.
6.  **Exportación a JSON:**
    * Funcionalidad para exportar todas las tarjetas guardadas en `localStorage` a un archivo JSON descargable.
    * El archivo JSON contendrá un array de objetos, donde cada objeto representa una tarjeta con sus campos de datos.
7.  **Persistencia de Datos:**
    * Utilización de `localStorage` del navegador para almacenar las tarjetas creadas y su orden, lo que permite que los datos persistan entre sesiones del navegador.

## 3. Estructura de Datos (en `localStorage`)

Las tarjetas se almacenan en `localStorage` bajo la clave `'customCards'`. El valor asociado a esta clave es un array de objetos JavaScript. Cada objeto representa una tarjeta y tiene la siguiente estructura:

``json
[
  {
    "id": "unique_id_1",
    "data": {
      "Título": "Nombre de la Tarjeta 1",
      "Campo 1": "Valor 1",
      "Campo 2": "Valor 2",
      "...": "..."
    }
  },
  {
    "id": "unique_id_2",
    "data": {
      "Título": "Nombre de la Tarjeta 2",
      "Otro Campo": "Otro Valor"
    }
  },
  // ... más tarjetas
]
``

* `id`: Un identificador único generado para cada tarjeta.
* `data`: Un objeto que contiene los campos de datos definidos por el usuario para la tarjeta (clave: nombre del campo, valor: valor del campo). Se espera que al menos el campo "Título" esté presente para una mejor identificación.

## 4. Flujo de Interacción Principal

1.  **Carga Inicial:** Al cargar la página, el JavaScript intenta leer los datos de las tarjetas desde `localStorage`. Si existen datos, se renderizan las tarjetas en la sección "Tarjetas Guardadas" y se inicializa SortableJS para permitir el reordenamiento.
2.  **Creación de una Nueva Tarjeta:**
    * El usuario agrega campos utilizando el botón "Añadir Campo".
    * El usuario ingresa nombres y valores para los campos.
    * La previsualización de la tarjeta se actualiza dinámicamente.
    * Al hacer clic en "Guardar Tarjeta", se recopilan los datos del formulario, se genera un nuevo ID (si es una nueva tarjeta), se crea un objeto de tarjeta y se guarda en `localStorage`. La lista de tarjetas se recarga para mostrar la nueva tarjeta.
3.  **Edición de una Tarjeta Existente:**
    * El usuario hace clic en el icono de edición de una tarjeta en la lista.
    * Los datos de esa tarjeta se cargan en el formulario de creación/edición.
    * El usuario realiza las modificaciones necesarias.
    * Al hacer clic en "Guardar Tarjeta", los datos modificados se actualizan en el objeto de la tarjeta correspondiente en `localStorage`, y la lista de tarjetas se recarga.
4.  **Eliminación de una Tarjeta:**
    * El usuario hace clic en el icono de eliminación de una tarjeta en la lista.
    * La tarjeta correspondiente se elimina del array en `localStorage`, y la lista se recarga.
5.  **Reordenamiento de Tarjetas:**
    * El usuario arrastra una tarjeta a su nueva posición en la lista.
    * El evento `onEnd` de SortableJS se dispara, y el nuevo orden de las tarjetas se guarda en `localStorage`. La lista se recarga para reflejar el nuevo orden.
6.  **Importación desde JSON:**
    * El usuario selecciona un archivo JSON a través del input de tipo `file`.
    * Al seleccionar el archivo, se lee su contenido y se intenta parsear como JSON.
    * Se iteran los objetos JSON parseados (si es un array) o se procesa el objeto único.
    * Para cada objeto JSON válido (que contenga los campos mínimos esperados, como `title`, `prompt`, `purpose`), se crea una nueva tarjeta con los datos extraídos y se guarda en `localStorage`.
    * Se muestra un mensaje de retroalimentación.
7.  **Exportación a JSON:**
    * Al hacer clic en el botón "Exportar a JSON", se leen todos los objetos de tarjeta desde `localStorage`.
    * Se convierten a una cadena JSON formateada.
    * Se fuerza la descarga de un archivo `.json` con esta cadena como contenido.
8.  **Limpieza Total:**
    * Al hacer clic en "Limpiar Todo" y confirmar, la clave `'customCards'` se elimina de `localStorage`, y la lista de tarjetas se muestra vacía.

## 5. Posibles Áreas de Mejora para la IA

A partir de esta descripción y el código fuente adjunto, la IA podría considerar las siguientes áreas para generar mejoras:

* **Usabilidad:**
    * Implementar validación de campos en el formulario de creación/edición.
    * Mejorar la previsualización de la tarjeta para reflejar los estilos finales.
    * Implementar funcionalidad de "Duplicar Tarjeta".
    * Considerar la adición de tipos de datos para los campos (texto, número, fecha, etc.) y adaptar la interfaz de edición.
    * Implementar un sistema de búsqueda y filtrado de las tarjetas guardadas.
    * Mejorar la interfaz para la importación y exportación (por ejemplo, mostrar un resumen de lo que se importará).
* **Funcionalidad:**
    * Implementar la capacidad de agrupar o categorizar tarjetas.
    * Añadir la posibilidad de adjuntar archivos o imágenes a las tarjetas (esto requeriría un back-end más robusto para el almacenamiento).
    * Integrar la capacidad de compartir colecciones de tarjetas con otros usuarios (requeriría un back-end).
    * Permitir la personalización de la apariencia de las tarjetas (colores, fuentes).
    * Implementar la funcionalidad de deshacer/rehacer acciones.
* **Rendimiento y Optimización:**
    * Analizar el rendimiento de la aplicación con una gran cantidad de tarjetas y proponer optimizaciones en la manipulación del DOM o el almacenamiento en `localStorage`.
    * Considerar la posibilidad de usar IndexedDB para un almacenamiento más estructurado y eficiente si la cantidad de datos crece significativamente.
* **Robustez y Manejo de Errores:**
    * Implementar un manejo de errores más robusto para la importación de JSON (por ejemplo, informar sobre líneas específicas con errores de formato).
    * Añadir mecanismos de recuperación en caso de corrupción de los datos en `localStorage`.
* **Accesibilidad:**
    * Evaluar la accesibilidad de la interfaz (etiquetas ARIA, navegación con teclado) y proponer mejoras para cumplir con los estándares WCAG.
* **Pruebas:**
    * Generar casos de prueba unitarios o de integración para las funcionalidades principales de la aplicación (especialmente la manipulación de datos en `localStorage`, la importación/exportación y la creación/edición de tarjetas).
* **Refactorización del Código:**
    * Identificar posibles áreas de refactorización para mejorar la legibilidad, mantenibilidad y escalabilidad del código JavaScript. Considerar la posibilidad de modularizar el código en clases o funciones más pequeñas y reutilizables.

Al analizar el código fuente adjunto y considerar estas áreas de mejora, la IA debería ser capaz de generar propuestas de optimización y nuevas funcionalidades para "Tarjeta Maestro v3.0".

Roadmap de Desarrollo de Prompto: Desde Prototipo hasta Startup Escalable

Guía para Aprendices y Emprendedores Tecnológicos

Este documento divide el desarrollo de Prompto en 6 niveles de evolución, desde un prototipo básico hasta una aplicación lista para inversión. Cada nivel agrega complejidad, funcionalidad y valor, permitiendo aprender tecnologías clave en el camino.


Nivel 0: Prototipo (Proof of Concept)

Objetivo: Validar la idea central con funcionalidades mínimas.
Tecnologías: HTML/CSS/JS + Electron o Python + Tkinter.

Funcionalidades Clave

  1. Carga y visualización de tarjetas desde un JSON estático.
  2. Vista de lista con 2 campos (title, goal).
  3. Búsqueda básica (texto libre en title).
  4. Editar campos manualmente en JSON crudo.

Qué Aprenderás

  • Parseo de JSON.
  • Manipulación del DOM (si es web) o frameworks de UI simples.
  • Lógica básica de filtrado.

Nivel 1: MVP (Versión 1.0)

Objetivo: Producto mínimo viable con usuarios reales.
Tecnologías: React/Vue (Frontend) + Node.js/Python (Backend opcional) + SQLite/IndexedDB.

Funcionalidades Clave

  1. CRUD completo (interfaz amigable, no solo JSON crudo).
  2. Importar/Exportar JSON (arrastrar y soltar).
  3. Filtros básicos (categories, is_favorite).
  4. Sistema de favoritos.
  5. Persistencia local (guardar tarjetas entre sesiones).

Qué Aprenderás

  • Gestión de estado (Redux, Vuex).
  • APIs de archivos del navegador (File API).
  • Diseño responsive.

Nivel 2: Versión Pro (2.0)

Objetivo: Atracer usuarios profesionales (investigadores, devs).
Tecnologías: + TypeScript, Indexación con FlexSearch/Lunr.js, Web Workers.

Funcionalidades Clave

  1. Búsqueda avanzada (regex, operadores lógicos).
  2. Operaciones en masa (editar múltiples tarjetas).
  3. Importar desde CSV/Markdown (con mapeo de campos).
  4. Validación de esquema (ej: campos obligatorios).
  5. Sincronización simple (Git o Google Drive manual).

Qué Aprenderás

  • Indexación eficiente para búsquedas rápidas.
  • Procesamiento de archivos no JSON (parsers de CSV, markdown).
  • Optimización de rendimiento.

Nivel 3: Versión Cloud (3.0)

Objetivo: Escalar para equipos y datos masivos.
Tecnologías: + PostgreSQL/MongoDB, Docker, Auth0/Firebase Auth.

Funcionalidades Clave

  1. Backend dedicado (REST API o GraphQL).
  2. Autenticación y permisos (roles: admin/editor/lector).
  3. Historial de cambios (quién editó qué).
  4. Sincronización automática con Git/Cloud.
  5. Plugins básicos (ej: exportar a HTML personalizado).

Qué Aprenderás

  • Diseño de APIs.
  • Bases de datos relacionales/NoSQL.
  • Seguridad (JWT, OAuth).

Nivel 4: Versión Empresa (4.0)

Objetivo: Atraer empresas y casos de uso complejos.
Tecnologías: + Elasticsearch, Kubernetes, WebSockets.

Funcionalidades Clave

  1. Búsqueda semántica (NLP: similitud de texto).
  2. Automatización (scripts en Python/Lua integrados).
  3. Dashboard analítico (gráficos de uso, métricas).
  4. Colaboración en tiempo real (comentarios, @menciones).
  5. High Availability (balanceo de carga, réplicas).

Qué Aprenderás

  • Procesamiento de lenguaje natural (NLP).
  • Sistemas distribuidos.
  • Monetización (SaaS, licencias).

Nivel 5: Versión Startup (5.0+)

Objetivo: Ser atractivo para inversores.
Tecnologías: + AI (LLMs), Blockchain (para auditoría), Flutter (app móvil).

Funcionalidades Clave

  1. AI Assist:
    • Generar tarjetas automáticas desde texto.
    • Sugerir relaciones entre tarjetas.
  2. Auditoría inmutable (blockchain para cambios críticos).
  3. Marketplace de plugins (comunidad de desarrolladores).
  4. API pública para integraciones (Zapier, etc.).
  5. Modelo de negocio claro:
    • Freemium (límite de tarjetas gratis).
    • Enterprise (autohospedaje, soporte prioritario).

Qué Aprenderás

  • Modelado de negocio SaaS.
  • Integración con IA (OpenAI, LangChain).
  • Pitch para inversores.

Resumen Visual de Evolución

Nivel Foco Tecnologías Clave Metrica Clave
0. Prototipo Idea básica Vanilla JS, JSON Validación conceptual
1. MVP Usabilidad React, SQLite Primeros usuarios
2. Pro Productividad TypeScript, FlexSearch Retención profesional
3. Cloud Escalabilidad PostgreSQL, Docker Tamaño de datasets
4. Empresa Automatización Elasticsearch, NLP Grandes clientes B2B
5. Startup Innovación + ROI AI, Blockchain MRR (Ingresos recurrentes)