commit 3350007d2e5a68c7f709064e2aed72ca2392806b Author: fenix Date: Thu Dec 4 23:47:04 2025 +0100 3,2,1... adelante, demiurgos del teclado XD diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..0e23a64 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,74 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Proyecto Overview + +**Libre-marker** es un visor/editor de archivos Markdown que funciona completamente en el navegador usando Nginx + JavaScript vanilla. El objetivo es servir archivos `.md` de forma transparente renderizándolos como HTML sin necesidad de PHP o bases de datos. + +### Arquitectura de Dos Fases + +1. **FASE 1 - Visor simple**: Nginx intercepta peticiones a archivos `.md` y las redirige transparentemente a `visor.html`, que usa la librería [Marked.js](https://github.com/markedjs/marked/) para renderizar Markdown a HTML en el cliente. + +2. **FASE 2 - Editor live** (planificado): Añadir capacidad de edición online con preview en tiempo real, similar a la demo de Marked.js (ver `Screenshots/markedJS-demo.png`). + +## Componentes Clave + +### visor.html +Archivo HTML autocontenido que: +- Recibe parámetro `?file=nombre.md` en la URL +- Hace fetch del archivo Markdown +- Lo convierte a HTML usando `marked.parse()` +- Lo renderiza en el navegador + +### Configuración Nginx (no incluida en repo) +La redirección mágica se hace en `/etc/nginx/sites-enabled/`: + +```nginx +location ~ \.md$ { + try_files $uri @markdown_viewer; +} + +location @markdown_viewer { + rewrite ^/(.*\.md)$ /visor.html?file=$1 last; +} +``` + +**Resultado**: El usuario ve `sitio.com/manual.md` en la URL pero recibe HTML renderizado. + +## Flujo de Trabajo + +### Testing Local +Para probar sin Nginx, abre directamente: +```bash +firefox visor.html?file=README.md +# o con servidor HTTP simple: +python3 -m http.server 8000 +# Luego: http://localhost:8000/README.md +``` + +### Deployment +1. Copiar archivos al directorio web (ej: `/var/www/sitio/`) +2. Aplicar configuración Nginx mostrada en README.md +3. Reiniciar: `sudo systemctl restart nginx` +4. Limpiar caché del navegador (Ctrl+Shift+R) + +## Dependencias Externas + +- **Marked.js**: Cargado vía CDN desde `https://cdn.jsdelivr.net/npm/marked/marked.min.js` +- Sin dependencias de backend (solo Nginx como servidor web estático) + +## Principios de Desarrollo + +- **Vanilla JavaScript**: No frameworks, solo ES6+ +- **KISS**: Solución minimalista sin servidor de aplicaciones +- **Cliente-side rendering**: Todo el procesamiento ocurre en el navegador +- **Sin estado**: Cada petición es independiente, sin sesiones + +## Próximos Pasos (FASE 2) + +Para implementar el editor live, considerar: +- Agregar textarea para edición +- Split view: editor (izquierda) + preview (derecha) +- Actualización en tiempo real con event listeners +- Opción de guardar cambios (requeriría backend o LocalStorage) diff --git a/README.md b/README.md new file mode 100644 index 0000000..cecaacd --- /dev/null +++ b/README.md @@ -0,0 +1,368 @@ +# Libre-marker Project + + +con Nginx + JavaScript. Podemos configurar Nginx para que, cuando alguien pida un `.md`, Nginx le sirva una pequeña plantilla HTML "invisible" que contenga la librería +[Marked](https://github.com/markedjs/marked/) y renderice el texto al instante. + + +## FASE1 - Libre-marke viewer + +Aquí tienes cómo montar tu propio "Markdown Viewer" estático en 2 pasos: + +### Paso 1: Crear el "Visor Mágico" (visor.html) + +Crea un archivo llamado `visor.html` en la raíz de tu sitio web (junto a tus archivos .md). Copia este código exacto. + +Este código usa la librería **Marked** (la que mostraste en la imagen) para convertir el texto a HTML en el navegador del visitante. + +```HTML + + + + + Visor Markdown + + + + +
Cargando documento...
+ + + + +``` + + +### Paso 2: El Truco de Nginx (La Redirección) + +Ahora configuramos Nginx para que intercepte la petición. Cuando el usuario escriba `misitio.com/manual.md`, Nginx **reescribirá internamente** la petición para cargar el visor, pasándole el nombre del archivo. + +Edita tu configuración del sitio (`/etc/nginx/sites-enabled/tustio`): + +```Nginx +server { + # ... tu configuración actual ... + root /var/www/tusitio; + index index.html; + + # REGLA MÁGICA PARA MARKDOWN + location ~ \.md$ { + # Si el archivo existe, redirige al visor + try_files $uri @markdown_viewer; + } + + location @markdown_viewer { + # Reescribe la URL para usar el visor.html + # Ejemplo: manual.md -> /visor.html?file=manual.md + rewrite ^/(.*\.md)$ /visor.html?file=$1 last; + } + + # ... resto de la config ... +} +``` + + +### Paso 3: Reiniciar y Probar + +1. Reinicia Nginx: +```bash +service nginx restart +``` + +2. Borra caché del navegador (Ctrl + Shift + R). + + Entra a librebits.info/tu-archivo.md. + +3. ¿Qué ocurrirá? + + La URL en el navegador seguirá diciendo tu-archivo.md (elegante). + + Pero lo que verás en pantalla será el HTML generado, con títulos, negritas y enlaces, tal cual querías. + +¿Te animas a probar este enfoque? Es muy ligero y no requiere instalar PHP ni bases de datos. + + +## FASE 2 - Live Editor + Preview + +Editor Markdown en tiempo real con split view, inspirado en la demo oficial de Marked.js (ver `Screenshots/markedJS-demo.png`). + +### Arquitectura + +**100% cliente-side**. Nginx solo sirve el HTML estático, toda la lógica ocurre en el navegador usando JavaScript vanilla + Marked.js. + +### Componentes UI + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Barra superior: [Dropdown Views] [Clear] [Version] [Theme] │ +├──────────────────────────┬──────────────────────────────────┤ +│ │ │ +│ PANEL IZQUIERDO │ PANEL DERECHO │ +│ (Editor) │ (Preview) │ +│ │ │ +│