Documentación de Blueprint
Blueprint es una poderosa herramienta CLI diseñada para generar proyectos de API en Go listos para producción a partir de una simple definición en Markdown.
Objetivo: Eliminar el código repetitivo (boilerplate) y permitirte enfocarte en la lógica de negocio desde el primer minuto.
Características Principales
🚀 Generación Rápida
Crea una estructura de proyecto Go completa en segundos.
🔒 Auth Integrado
Soporte opcional para Firebase Auth (Login, Registro, Roles).
📦 Auto CRUD
Genera handlers y rutas para crear, leer, actualizar y borrar documentos.
💳 Mercado Pago
Integración nativa para procesar pagos fácilmente.
Requisitos Previos
Instalación
Clona el repositorio y compila el generador usando el Makefile proporcionado:
git clone https://github.com/elbader17/Blueprint
cd Blueprint
make build
Esto descargará las dependencias y compilará el binario
blueprint_gen.
Uso
Modo Interactivo (Recomendado)
Ejecuta el generador sin argumentos para lanzar la interfaz visual (TUI):
./blueprint_gen
El asistente te guiará paso a paso para definir tu proyecto, base de datos, autenticación y modelos.
Modo Manual
Puedes proporcionar un archivo de definición existente directamente:
./blueprint_gen blueprint.md
Credenciales
Para que la API generada funcione correctamente, necesitas configurar tu proyecto de Firebase.
1. Project ID
Obtenlo en la configuración de tu proyecto en Firebase Console.
project_id: "my-shop-123"
2. Service Account Key
- Ve a Project settings > Service accounts.
- Genera una nueva clave privada (JSON).
- Renombra el archivo a
firebaseCredentials.json. - Colócalo en la raíz de tu proyecto generado.
Formato blueprint.md
El archivo de entrada debe contener un bloque de código JSON con la siguiente estructura:
{
"project_name": "ShopMasterAPI",
"database": {
"type": "firestore",
"project_id": "shop-master-prod"
},
"auth": {
"enabled": true,
"user_collection": "users"
},
"payments": {
"enabled": true,
"provider": "mercadopago",
"transactions_collection": "transactions"
},
"models": [
{
"name": "products",
"protected": false,
"fields": {
"name": "string",
"price": "float",
"description": "text",
"in_stock": "boolean"
},
"relations": {
"category": "belongsTo:categories"
}
}
]
}
Explicación de Campos
project_name: Nombre de la carpeta y módulo Go que se generará.database: Configuración del driver de base de datos (firestore, postgresql, mongodb).auth: Configuración de autenticación. Sienabledes true, se genera el sistema de login.models: Lista de entidades de tu base de datos.protected: Si es true, las rutas requerirán token Bearer.fields: Mapa de nombre:tipo (string, text, integer, float, boolean, datetime).
Arquitectura
El código generado sigue los principios de Arquitectura Hexagonal (Ports and Adapters) y Clean Code.
Domain Layer
Modelos principales e interfaces de repositorio (Ports). Desacoplado de la infraestructura.
Infrastructure Layer
Implementaciones concretas (Adapters) como Firestore, Postgres, etc.
Application Layer
Handlers HTTP, lógica de negocio y casos de uso.
Endpoints Generados
Dependiendo de tu configuración, se generarán los siguientes endpoints: