Interstellar Writer
Editor de escritorio nativo para contenido MDX/Astro con gestión de frontmatter YAML y sincronización con GitHub
Stack Tecnológico
Descripción del Proyecto
Interstellar Writer es una aplicación de escritorio nativa desarrollada en Rust que facilita la gestión de contenido para proyectos Astro. Su objetivo principal es proporcionar una experiencia de edición similar a un CMS de escritorio, pero enfocada específicamente en archivos MDX con frontmatter YAML.
Características Principales
- Gestión de Colecciones: Organiza contenido en carpetas (blog, docs, proyectos)
- Editor Visual de Frontmatter: Campos tipados (texto, fecha, booleano, lista, imagen)
- Vista Previa en Tiempo Real: Renderizado Markdown/CommonMark
- Sincronización con GitHub: Commit y push directamente desde la aplicación
- Tema Oscuro/Claro: Interfaz inspirada en VS Code
- Dashboard de Publicaciones: Vista de tarjetas estilo CMS
- Multi-proyecto: Soporte para múltiples repositorios Astro
- Inserción de Componentes: Helpers para componentes Astro comunes
Stack Tecnológico
El proyecto utiliza tecnologías de alto rendimiento y multiplataforma:
- Rust 1.70+: Lenguaje principal con seguridad de memoria
- eframe/egui 0.29: Framework GUI inmediato para aplicaciones nativas
- serde/serde_yaml: Serialización y parsing de frontmatter YAML
- git2 (libgit2): Integración nativa con Git para sincronización
- anyhow: Manejo idiomático de errores con contexto
- rfd: Diálogos nativos de archivos (open/save)
- egui_commonmark: Renderizado de v
ista previa Markdown
Arquitectura
El proyecto sigue una arquitectura modular inspirada en MVC:
src/├── main.rs # Punto de entrada y configuración├── app.rs # Estado global y ciclo de vida├── models.rs # Estructuras de datos├── services/ # Lógica de negocio│ ├── content.rs # Parsing de frontmatter/body│ ├── files.rs # Operaciones de archivos│ └── git.rs # Sincronización con GitHub└── ui/ # Componentes visuales ├── dashboard.rs # Vista de tarjetas ├── editor.rs # Editor de texto ├── preview.rs # Vista previa MD └── dialogs.rs # Modales y diálogosCasos de Uso
- Bloggers: Gestión de posts con frontmatter complejo
- Documentadores: Organización de documentación técnica
- Desarrolladores: Edición rápida de contenido Astro sin CLI
- Creadores de Contenido: Vista previa inmediata antes de publicar
Estructura de Proyecto Esperada
La aplicación funciona con proyectos Astro que sigan esta estructura:
mi-proyecto-astro/├── src/│ └── content/ # Directorio de contenido│ ├── blog/ # Colección "blog"│ └── docs/ # Colección "docs"└── public/ └── images/ # Directorio de assetsDetalles Técnicos
Configuración Persistente
La aplicación utiliza confy para almacenar configuración multiplataforma:
- Ruta al repositorio actual
- Token de GitHub (opcional)
- Preferencias de tema
- Configuraciones de múltiples proyectos
Gestión de Metadatos
Cada colección puede definir campos personalizados con tipos específicos:
- String: Texto simple
- Boolean: Checkboxes
- Date: Selector de fecha
- Image: Diálogo de selección de imagen
- List: Array de strings
- Categories: Etiquetas predefinidas
- Number: Campos numéricos
Sincronización Git
El módulo git.rs ejecuta operaciones nativas de Git:
git add .git commit -m "mensaje"git push origin main
Soporta autenticación mediante token personal de GitHub.
Testing
El proyecto incluye tests unitarios en el módulo services::content::tests:
- Parsing de frontmatter (YAML válido, vacío, malformado)
- Serialización (básico, eliminación de nulls)
- Extracción de atributos
- Limpieza de imports
- Reparación de rutas
- Cálculo de rutas relativas
Instalación
Requisitos Previos
- Rust 1.70+ (rustup.rs)
- Git instalado y configurado
Windows: Visual Studio Build Tools con C++ Desktop Development
macOS: Xcode Command Line Tools
Linux: Dependencias del sistema (libxcb, libxkbcommon, openssl)
Compilación
# Clonar el repositoriogit clone https://github.com/naujrevilo/interstellar-writer-astro.gitcd interstellar-writer-astro
# Compilar y ejecutarcargo run
# Compilación optimizada para produccióncargo build --releaseDocumentación
- DEVELOPMENT.md: Arquitectura técnica completa
- MANUAL_USUARIO.md: Guía de usuario ilustrada
- Diagramas de arquitectura (clases, flujo, módulos, secuencia)
Estado del Proyecto
✅ Versión 1.0.5 - Estable y listo para producción
Licencia
AGPL-3.0
Nota: Este proyecto demuestra capacidades avanzadas de desarrollo en Rust, incluyendo GUI nativa, manejo de archivos, parsing de formatos complejos e integración con Git.