No es otro chat. Es un agente que trabaja por ti.

uCreacción entiende tu intención y un agente autónomo la ejecuta de principio a fin.

Un agente con herramientas reales

Hermes razona, escribe y ejecuta código, genera PDFs profesionales, navega la web y crea archivos — no solo respuestas de texto.

Un trabajo que termina solo

Tu tarea corre en tu propia infraestructura. Cierra la app o pierde la conexión: el trabajo se completa y te espera.

Progreso en vivo

Sigue cada estado y fragmento de salida en tiempo real mediante streaming (SSE) mientras el agente trabaja.

El LLM que elijas, por tarea

Alquila GPU, ejecuta un Ollama local o usa una API de terceros. Elige el mejor modelo para cada generación.

Notificaciones push

Cuando una tarea termina — bien o mal — recibes una notificación, incluso en tu dispositivo iOS vía APNs.

Archivos entregables

Recibe tu creación como un archivo real — PDF, DOC, MD, HTML o Texto Plano — listo para guardar, compartir y seguir desarrollando.

Control total

Cancela una tarea en vuelo y el LLM se detiene de verdad, ahorrando cómputo y dinero. Webhooks firmados y reintentos para tus integraciones.

Privado por diseño

Tu backend permanece en tu propia infraestructura, accesible por una red privada cifrada (Tailscale). Nada queda expuesto a internet.

De la idea al trabajo terminado

Tú describes. El agente hace el trabajo. Tú recibes el resultado.

1

Describe tu idea

Escríbela como salga — vaga, incompleta, con tus palabras. Nunca necesitas saber escribir prompts.

2

uCreacción diseña la especificación

Tu intención se convierte en un prompt maestro de ingeniería. Si hace falta, uCreacción solo pregunta lo que importa para eliminar ambigüedades.

3

El agente la ejecuta

Hermes trabaja con herramientas reales — código, PDFs, web y búsqueda — en tu propia infraestructura, con el LLM que elegiste para esta tarea.

4

Sigue el progreso en vivo

Mira los estados y fragmentos de salida en tiempo real mediante streaming. Cierra la app: el trabajo termina solo y te espera.

5

Recibe el archivo y la notificación

Cuando termina, recibes un aviso y descargas tu creación en PDF, DOC, MD, HTML o TXT.

6

Itera y sigue creando

Refina el resultado, pide cambios o empieza la siguiente idea. Tus creaciones y tu historial permanecen locales y privados.

Por qué es distinto

Un generador de prompts te da un prompt.
uCreacción te entrega el trabajo terminado.

Un chat de IA típico

  • Te da una respuesta de texto que tienes que seguir dirigiendo
  • Esperas con la app abierta
  • El prompt engineering lo haces tú
  • Un solo modelo, fijado
  • Sin archivos reales, sin trabajo real

uCreacción

  • Entrega un resultado terminado: archivo, PDF, código, investigación
  • Trabaja en segundo plano — cierra la app, termina solo
  • uCreacción diseña las instrucciones por ti
  • Cualquier LLM que elijas, por tarea
  • Agente con herramientas reales en tu propia infraestructura
Un solo backend, todos tus dispositivos

uCreacción donde creas

El mismo motor detrás de cada interfaz — tus dispositivos Apple en beta, y una app de escritorio próximamente.

Apple — Beta

App nativa para iOS y iPadOS, disponible ahora en TestFlight. macOS próximamente.

Únete a la beta

Escritorio — próximamente

Una app de escritorio que habla con tu propio backend a través de una red privada cifrada (Tailscale).

Próximamente
Prueba el flujo

De una idea a un archivo entregado

Una vista previa de cómo uCreacción lleva tu intención a un resultado terminado.

Vista previa estática — no necesitas saber de prompts.

Un caso real

De una idea vaga a un resultado terminado

Mira cómo la IA entiende tu intención antes de construir el resultado.

Tu idea inicial

Un proyecto recién empezado en NestJS. Quiero que aplique arquitectura hexagonal por default.

Entrada libre 1 frase
La IA afina el contexto
01
¿Cuál es el rol exacto? Arquitecto de software
02
¿Qué tipo de aplicación? API REST
03
¿Qué formato de salida? Estructura de archivos y contenido mínimo
04
¿Qué restricciones técnicas? TypeScript estrictoPrisma ORM
05
¿Qué lógica debe incluir? CRUD de usuarios con JWT y cookies HttpOnly
Siguiente paso Tu intención ya es una especificación de ingeniería. Envíala a tu IA y recibe el resultado como archivo. Genera PDF, DOC, MD, HTML o TXT
Especificación de ingeniería lista Salida completa · NestJS
ROL Y PROPÓSITO
Actúa como un arquitecto de software experto en NestJS, TypeScript y arquitectura hexagonal. Tu objetivo es generar el esqueleto completo de un proyecto NestJS que implemente una API REST con lógica de negocio encapsulada en el dominio, utilizando el patrón de puertos y adaptadores. Debes incluir un módulo de usuarios con CRUD completo, autenticación basada en JWT almacenado en cookie http‑only y persistencia con Prisma ORM. Siguiendo estrictamente la especificación que se detalla a continuación, produce toda la estructura de archivos y el código mínimo funcional en cada uno.

CONTEXTO
El proyecto acaba de iniciarse. Se trata de un backend para una aplicación que expone una API REST. Se desea establecer desde el principio una arquitectura hexagonal que permita aislar el dominio de los detalles de infraestructura (NestJS, Prisma, HTTP). El módulo de usuarios será el primero y servirá de plantilla para el resto. Se debe garantizar que el código sea auto‑contenido y listo para ejecutar con `npm install` y `npx prisma generate` (suponiendo una base de datos configurable mediante variable de entorno). La autenticación utiliza JWT firmado y lo transmite en una cookie segura, http‑only, con protección CSRF contemplada (SameSite). TypeScript debe operar en modo estricto.

INSTRUCCIONES PASO A PASO

1. **Inicialización del proyecto**
   - Crea la estructura base de un proyecto NestJS con las dependencias necesarias: `@nestjs/common`, `@nestjs/core`, `@nestjs/platform-express`, `@nestjs/jwt`, `@nestjs/passport`, `passport`, `passport-jwt`, `@prisma/client`, `prisma`, `cookie-parser`, `class-validator`, `class-transformer`, `bcrypt`, y las tipificaciones correspondientes.
   - Configura `tsconfig.json` con `strict: true`, `esModuleInterop`, `target: ES2020`, `module: commonjs`.
   - Incluye un archivo `.env.example` con `DATABASE_URL`, `JWT_SECRET`, `JWT_EXPIRATION`.
   - Define el script `prisma:generate` y `prisma:migrate` en `package.json`.

2. **Definir el dominio (capa de dominio)**
   - Crea la entidad `User` (sin dependencias externas) con campos: `id: string`, `email: string`, `password: string`, `role: 'admin' | 'user'`.
   - Crea el `UserRepository` como un puerto (interfaz) en el dominio, con métodos: `save(user: User): Promise<User>`, `findById(id: string): Promise<User | null>`, `findByEmail(email: string): Promise<User | null>`, `update(user: User): Promise<User>`, `delete(id: string): Promise<void>`.
   - Crea los value objects necesarios para validación (ej. `Email`, `Password`) que lancen errores de dominio.

3. **Capa de aplicación (servicios de aplicación y puertos de entrada)**
   - Implementa `UserService` que use `UserRepository` y exponen casos de uso: `register`, `findById`, `update`, `delete`.
   - Define un puerto `TokenProvider` (interfaz) con `generate(payload: any): Promise<string>` y `verify(token: string): Promise<any>`.
   - Define un puerto `AuthService` con `login(email: string, password: string): Promise<{ accessToken: string }>` y `validateUser(payload: any): Promise<User>`.
   - El servicio de aplicación orquestará la lógica de negocio y lanzará excepciones de aplicación.

4. **Capa de infraestructura (adaptadores)**
   - Crea el adaptador `PrismaUserRepository` que implementa `UserRepository` usando `@prisma/client`. Define el modelo `User` en `schema.prisma` con los mismos campos del dominio. Configura `PrismaService` como un provider de NestJS con `onModuleInit`.
   - Implementa `JwtTokenProvider` que use `@nestjs/jwt` y firme/verifique tokens.
   - Implementa `AuthServiceImpl` que use `UserRepository`, `TokenProvider` y `bcrypt` para `login`.
   - Crea un guard `JwtAuthGuard` (extendiendo `AuthGuard('jwt')`) que extraiga el JWT de la cookie (utilizando `cookie-parser`).
   - Crea una estrategia `JwtStrategy` para Passport que lea la cookie y valide el token.
   - Crea un interceptor o middleware para manejar la cookie http‑only en la respuesta de login.

5. **Capa de interfaces (controladores HTTP)**
   - Implementa `UserController` con endpoints RESTful: `POST /auth/register`, `POST /auth/login`, `POST /auth/logout`, `GET /users/:id`, `PATCH /users/:id`, `DELETE /users/:id`.
   - Aplica validación con `class-validator` en DTOs (`RegisterDto`, `LoginDto`, `UpdateUserDto`).
   - El controlador solo llama a los servicios de aplicación, sin contener lógica de negocio.
   - Protege las rutas de usuarios con `@UseGuards(JwtAuthGuard)`.
   - En `login`, el controlador debe establecer la cookie http‑only con el JWT en la respuesta.

6. **Módulo de NestJS y configuración**
   - Crea `DomainModule`, `ApplicationModule`, `InfrastructureModule`, `UserInterfaceModule`.
   - El `AppModule` importa los módulos anteriores y configura `PrismaService` como global, `JwtModule` de forma asíncrona con las variables de entorno, y `CookieParserMiddleware`.
   - Asegura que la inyección de dependencias respete los puertos (usa tokens de inyección personalizados para `UserRepository` y `TokenProvider`).

7. **Extras**
   - Incluye un filtro de excepciones global que mapee errores de dominio a HTTP 400/404/409.
   - Configura el `main.ts` con `app.use(cookieParser())`.

RESTRICCIONES Y REGLAS
- TypeScript estricto: sin `any` innecesario, todos los tipos explícitos.
- Prisma ORM como única base de datos; el esquema debe estar sincronizado con el dominio, pero ningún modelo de Prisma se debe filtrar a la lógica de negocio (siempre mapear entre entidad de dominio y modelo de Prisma).
- La autenticación debe usar JWT exclusivamente mediante cookie http‑only (`Set-Cookie` en login, y el guard la lee de `req.cookies`). No usar header `Authorization`.
- Las contraseñas se hashean con bcrypt.
- Cada archivo debe contener el código mínimo necesario para que la aplicación funcione, pero debe ser completo.
- No se deben incluir pruebas unitarias, pero la estructura debe facilitar el testing.
- El código debe seguir el principio de inversión de dependencias: las capas internas nunca importan de las externas.
- La salida debe ser un único bloque de texto estructurado, no múltiples mensajes separados.

FORMATO DE SALIDA
Primero, muestra un árbol de directorios completo (solo las rutas de archivos, con indentación). Luego, para cada archivo, proporciona su ruta y el contenido completo del código entre bloques de código con la sintaxis de TypeScript. Utiliza el siguiente formato:
```
📁 src/
├── 📁 domain/
│   ├── 📁 entities/
│   │   └── user.entity.ts
│   ├── 📁 repositories/
│   │   └── user-repository.interface.ts
│   └── ...
├── ...
```
Para cada archivo:
**`src/domain/entities/user.entity.ts`**
```typescript
// contenido
```

Continúa hasta que todos los archivos necesarios queden cubiertos. Asegúrate de incluir también los archivos de configuración en la raíz (`package.json`, `tsconfig.json`, `.env.example`, `prisma/schema.prisma`, etc.).

EJEMPLOS
- Ejemplo de la entidad `User` en el dominio: exporta una clase con propiedades privadas, un constructor que recibe los valores y validaciones, y getters públicos.
- Ejemplo del controlador `auth.controller.ts`: método `login` que llama a `AuthService`, obtiene el token y lo adjunta a la respuesta con `res.cookie('jwt', token, { httpOnly: true, secure: true, sameSite: 'strict' })`.
- Ejemplo del guard `jwt-auth.guard.ts`: extiende `AuthGuard('jwt')`, pero en `canActivate` primero extrae el token de `context.switchToHttp().getRequest().cookies?.jwt` y lo añade a `request.headers.authorization` para que Passport pueda leerlo, o personaliza la estrategia para que tome el token directamente de la cookie.
- Ejemplo del servicio de aplicación `user.service.ts`: `register` valida si el email ya existe, crea la instancia de `User`, la guarda con el repositorio y retorna el usuario creado (sin password).

Al final, incluye una breve explicación de cómo ejecutar el proyecto (asumiendo que se tiene Node.js y una base de datos PostgreSQL) y las principales decisiones arquitectónicas.
Respuestas

Todo lo que necesitas saber

¿Qué es uCreacción?

Una plataforma de creación asistida por IA. Entiende lo que quieres y ejecuta un agente autónomo que hace el trabajo y te entrega un resultado terminado.

¿Tengo que saber escribir prompts?

No. Describe tu idea con tus palabras. uCreacción hace la ingeniería detrás del telón.

¿Qué ocurre después de describir mi idea?

uCreacción entiende tu intención, pregunta solo lo que importa, diseña el prompt maestro y un agente la ejecuta en tu propia infraestructura.

¿Qué obtengo al final?

Un resultado real y utilizable: PDF, DOC, MD, HTML o Texto Plano — un archivo que puedes descargar, compartir y seguir desarrollando.

¿En qué se diferencia de usar ChatGPT u Ollama directamente?

Un chat te da una respuesta. uCreacción te lleva de la idea al resultado: instrucciones de ingeniería, un agente con herramientas, trabajo en segundo plano y entrega en archivo.

¿Puedo usar mi propio modelo o proveedor?

Sí. Elige el LLM por tarea: una GPU alquilada, un Ollama local o una API de terceros. Tú eliges la IA; tú controlas el flujo.

¿Dónde queda el prompt maestro?

Es la especificación de ingeniería detrás de tu resultado — visible y reutilizable para usuarios avanzados, oculta para el resto.

¿Quién controla mis datos?

Tú. El backend corre en tu infraestructura, accesible por una red privada cifrada (Tailscale). Nada se almacena en nuestro lado.

¿Puedo cancelar una tarea en marcha?

Sí. Cancelar detiene el LLM de verdad, ahorrando cómputo y dinero.

¿Puedo integrarlo con mis propios sistemas?

Sí — webhooks firmados con reintentos y una cola de entregas fallidas te permiten conectar el backend con tus propias herramientas.

Código Abierto. Despliegue en un comando. Cero rastreo.

Únete a la Beta Full Gratis en TestFlight para iPhone, iPad y macOS. uCreacción es código abierto; despliega el backend con compose.yaml o un script .sh (comprueba docker; verifica podman o aborta). Un agente autónomo trabaja con herramientas reales en tu infraestructura y entrega resultados en PDF, DOC, MD, HTML o TXT — con el LLM que elijas y sin exponer nada a internet.

Quiero la Beta Full Gratis Beta Full Gratis, disponible ahora