# Convex

[transloadit/convex](https://github.com/transloadit/convex)

`@transloadit/convex` es un componente de Convex que hace que Transloadit se sienta nativo. Firma las opciones de subida en el servidor, verifica webhooks y almacena los resultados en Convex para que tu interfaz pueda actualizarse en tiempo real.

## Instala

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```bash
npm i @transloadit/convex @uppy/core @uppy/transloadit

```

## Configuración

1. Registra el componente:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```ts
// convex/convex.config.ts
import { defineApp } from 'convex/server'
import transloadit from '@transloadit/convex/convex.config'

const app = defineApp()
app.use(transloadit)

export default app

```

1. Configura las variables de entorno:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```bash
npx convex env set TRANSLOADIT_KEY <your_auth_key>
npx convex env set TRANSLOADIT_SECRET <your_auth_secret>

```

1. Crea acciones con `makeTransloaditAPI`:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```ts
// convex/transloadit.ts
import { makeTransloaditAPI } from '@transloadit/convex'
import { components } from './_generated/api'

export const { createAssemblyOptions, queueWebhook, listResults } = makeTransloaditAPI(
  components.transloadit,
)

```

## Cliente de Uppy

Usa Uppy con `assemblyOptions()` de Convex para que los secretos nunca lleguen al navegador:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```ts
import Uppy from '@uppy/core'
import Transloadit from '@uppy/transloadit'
import { api } from './_generated/api'

const uppy = new Uppy().use(Transloadit, {
  waitForEncoding: true,
  assemblyOptions: async () => {
    const { assemblyOptions } = await runAction(api.transloadit.createAssemblyOptions, {
      steps: {
        resized: {
          use: ':original',
          robot: '/image/resize',
          width: 800,
        },
      },
    })

    return assemblyOptions
  },
})

```

## Aplicación de demostración

Consulta la demostración integral de una galería de bodas en[convex-demo.transload.it](https://convex-demo.transload.it/) y el código fuente completo en el[repositorio de GitHub](https://github.com/transloadit/convex).
