## Module Layout

![Overview of Ultralight Modules](/media/docs/library-design.png)

## Module Details

## AppCore

*(Optional)* Cross-platform app runtime ([source available here](https://github.com/ultralight-ux/ultralight/tree/master/deps/AppCore)), responsible for creating platform windows, handling platform input events, running application event loops, and all platform-specific GPU code.

## Ultralight

Responsible for managing Views, high-level rendering, input translation, resource policies, and event dispatch.

## WebCore

The core HTML/CSS layout engine ([source available here](https://github.com/ultralight-ux/ultralight-webcore)), responsible for parsing resources, applying styles, calculating layout, and transforming the result into a tree of paint nodes (during rendering, we walk the tree and turn this into a GPU command list to be drawn by GPUDriver or our parallel CPU rasterizer)

## JavaScriptCore

The core JavaScript virtual machine, responsible for everything JS-related. We expose the full API for you to integrate deeply into your app.

## UltralightCore

Proprietary 2D CPU and GPU drawing library, responsible for all low-level graphics routines (paths, fonts, GPU command lists, CPU rasterization, tesselation, image cache, etc.).