Impulsa tu sistema de notas Markdown con una base sólida: flujo de trabajo en GitHub, persistencia con localStorage y manipulación del DOM para mostrar editor y preview. Con documentación clara en JSDoc y apoyo de herramientas de IA como Copilot o ChatGPT, avanzar se vuelve más rápido y mantenible.
¿Cómo se integra Git y GitHub para persistencia y colaboración?
Un pull request bien armado acelera el trabajo en equipo. Aquí se agrega un nuevo feature: la persistencia del sistema de notas con localStorage. La plantilla del pull request incluye: descripción breve, cambios realizados, motivación, impacto y notas de implementación. También se asigna un reviewer (por ejemplo, Felipe), se define un assignee y se añaden labels como mejora.
Ver el diff permite identificar dónde solo se agregó documentación y dónde hubo cambios reales de lógica.
Comentar en línea fomenta el trabajo colaborativo antes del merge.
Documentar cada función mejora la lectura e historial de cambios.
El sistema ahora usa localStorage para crear el store y guardar notas.
¿Qué funciones del DOM muestran y ocultan editor y preview?
Para controlar la interfaz, primero se define una variable global que acompañará el flujo de selección y edición de notas. Luego, dos funciones simples alternan la visibilidad del editor y el preview con display.
// Variable global para la nota activalet currentNoteID =null;/**
* Muestra el editor y el preview.
* No recibe parámetros ni retorna valor: manipula el DOM directamente.
*/functionshowEditorAndPreview(){const editorSection =document.querySelector('.editor-section');const previewSection =document.querySelector('.preview-section'); editorSection.style.display='flex'; previewSection.style.display='flex';}/**
* Oculta el editor y el preview.
* No recibe parámetros ni retorna valor: manipula el DOM directamente.
*/functionhideEditorAndPreview(){const editorSection =document.querySelector('.editor-section');const previewSection =document.querySelector('.preview-section'); editorSection.style.display='none'; previewSection.style.display='none';}
Puntos clave para evitar errores: usar correctamente document.querySelector, respetar la convención de clases como .editor-section y .preview-section, y cuidar el autocompletado para no confundir style ni los valores de display.
¿Por qué documentar con JSDoc en cada paso?
JSDoc deja claro el objetivo, parámetros y posibles valores nulos.
Facilita pedir ayuda a la IA con contexto preciso.
Sirve de guía para pruebas y futuras refactorizaciones.
¿Cómo renderizar la lista, el editor y el preview con apoyo de IA?
Se plantean tres tareas con JSDoc: renderizar la lista de notas en el DOM, renderizar el editor con el contenido de una nota (o vacío) y renderizar el preview del contenido Markdown. Para la primera, se propone usar una lista corta de subtareas y pedir a Copilot o ChatGPT la implementación usando solo DOM nativo.
¿Qué subtareas debe cumplir renderNoteList?
Crear renderNoteList que reciba una lista de notas.
Limpiar el contenedor .note-list antes de renderizar.
Si la lista está vacía, mostrar un mensaje de empty state.
Si hay notas, renderizar título, extracto y fecha.
Marcar la nota activa comparando su ID con currentNoteID.
/**
* Renderiza la lista de notas en el DOM.
* @param{Array}notes - array de notas a renderizar.
*/functionrenderNoteList(notes){const listEl =document.querySelector('.note-list'); listEl.innerHTML='';if(!notes || notes.length===0){const empty =document.createElement('div'); empty.classList.add('note-empty'); empty.textContent='No hay notas todavía.'; listEl.appendChild(empty);return;} notes.forEach(note=>{const item =document.createElement('article'); item.classList.add('note-item'); item.dataset.id= note.id;const title =document.createElement('h3'); title.classList.add('note-title'); title.textContent= note.title||'Sin título';const excerpt =document.createElement('p'); excerpt.classList.add('note-excerpt'); excerpt.textContent= note.excerpt||'';const date =document.createElement('time'); date.classList.add('note-date'); date.textContent= note.date||'';if(String(note.id)===String(currentNoteID)){ item.classList.add('is-active');} item.appendChild(title); item.appendChild(excerpt); item.appendChild(date); listEl.appendChild(item);});}
¿Cómo documentar editor y preview para que la IA ayude mejor?
Editor: “renderizar el editor con el contenido de una nota”. Parámetro: objeto nota o null para editor vacío.
Preview: “renderizar el preview del contenido Markdown”. Parámetro: string content con Markdown a transformar.
Mantener las tareas en menos de cinco bullets evita resultados ruidosos y facilita el testing paso a paso.
Habilidades y conceptos reforzados: pull request colaborativo, persistencia con localStorage, manipulación del DOM, JSDoc, diseño de pseudocódigo en subtareas, uso estratégico de IA para implementar código nativo y revisión mediante diff antes de integrar.
¿Con qué herramienta de IA vas a implementar el preview y el editor: Cursor, Windsor, Copilot o ChatGPT? Comparte en comentarios tu enfoque y resultados.