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.3.tar.gz (38.8 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.3-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yaml_to_backend-0.1.3.tar.gz
  • Upload date:
  • Size: 38.8 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.3.tar.gz
Algorithm Hash digest
SHA256 e99d52893fd8d72efc234a6cb15ae2fbd02661a83c09cf53ba8c8a8165e2f37c
MD5 126cc5e8f06685951db6ce73f3436efe
BLAKE2b-256 6815300061dc887ceacfde8e515bbd1f2750561d33887cd8988dbd9bcab925ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaml_to_backend-0.1.3.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.3-py3-none-any.whl.

File metadata

File hashes

Hashes for yaml_to_backend-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 36d6191f03ef465a4e22fd0cf06b222b44e2e3928578bfe4f73af64f94d2819c
MD5 deead349ac08449cfc7cc0f888dc17c7
BLAKE2b-256 2c57c45d13f34d9f38ce7a5ba918a90b0ad901d64832515f73b76481d0aa08d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaml_to_backend-0.1.3-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