Lienzo Abierto: una galería de imágenes para aprender, adaptar y hacer tuya
Una galería de imágenes con búsqueda, favoritos e importación local. Código abierto, ilustraciones de ejemplo y un recorrido para adaptarla.
Aprende la arquitectura completa de una app Flutter con backend .NET 8 para generación de imágenes IA usando Novita AI, Firebase y webhooks.

Actualizado: 20 de febrero de 2026.
Este capítulo define la arquitectura del curso para que entiendas cómo viajan los datos desde la app Flutter hasta Novita AI y cómo vuelve el resultado final por webhook.
Repositorio oficial del curso: curso-flutter-net8-novita-ai en GitHub.
codigo/ de esta serie.app/:
backend/InvitaIA.Api/:
InvitationsController para creación y consulta.NovitaService para integración IA.NovitaWebhookController para callback asíncrono.users/{uid}/public_invitations).uploads/{uid}/{file}).txt2img e img2img.img2prompt.chat/completions para adaptar prompt.task-result + webhook.POST /api/invitations/create.task_id).status, previewUrl, finalUrl.cd codigo/backend
dotnet build InvitaIA.Api.sln
# revisar endpoints disponibles
rg -n "\[Http(Post|Get|Put|Delete)" InvitaIA.Api/Controllers -S
/api/webhooks/novita.create devuelve 401: revisa token Firebase en header Authorization.Firebase:ProjectId y permisos de cuenta de servicio.Porque la generación de imagen es asíncrona y puede tardar más que una request HTTP normal.
En InvitationService y NovitaTaskWorker del backend.
No. La app usa el backend como capa de dominio y seguridad.
codigo/backend/InvitaIA.Api/Controllers/InvitationsController.cscodigo/backend/InvitaIA.Api/Controllers/NovitaWebhookController.cscodigo/backend/InvitaIA.Api/Workers/NovitaTaskWorker.cscodigo/app/lib/services/api_service.dart