# Welcome to Enaml

Enaml is a programming language and framework for creating professional quality user interfaces with minimal effort. Enaml combines a domain specific declarative language with a constraints based layout system to allow users to easily define rich UIs with complex and flexible layouts. Enaml applications can be run on any platform which supports Python and Qt.

A few highlights of the framework:

- A declarative language which extends the grammar of Python

- A set of operators which automatically track runtime dependencies

- A layout system which uses symbolic constraint declarations

- A design which encourages model-view separation

- A well documented and easy to follow code base

## Getting Started

The first stop for all those new to Enaml. This section includes an introduction to Enaml, installation instructions, and all the information needed to write your first Enaml application.

## Developer Guides

The stuff that wasn’t covered in Getting Started. This section provides in-depth documentation on a wide range of topics you are likely to encounter when developing production applications with Enaml. Look here for details on Enaml’s scoping rules, aliases, templates, best practices, and more.

## Architecture Reference

Hackers welcome! This section offers a collection of topics covering the low level details of Enaml’s architecture and implementation. Look here if you want to understand how Enaml works internally, or if you are interested in extending Enaml for your own custom needs.

## Examples

“Just show me the code!” This section provides an easy-to-browse alternative to running Enaml’s examples from the command line. We’ve even included screenshots!

## Frequently Asked Questions

If you think you may not be the only one to have thought a thought, you are probably right. Look here to see if your question has already been asked, then take solace in the realization that you are not alone.

## API Reference

“Use the source, Luke.” When all else fails, consult the API docs to find the answer you need. The API docs also include convenient links to the most definitive Enaml documentation: the source.

## Command Reference

Enaml includes a few console scripts to assist in development.

## Developer notes

Notes regarding the development of Enaml such as coding conventions and C extensions writing.