Este proyecto es una Firebase Function para generar imágenes de Open Graph de usuarios personalizadas con un formato de imagen PNG.
La funcionalidad principal consiste en recibir peticiones HTTP GET a través de la Firebase Function y procesar datos, como avatar, nombre de usuario, y otros parámetros, para generar una imagen de Open Graph personalizada con un fondo y fuente específicos.
- ✅ Firebase Functions: Una función HTTP que maneja la solicitud, valida el origen, y devuelve la imagen generada.
- ✅ Generación de SVGs: Uso de Satori para renderizar un árbol de nodos de elementos en SVG.
- ✅ Transformación de la imagen: Uso de Resvg para convertir el SVG generado en un archivo PNG.
- ✅ Gestión de activos: Fetch y manipulación de fuentes y fondos desde URLs específicas.
- 🏷️ TypeScript: Para la escritura del código en un formato tipado.
- 🔥 Firebase Functions: Para manejar las solicitudes HTTP.
- 💠 Satori: Para convertir los elementos de marcado en un SVG.
- 🖼️ Resvg: Para renderizar el SVG y convertirlo en un archivo PNG.
- 🌐 isomorphic-fetch: Para hacer solicitudes de red de manera consistente en un entorno de servidor y cliente.
- functions: Ruta principal de la función de Firebase.
- functions/src/index.ts: Archivo de entrada principal que define la función de Firebase para procesar solicitudes relacionadas con la generación dinámica de imágenes OG.
- functions/src/og/index.ts: Implementación de la lógica principal para la generación de imágenes OG, incluyendo la construcción de plantillas SVG, conversión a PNG, y manejo de recursos como fuentes y fondos.
- functions/src/og/markup.ts: Estructura para construir las plantillas SVG dinámicas utilizadas en la generación de imágenes OG.
¿Te gustaría tomar este repositorio para tener tu propia Firebase Function para generar OG dinámicamente? Sigue los pasos a continuación para crear tu propia implementación.
-
Crea una cuenta en Firebase:
- Si aún no tienes una cuenta, regístrate en Firebase y accede al Consola de Firebase.
-
Crea un nuevo proyecto de Firebase:
- Haz clic en "Agregar proyecto" y sigue las instrucciones para crear un nuevo proyecto de Firebase.
-
Configura la CLI de Firebase:
- Instala la CLI de Firebase si aún no lo has hecho:
pnpm i -g firebase-tools
- Inicia sesión en la CLI de Firebase:
firebase login
- Instala la CLI de Firebase si aún no lo has hecho:
-
Inicializa Firebase en tu proyecto local:
- En tu terminal, navega al directorio donde quieras clonar el repositorio y ejecuta:
firebase init functions
- Selecciona tu proyecto de Firebase cuando se te solicite y elige entre JavaScript o TypeScript para las funciones.
- En tu terminal, navega al directorio donde quieras clonar el repositorio y ejecuta:
-
Clona el repositorio:
- Usa
git
para clonar el repositorio en tu máquina local:git clone https://github.com/UXCorpRangel/ana-cards-og.git
cd ana-cards-og
- Usa
-
Instala las dependencias:
- Navega al directorio del proyecto y ejecuta:
pnpm i
- Navega al directorio del proyecto y ejecuta:
-
Ejecuta el modo desarrollo con el comando:
-
Para ejecutar el modo desarrollo, utiliza el comando:
pnpm serve
-
Ejecuta el siguiente comando para desplegar la función:
firebase deploy --only functions
Esto subirá tu función a Firebase y la hará accesible mediante la URL proporcionada por la consola de Firebase.
¡Y eso es todo! Ahora puedes tener tu propia función de Firebase para generar imágenes OG dinámicamente y personalizarlas según tus necesidades.
Firebase Functions se eligió para este proyecto debido a su escalabilidad automática y costos basados en uso, lo que permite optimizar recursos y mantener el proyecto rentable.
Además, su modelo de precios, basado en la cantidad de invocaciones y tiempo de ejecución, es económico y flexible, lo que lo hace adecuado para proyectos con tráfico variable. Puedes consultar más sobre la estructura de precios de Firebase Functions aquí y obtener detalles sobre el pago por uso en la nube de Google.
- Guía de inicio rápido de Firebase Functions
- Documentación de Firebase CLI
- Cómo desplegar funciones en Firebase
Este proyecto utiliza la Licencia MIT. Consulta el Archivo de Licencia para obtener más información.