Skip to main content

Generador de Backends a partir de YAML

Project description

YAML-to-Backend

Una librería Python para generar backends completos a partir de definiciones YAML.

Descripción

YAML-to-Backend es una herramienta que permite generar automáticamente backends completos con FastAPI, SQLAlchemy y SQLModel a partir de archivos YAML que definen entidades, campos, relaciones y permisos.

Características

  • Generación automática de modelos: Crea modelos SQLModel y Pydantic automáticamente
  • CRUD automático: Genera endpoints CRUD completos para cada entidad
  • Autenticación integrada: Sistema de autenticación JWT incluido
  • Validación automática: Validación de datos basada en las definiciones YAML
  • Documentación automática: Swagger/OpenAPI generado automáticamente
  • Soporte para relaciones: Claves foráneas y relaciones entre entidades
  • Sistema de permisos: Control de acceso basado en roles

Instalación

pip install yaml-to-backend

Uso

1. Definir entidades en YAML

Crea archivos YAML que definan tus entidades:

# entidades/usuario.yaml
entidad: Usuario
tabla: usuarios
descripcion: Gestión de usuarios del sistema
campos:
  id:
    tipo: integer
    pk: true
  nombre:
    tipo: string
    max: 100
    required: true
  email:
    tipo: string
    max: 255
    required: true
    ejemplo: "usuario@ejemplo.com"
  password:
    tipo: string
    max: 255
    required: true
  activo:
    tipo: boolean
    required: true
    ejemplo: true
  rol_id:
    tipo: integer
    fk: roles.id
    required: true
permisos:
  admin: [r, w, d]
  usuario:
    yo:
      campo_usuario: id

2. Usar la librería

from yaml_to_backend import update_config, get_run_backend

# Configurar la base de datos
update_config(
    DB_HOST='localhost',
    DB_USER='usuario',
    DB_PASSWORD='password',
    DB_NAME='mi_base_datos',
    DB_PORT=3306,
    PORT=8000
)

# Ejecutar el backend
run_backend = get_run_backend()
run_backend()

3. Usar desde línea de comandos

# Configurar y ejecutar
yaml-to-backend --config entidades/ --port 8000

# Solo validar YAML
yaml-to-backend --validate entidades/

Estructura del Proyecto

yaml-to-backend/
├── yaml_to_backend/          # Código fuente de la librería
│   ├── __init__.py
│   ├── app.py               # Aplicación principal
│   ├── config.py            # Configuración
│   ├── cli.py               # Interfaz de línea de comandos
│   ├── api/                 # Generadores de API
│   ├── core/                # Lógica principal
│   ├── db/                  # Modelos de base de datos
│   └── security/            # Autenticación y seguridad
├── tests/                   # Pruebas unitarias
├── setup.py                 # Configuración de instalación
├── pyproject.toml           # Configuración moderna del proyecto
├── MANIFEST.in              # Archivos a incluir en el paquete
└── README.md                # Este archivo

Tipos de Datos Soportados

  • integer: Números enteros
  • string: Cadenas de texto
  • boolean: Valores booleanos
  • datetime: Fechas y horas
  • date: Solo fechas
  • time: Solo horas
  • float: Números decimales
  • text: Texto largo
  • json: Datos JSON

Configuración

Variables de Entorno

  • DB_HOST: Host de la base de datos
  • DB_USER: Usuario de la base de datos
  • DB_PASSWORD: Contraseña de la base de datos
  • DB_NAME: Nombre de la base de datos
  • DB_PORT: Puerto de la base de datos
  • PORT: Puerto del servidor web
  • SECRET_KEY: Clave secreta para JWT
  • ALGORITHM: Algoritmo de encriptación JWT

Configuración Programática

from yaml_to_backend import update_config

update_config(
    DB_HOST='localhost',
    DB_USER='usuario',
    DB_PASSWORD='password',
    DB_NAME='mi_db',
    DB_PORT=3306,
    PORT=8000,
    SECRET_KEY='mi_clave_secreta',
    ALGORITHM='HS256'
)

Desarrollo

Instalación para desarrollo

git clone https://github.com/cxmjg/yaml-to-backend.git
cd yaml-to-backend
python -m venv .venv
source .venv/bin/activate  # En Windows: .venv\Scripts\activate
pip install -e .

Ejecutar pruebas

pytest

Construir el paquete

python -m build

Publicación Automática

Este proyecto utiliza GitHub Actions con Trusted Publishers para publicar automáticamente en PyPI cuando se hace push a la rama main.

Configuración de Trusted Publishers

  1. Ve a tu proyecto en PyPI
  2. En "Settings" > "Trusted publishers"
  3. Agrega un nuevo publisher con:
    • Owner: cxmjg
    • Repository name: yaml-to-backend
    • Workflow name: publish
    • Environment name: (dejar vacío)

Licencia

MIT License - ver LICENSE para más detalles.

Contribuir

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Changelog

v0.1.0

  • Primera versión estable
  • Generación automática de modelos y CRUD
  • Sistema de autenticación JWT
  • Soporte para relaciones entre entidades
  • CLI para configuración y validación
  • Publicación automática con GitHub Actions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yaml_to_backend-0.1.9.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yaml_to_backend-0.1.9-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file yaml_to_backend-0.1.9.tar.gz.

File metadata

  • Download URL: yaml_to_backend-0.1.9.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for yaml_to_backend-0.1.9.tar.gz
Algorithm Hash digest
SHA256 a9fc64d161cc958e81483fd4cf3cd926b6d795ff5844034c81f1edc2b1f18063
MD5 bfdc8e9175304bdd7f905727452f9379
BLAKE2b-256 4bf45840caa856dd718f61274b2adb994c4cfdac725ec891beee6d6adacba7bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaml_to_backend-0.1.9.tar.gz:

Publisher: publish.yml on cxmjg/yaml-to-backend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yaml_to_backend-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for yaml_to_backend-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6005b8bd03858c3f39caa969b94762603d7418f6e91aed5feea637a823ae5430
MD5 b5d637a85282b06f4dc2758ba3c495e3
BLAKE2b-256 3de17c32bfb68a4ef04bcbced2129f1b648c449d358815288ecfdf621ea53c04

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaml_to_backend-0.1.9-py3-none-any.whl:

Publisher: publish.yml on cxmjg/yaml-to-backend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page