



Photo Create AI — Editar, Componer y Crear Imágenes con IA
Aplicación full-stack para editar, componer y crear fotografías en lote usando IA vía OpenRouter. Procesamiento concurrente controlado, marca de agua personalizable integrada de forma consistente en todo el lote, y generación de imágenes desde texto — con auth JWT y arquitectura MVVM de punta a punta.
Stack
¿Qué es esto?
Una aplicación web para editar, componer y crear imágenes con IA, pensada para procesar lotes completos de fotos con una sola instrucción en lenguaje natural en vez de editar una por una.
Tres modos, un mismo pipeline
- Editar: sube una foto, describe el retoque ("mejora la nitidez y el balance de color") y la IA la procesa contra el modelo configurado.
- Componer: igual que editar, pero agrega una imagen de referencia (marca de agua propia o predeterminada) integrada de forma consistente en la esquina inferior derecha de cada foto del lote.
- Crear: genera imágenes nuevas desde cero solo con un prompt de texto — sin subir ninguna foto — eligiendo cuántas variaciones generar.
Los tres modos comparten las mismas tablas y el mismo pipeline de batch/jobs — un campo discriminador distingue el modo en vez de triplicar la lógica.
Funcionalidades
- Procesamiento por lotes concurrente:
asyncio.Semaphorelimita cuántos jobs corren en paralelo para no saturar la API de IA ni la base de datos - Progreso en tiempo real: polling ligero del estado del lote (pendiente/procesando/completado/fallido) cada 1.5s
- Reintentos individuales: cada job fallido se puede reintentar sin rehacer todo el lote
- Auth JWT: registro/login con bcrypt, cada usuario solo ve sus propios lotes
- Soft delete y auditoría de cada llamada a la IA (costo, duración, status HTTP)
- Proveedor de IA inyectable: cambiar de proveedor sin tocar la lógica de negocio, vía un Protocol de Python
Arquitectura
MVVM de punta a punta: FastAPI + SQLAlchemy async sirven tanto la API REST como el frontend (Jinja2 + JS vanilla modular), sin frameworks pesados ni build step.
View (Jinja2 + JS) → ViewModel (estado UI) → Model (api.js) → FastAPI → OpenRouter
Stack técnico
- FastAPI (async) + SQLAlchemy 2.0 + asyncpg
- PostgreSQL + Alembic para migraciones
- OpenRouter — modelo de IA configurable para edición, composición y generación de imágenes
- python-jose + bcrypt — auth JWT
- Pillow + piexif — metadata y redimensionado de imágenes
- JS vanilla modular (sin frameworks) + Tailwind CDN
Por qué importa
Un pipeline de IA generativa de producción real: procesamiento concurrente controlado, arquitectura desacoplada (proveedor de IA intercambiable sin tocar servicios), y un frontend reactivo sin la complejidad de un framework — pensado para escalar de 1 a N imágenes por lote sin cambiar una línea de lógica de negocio.