El problema
Este blog es una aplicación que utiliza el framework Astro, famoso por su rapidez de compilación para paginas estáticas. Astro tiene la capacidad nativa transformar markdown en html, pero el problema es que cada pagina que quisiera agregar al blog la tendría agregar directamente en el repositorio de forma manual y realizar un commit y push. Se que hay personas que les encanta escribir markdown, pero para ser sincero, prefiero escribir directamente un documento ya transformado visualmente, decidí encontrar una forma de evitar tener pushear un nuevo archivo .md, o tener que utilizar github codespaces para escribir un blog.
La solución
Siempre he utilizado notion para uso de notas, blogs, estudio, etc. Y esto me dio la idea poder crear una especie de aplicación en la que escribir blogs y que se crearan directamente en mi repositorio, la idea de la aplicación suponía crear un frontend y backend que imitará la interfaz de notion y que además creara los blogs en mi pagina.
Pero luego me dije:
- ¿Tendrá notion una API la cual pueda obtener mis propias paginas y procesarlas?
Y en efecto sí tiene un API !
Debido a esto se me ocurrió la idea de crear un parser para transformar una pagina de notion en markdown, siendo que ya existe una librería que puede hacer esto llamada
notion-to-md
pero estaba escrita en JavaScript y como me encuentro aprendiendo Go, decidí realizar mi propia implementación de este parser en Go. Esta es la estructura básica del funcionamiento. - Github action hace un git checkout a main
- Ejecutar la app de go para convertir las paginas de notion en markdown
- Commit a main y push con los nuevos cambios.
- Esto ejecutará inmediatamente un nuevo deploy a producción.
Loading graph...
Cabe destacar que la app de Golang notionmd
sólo obtendrá las paginas que posean la propiedad Published
en true
en mi base de datos de posts dentro notion. Y eso es todo!
Aquí esta el repositorio: https://github.com/LeoCaprile/notionmd