jeiel85/markleaf-android
jeiel85/markleaf-android has 143 GitHub stars and 15 forks. GitHot measured +5 in 7 days. Last checked 2026-11-10 23:19 UTC. Last push 2026-11-03.
A lightweight, local-first Markdown note app for Android.
Crecimiento de estrellas medido
- in 24h
- Actualización retrasada
- in 7 days
- +5
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
README.es.md
Original
Markleaf
Pensamientos que se acumulan con ligereza, notas Markdown ordenadas
Una app de notas Markdown minimalista y local-first para Android
English · 한국어 · 日本語 · 简体中文 · Deutsch · Español · Français · Hrvatski · Русский · Tiếng Việt · Slovenčina
Repositorio de GitHub · Discussions (sugerencias) · Espejo de GitLab (archivado)
Inserción rápida con / → Markdown estándar → vista previa en vivo
Tablet en 3 paneles — barra de etiquetas · lista de notas · editor en una pantalla
🍃 ¿Qué es Markleaf?
Markleaf es una app de notas Markdown para Android diseñada para eliminar lo superfluo y dejarte concentrar en solo dos cosas: capturar y organizar. Tus datos se guardan únicamente en tu dispositivo, y el formato Markdown estándar garantiza la propiedad total y la portabilidad de tus datos. Incluso la sincronización ocurre solo a través de una carpeta que tú eliges — Markleaf nunca sincroniza ni sube nada por sí mismo.
Ver la página de branding · Versión actual: v2.71.0 · Política de privacidad · F-Droid · Google Play
✨ Funciones principales
Escritura y vista previa
- Inserción rápida con
/— busca comandos al inicio de una línea para insertar encabezados, listas, tablas, avisos, wikilinks, imágenes y más como Markdown estándar - Vista previa de Markdown en vivo — alterna al instante entre edición y vista previa, o usa la opción Mostrar sintaxis Markdown para coloreado de sintaxis en vivo
- Tablas GFM / casillas / citas / avisos (
> [!NOTE]…) — todo se renderiza en la vista previa - Resaltado de sintaxis en bloques de código — coloreado por tokens para 10 lenguajes: Kotlin, Java, Python, JavaScript/TypeScript, Bash, JSON, YAML, XML, SQL
- Salto entre referencia y definición de notas al pie (
[^N]) — toca el superíndice para desplazarte suavemente hasta la definición - Adjuntos de imagen + edición de texto alternativo — se guardan como copias aisladas en el almacenamiento interno de la app (no requiere permiso de medios)
- Alternador inteligente de formato Markdown — envuelve la selección o la palabra junto al cursor en Negrita/Cursiva/Tachado/Código en línea, y toca de nuevo para desenvolver limpiamente un texto que ya está envuelto
- Atajos de teclado — Ctrl/Cmd+B, I, K, Shift+S para negrita, cursiva, enlace y tachado con un teclado físico
- Índice (TOC) — en el modo de vista previa, salta entre encabezados H1–H3 para navegar notas largas
- Elección de fuente — Sans, Serif o monoespaciada, o un archivo de fuente
.ttf/.otfpropio (se queda en el dispositivo); los bloques de código siempre se mantienen en monoespaciado - Modo enfoque / estadísticas de palabras, caracteres y tiempo de lectura / buscar y reemplazar dentro de una nota
Organización y navegación
- Clasificación por etiquetas + autocompletado — solo escribe
#etiquetasen el cuerpo de la nota para indexado automático, sin carpetas; las etiquetas existentes se autocompletan al escribir# - Wikilinks (
[[Título]]) + panel de enlaces entrantes — autocompletado, y ve de un vistazo qué apunta a esta nota - Salto rápido (Ctrl+K) — salto por subcadena de título al estilo Obsidian
- Búsqueda de texto completo con SQLite FTS — rápida, hasta el cuerpo de la nota
- Fijar / archivo / papelera — la papelera vuelve a preguntar antes de eliminar para siempre
Sincronización y exportación (principio No-Cloud)
- Sincronización por carpeta espejo — refleja cada nota como un archivo
.md/.txtcon el nombre del título en una carpeta que eliges mediante SAF (Drive/Dropbox/Syncthing/OneDrive/NAS, etc.); si renombras una nota, su archivo la sigue. Markleaf nunca sincroniza por sí mismo; la sincronización se delega a cualquier app externa que sincronice esa carpeta - Abrir archivos
.md/.txtpara leerlos — Abrir archivo… en el menú ⋮, o un toque en tu gestor de archivos, abre el archivo renderizado y en solo lectura; no se crea ninguna nota hasta que tocas Guardar como nota (el nombre del archivo se convierte en el título cuando no hay encabezado). Un archivo compartido desde otra app se sigue importando al instante. Las etiquetas de las notas sincronizadas se reconocen de inmediato - Exportar notas individuales o todas como
.md - Enviar mediante la hoja de compartir del sistema
Diseño y accesibilidad
- Tema verde Markleaf + alternancia Material You — colores del fondo de pantalla del sistema opcionales en Android 12+
- Modo oscuro automático — sigue la configuración del sistema
- Diseño de 3 paneles para tablet — barra lateral de etiquetas · lista de notas · editor; toca una etiqueta en la barra lateral para filtrar la lista de notas en el momento (la lista de notas sigue siendo contraíble)
- Interfaz en 11 idiomas — recursos en coreano / inglés / español / japonés / francés / alemán / chino simplificado / croata / ruso / vietnamita / eslovaco
- Opción de bloquear capturas de pantalla / vista previa en apps recientes — para notas sensibles
🔗 Funciona con la carpeta Markdown que ya tienes
Markleaf no tiene un formato de bóveda propio. Apúntalo a una carpeta — incluso a una que Obsidian, Logseq o tu editor de texto ya abren — y trabajará con los archivos que haya allí.
- Archivos planos que ya son tuyos. Una nota es un archivo
.md(o.txt). Deja tus archivos existentes en la carpeta y Markleaf los recogerá como notas la próxima vez que pase a primer plano — sin paso de importación. - Tu frontmatter sobrevive. Markleaf añade una pequeña cabecera YAML (
markleaf_id, marcas de tiempo, pinned/archived) para emparejar un archivo con una nota entre dispositivos, y todo lo que no reconoce sale de nuevo tal cual — incluidas las listas en bloque indentadas con las que Obsidian escribe las etiquetas, los mapas anidados, los comentarios y el entrecomillado. La cabecera que añade es un subconjunto estricto de YAML que Obsidian, GitHub y VS Code interpretan sin problemas. - La misma sintaxis que ya escribes.
[[Wikienlaces]]con panel de retroenlaces,#etiquetasen el propio texto, tablas y casillas GFM, llamadas> [!NOTE]y un conmutador rápidoCtrl+Kal estilo de Obsidian. - Se reconcilia solo, con cuidado. Los cambios hechos en otro sitio se incorporan cuando Markleaf vuelve a primer plano (como mucho una vez por minuto). Una edición hecha desde otro editor se detecta aunque ese editor nunca toque el frontmatter de Markleaf: la reconciliación compara el cuerpo, no solo la marca de tiempo. Un archivo solo gana si es realmente más nuevo; si ambos lados cambiaron, la versión remota llega como una nota aparte en vez de sobrescribir tus ediciones, y nunca se borra nada automáticamente.
[!IMPORTANT] Dos cosas antes de apuntar Markleaf a una bóveda real.
- Una carpeta, sin subcarpetas. Markleaf lee los archivos que están directamente dentro de la carpeta elegida y no baja a subdirectorios. Una bóveda organizada en carpetas anidadas solo se encontrará con Markleaf en su nivel superior — es deliberado: Markleaf organiza por etiquetas, no por carpetas.
- Editar una nota renombra su archivo. Los nombres de los archivos espejo siguen al título de la nota, así que un archivo cuyo nombre difiera de su encabezado se renombrará la primera vez que lo guardes en Markleaf. Si en tu bóveda hay
[[enlaces]]que apuntan al nombre antiguo, se romperán.Si tu bóveda tiene muchos niveles o muchos enlaces, apunta Markleaf a una carpeta aparte y úsalo como bandeja de entrada móvil desde la que fusionar después, en lugar de como un segundo editor sobre la bóveda misma.
🛠 Stack tecnológico
Markleaf sigue los estándares actuales de desarrollo Android con un stack moderno y fácil de mantener.
- UI: Jetpack Compose + Material 3 + color dinámico Material You
- Arquitectura: separación simple por capas (core / data / domain / feature / ui) + patrón Repository
- Base de datos: Room — persistencia local respaldada por SQLite, tablas virtuales FTS4 para búsqueda de texto completo
- Analizador de Markdown: commonmark-java (CommonMark 0.30 + extensiones GFM: tablas, tachado, listas de tareas, notas al pie, YAML frontmatter; la vista previa muestra un salto de línea simple como salto de línea y no como espacio)
- Asincronía: Kotlin Coroutines y Flow
- Storage Access Framework (SAF) — sincronización por carpeta espejo + adjuntos de imagen
- Carga de imágenes: Coil — Apache 2.0, compatible con F-Droid
- DataStore Preferences — ajustes de la app
- Profile Installer 1.4.0 + Macrobenchmark — medición del baseline profile de arranque en frío (326ms en un TB320FC)
- Pruebas: JUnit + Robolectric + tests de regresión visual Roborazzi (goldens en Linux, umbral 0.005)
- CI: GitHub Actions — build e instrumented tests son comprobaciones obligatorias, además de launch-smoke, record-roborazzi y la release firmada al etiquetar
🏗 Arquitectura
Markleaf usa la siguiente estructura por capas para separar responsabilidades y facilitar las pruebas.
com.markleaf.notes
├── core # lógica central compartida: procesamiento de markdown, adjuntos, sincronización
├── data # DB de Room, entidades, implementaciones de repositorio (fuente de datos)
├── domain # modelos, interfaces de repositorio (lógica de negocio)
├── feature # UI y ViewModels por pantalla (presentación)
│ ├── editor # editor, buscar/reemplazar, autocompletado de wikilinks, avisos, tablas
│ ├── notes # lista de notas, salto rápido, archivo
│ ├── search # búsqueda de texto completo con FTS
│ ├── tags # índice de etiquetas
│ ├── trash # papelera / eliminación permanente
│ └── settings # tema, carpeta de sincronización, bloqueo de capturas, etc.
├── navigation # configuración de Jetpack Compose Navigation
└── ui # tema (Markleaf green / Material You), componentes compartidos
🚀 Primeros pasos
Instalación
[!NOTE] Las actualizaciones en Google Play están en pausa por ahora. No se publicarán nuevas versiones en la Play Store hasta que se resuelva un requisito de política de registro de negocio en Corea para el desarrollador individual. Para obtener la versión actual, usa GitHub Releases. Cuando la compilación de F-Droid se haya puesto al día, F-Droid será la ruta de actualización recomendada. (Si ya la instalaste desde la Play Store, seguirá funcionando.)
- F-Droid (recomendado para actualizaciones automáticas): Markleaf en F-Droid — búscalo en el cliente de F-Droid o instálalo con el enlace de arriba. El catálogo puede publicarse después de GitHub; si aún no muestra la versión actual, usa GitHub Releases a continuación. Usa la misma clave de firma (SHA-256
0be97352…f91a), así que las actualizaciones continúan sin problemas aunque primero instales por sideload un APK de GitHub. - Instalación directa del APK: el release v2.71.0 de GitHub incluye dos APK —
markleaf-v2.71.0.apkes la misma versión que F-Droid/Play (sin actualización automática, sin permisos adicionales), ymarkleaf-v2.71.0-sideload.apkañade una comprobación de actualización dentro de la app, opcional (INTERNET,REQUEST_INSTALL_PACKAGES). Si quieres actualizaciones dentro de la app, descarga la versión sideload y ejecútala en tu dispositivo Android — ambas usan la misma clave de firma, así que cambiar de una a otra más adelante cuenta como una actualización normal, no como una reinstalación. - Google Play: Markleaf en Google Play — las actualizaciones están en pausa (ver la nota de arriba). Si ya la tienes instalada, seguirá funcionando; obtén la versión actual desde GitHub Releases o desde F-Droid cuando esté disponible allí.
Compilar desde el código fuente
Si quieres compilar el proyecto o contribuir, sigue estos pasos.
# Clonar el repositorio
git clone https://github.com/jeiel85/markleaf-android.git
# Entrar en la carpeta del proyecto
cd markleaf-android
# Compilar e instalar
./gradlew installDebug
Las correcciones de Markleaf casi siempre empiezan con el informe de otra persona. Quienes los escribieron están en THANKS.md.
🔒 No-Cloud by design
Markleaf no tiene backend propio y tus notas nunca salen del dispositivo por su cuenta. Que tus datos salgan del dispositivo es enteramente tu decisión.
- ✅ Las versiones de las tiendas (F-Droid, Google Play) no declaran
android.permission.INTERNET— no realizan ninguna solicitud de red - ✅ Sin servidor / backend propio de Markleaf
- ✅ Sin analíticas / anuncios / rastreo / SDKs de código cerrado
- ✅
android:allowBackup="false"— los datos de Markleaf quedan excluidos de la copia de seguridad automática de Android y de la transferencia entre dispositivos - ✅ Los datos solo se mueven por rutas del sistema operativo cuando tú exportas, compartes, abres un enlace externo o eliges una carpeta SAF
- ✅ Totalmente de código abierto, auditable por cualquiera bajo Apache 2.0
Una única excepción. El APK de GitHub Releases declara dos permisos: INTERNET para una comprobación de actualizaciones desactivada por defecto y que tú debes activar, y REQUEST_INSTALL_PACKAGES para poder instalar la actualización elegida, tras verificar su SHA-256. Las versiones de F-Droid y Google Play no contienen ninguno de estos permisos ni el código correspondiente — no están desactivados, sino ausentes. Ninguna versión, en ninguna de estas peticiones, envía notas, etiquetas, adjuntos, metadatos, identificadores ni datos de uso. El límite está escrito en docs/AGENT_SPEC.md §15.9.
El funcionamiento exacto de "never leaves your device" está documentado en la Política de privacidad y la No-Cloud Certification.
🗺 Hoja de ruta
v1.x — MVP
- Edición y guardado básico de Markdown
- Filtrado y búsqueda basados en etiquetas
- Nuevo ícono de app y branding
- Vista previa de Markdown en vivo y modo oscuro
- Búsqueda SQLite FTS de alto rendimiento
- Optimización del diseño de 2 paneles para tablet
- Exportación de Markdown de una nota o de todas
- Lanzamiento estable v1.0.0
v2.x — Expansión clase Bear (actual)
- v2.3 Analizador CommonMark — avisos, tachado GFM, listas de tareas, notas al pie, YAML frontmatter
- v2.4–2.5 Wikilinks (
[[Título]]) + autocompletado + panel de enlaces entrantes - v2.6 Adjuntos de imagen + texto alternativo + lightbox
- v2.7 Sincronización por carpeta espejo SAF (delegada a Drive/Dropbox/Syncthing, sigue sin INTERNET)
- v2.8 Alternancia Material You + tema verde Markleaf restaurado
- v2.9 Opción de bloqueo de capturas, pruebas de regresión visual (Roborazzi) establecidas
- v2.10 Resaltado de sintaxis en bloques de código (10 lenguajes)
- v2.11 Vista previa de tablas GFM revivida
- v2.12 Salto rápido (Ctrl+K)
- v2.13 Buscar / reemplazar dentro de una nota
- v2.14 Salto por clic entre referencia y definición de notas al pie
- v2.15 Estabilización del envío a F-Droid y documentación no-cloud
- v2.16 Widget de pantalla de inicio, bloqueo biométrico, transparencia de código abierto, formato Markdown inteligente
- v2.17 Importación de archivos externos
.md/.txtpor apertura o compartir, correcciones de notas duplicadas y reconocimiento de etiquetas en la sincronización por carpeta - v2.18 Archivos de sincronización por carpeta nombrados según el título de la nota (el renombrado se sigue) + elección de
.md/.txt - v2.19 Seis notas de ejemplo en el primer inicio + la exportación a PDF/Markdown ya no duplica el título
- v2.20 Atajos de teclado, autocompletado de
#etiqueta, índice, fuente serif, diseño de 3 paneles para tablet (barra de etiquetas + filtro en el momento) - v2.21 Retroceso predictivo, transiciones pulidas, movimiento de listas/tarjetas, barra de etiquetas para tablets plegables, alternancia de listas de tareas
- v2.22 Comandos de inserción rápida con
/, con selección táctil y por teclado físico, y seis menús localizados - Lanzamiento público en Google Play — cualquiera puede instalarla desde la Play Store
🌐 Ayuda a traducir
La mayoría de las traducciones de Markleaf nunca las ha leído un hablante nativo. Si algo en tu idioma está mal, suena raro o aparece cortado, puedes avisarnos sin tocar código.
¿Prefieres editar los archivos tú mismo? CONTRIBUTING.md (en inglés) explica cuáles son y qué comprueba la compilación.
📜 Licencia
Este proyecto está bajo la licencia Apache License 2.0. Consulta el archivo LICENSE para más detalles.
Made with ❤️ by Markleaf Team
Explorar proyectos relacionados
n8n-io/n8n
Plataforma Fair-code de automatización de flujos de trabajo con capacidades nativas de IA. Combina la creación visual con código personalizado, se puede alojar en tus propios servidores o en la nube y ofrece más de 400 integraciones.
210,036 estrellaslanggenius/dify
Crea flujos de trabajo de agentes y canalizaciones RAG, con amplio soporte de modelos y herramientas de IA, en un único espacio de trabajo colaborativo. Despliega en la nube, en una VPC o en tus propios servidores para que los equipos pasen del prototipo a producción sin reconstruir la pila.
160,773 estrellasmicrosoft/PowerToys
Microsoft PowerToys es un conjunto de utilidades que potencian la productividad y la personalización en Windows
140,833 estrellasstablyai/orca
Orca es el lugar para trabajar con una flota de agentes (p. ej., Grok Bot y Claude Code). Ejecuta cualquier agente de programación con tu propia suscripción. Disponible en escritorio, móvil y tiempo de ejecución remoto.
121,592 estrellas