<span aria-hidden="true" id="my-first-app"></span> <span aria-hidden="true" id="meine-erste-app"></span>

# Meine erste App

<span aria-hidden="true" id="getting-started"></span>

<span aria-hidden="true" id="basic-flow"></span>

<span aria-hidden="true" id="code-sample"></span>

Transloadit ist vielseitig und unsere API lässt sich auf viele Arten nutzen. Für einen einfachen Demo-Ablauf verwenden wir standardmäßig eine Webbrowser-Integration mit dem Transloadit-Plug-in von [Uppy](/de/docs/sdks/uppy.md).

Wir erstellen eine einfache Webseite, die Bilder hochlädt und auf `1500x500` Pixel skaliert. Dieses erste Template enthält nur einen verarbeitenden Robot. So erhalten Sie ein Ergebnis, bevor Sie Speicher oder einen größeren Workflow konfigurieren.

<span aria-hidden="true" id="our-first-template"></span> <span aria-hidden="true" id="unser-erstes-template"></span>

## Unser erstes Template

Bitte [erstellen Sie ein neues Template](/c/templates/new/) in Ihrem Workspace, nennen Sie es `my-first-template`und speichern Sie darin die folgenden Assembly Instructions:

```json
{
  ":original": {
    "robot": "/upload/handle"
  },
  "crop_thumbed": {
    "use": ":original",
    "robot": "/image/resize",
    "result": true,
    "width": 1500,
    "height": 500,
    "resize_strategy": "fillcrop"
  }
}

```

<span aria-hidden="true" id="explaining-the-assembly-instructions"></span>

## Erläuterung der Assembly Instructions

Sehen wir uns nun das JSON genauer an. Es enthält zweiSteps:

1. `:original` ruft [🤖/upload/handle](/de/docs/robots/upload-handle.md) auf. Dieser Robot empfängt jede von Uppy übergebene Datei und stellt sie anschließend anderenRobots zur Verfügung. Unter anderem können Sie in diesemRobot eine Dateigrößenbeschränkung festlegen.
2. `crop_thumbed` übernimmt diese Dateien über `"use": ":original"`. Anschließend ruft der Step[🤖/image/resize](/de/docs/robots/image-resize.md) mit Parametern wie`resize_strategy` auf. Dies ist der einzige verarbeitende Robot im Template.

###### Hinweis

Ergebnisdateien werden vorübergehend bei uns gehostet und nach 24 h entfernt. So konzentriert sich dieses erste Beispiel auf eine einzige Konvertierung. Im nächsten Leitfaden fügen Sie dauerhaften Speicher hinzu.

Ersetzen Sie in unserer Uppy-Integration `YOUR_TEMPLATE_ID` durch die ID Ihres Templates. Fügen Sie Folgendes zu einer Datei namens `test.html` hinzu und öffnen Sie diese anschließend in Ihrem Browser:

```html
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
  href="https://releases.transloadit.com/uppy/v4.3.1/uppy.min.css"
  rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
  import {
    Uppy,
    Dashboard,
    ImageEditor,
    RemoteSources,
    Transloadit,
  } from 'https://releases.transloadit.com/uppy/v4.3.1/uppy.min.mjs'
  const uppy = new Uppy()
    .use(Transloadit, {
      waitForEncoding: true,
      alwaysRunAssembly: true,
      assemblyOptions: {
        params: {
          template_id: 'YOUR_TEMPLATE_ID',
          // To avoid tampering, use Signature Authentication:
          // https://transloadit.com/docs/api/authentication/
          auth: {
            key: 'YOUR_TRANSLOADIT_KEY',
          },
        },
      },
    })
    .use(Dashboard, { trigger: '#browse' })
    .use(ImageEditor, { target: Dashboard })
    .use(RemoteSources, {
      companionUrl: 'https://api2.transloadit.com/companion',
    })
    .on('complete', ({ transloadit }) => {
      // Due to waitForEncoding:true this is fired after encoding is done.
      // Alternatively, set waitForEncoding to false and provide a notify_url
      console.log(transloadit) // Array of Assembly Statuses
      transloadit.forEach((assembly) => {
        console.log(assembly.results) // Array of all encoding results
      })
    })
    .on('error', (error) => {
      console.error(error)
    })
</script>

```

Neben `YOUR_TEMPLATE_ID` müssen Sie auch `YOUR_TRANSLOADIT_KEY` ersetzen. Den entsprechenden Wert erhalten Sie, indem Sie[in Ihrem Konto einen Auth Key erstellen](/c/template-credentials/).

Das war’s! ✨ Wenn Sie die Schritte durch Kopieren, Einfügen und Ersetzen nachvollzogen haben, verfügen Sie jetzt über einen funktionsfähigen Prototyp. Die Ergebnisse werden im Konsolenprotokoll Ihres Browsers ausgegeben. Sie können aber auch in Echtzeit sehen, wie Ihrem Konto[Assemblies](/c/assemblies/) hinzugefügt werden. Falls Sie die Schritte nicht selbst nachvollzogen haben, können Sie die Funktion trotzdem direkt in dieser[Demo zur Bildskalierung EN (English)](/demos/image-processing/resize-to-twitter-cover-dimensions.md) testen.

Die temporären Ergebnis-URLs werden im Konsolenprotokoll referenziert. Um diese Dateien dauerhaft zu speichern und die Ergebnisse an Ihr Backend zu senden, fahren Sie mit der Seite[Ergebnisdateien speichern](/de/docs/getting-started/saving-conversion-results.md) fort.
