# Architecture

Impler is built upon scalable architecture to validate and process records of any size.

Separation of concern helps organizing code across various packages, libraries and apps. The idea is that app is divided into various parts, and each one is responsible for a spacific task.

Let's dive deep into building blocks of Impler.

## The mental model

<figure><img src="/files/C1NPJqDC32i4qQc40Woo" alt=""><figcaption><p>Impler Architectural Diagram</p></figcaption></figure>

### Widget

Widget is the main app where import happens. Widget provides UI to upload, map, validate and reivew data files. Widget gets embedded into iframe using `embed` script. It communicates with API to accomplish file processing work.

### Queue Manager

Queue manager handles processing data. Once user completes file import, the command gets passed to `Queue Manager` app to start processing data and sending it to application in chunks.

`Chunk` contains chunked data along with import information. More information on [Using Webhook](/data-retrieval/using-webhook.md)

### Authentication

API keys are used to authenticate APIs happening from import widget. Additionally developers can integrate Impler into their application by manually calling Impler API.

### SDKs

SDKs removes the need of managing import widget manually. In case of missing SDK developer can take reference of [HTML & JS Embed](/importer/html-js-embed.md)to embed widget into application.

***

If you have any questions, suggestions, or comments. Feel free to reach out to us over [**Discord**](https://discord.impler.io). We’re constantly improving to deliver the best Data Importer for your product, and we value your input.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.impler.io/additional-resources/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
