Note: if you want to just cut to the chase and start working with darcy, feel free to skip this section and move onto Getting Started.
At its core, darcy is just APIs. It provides a declarative and friendly API for consumers to write page objects, as well as a straightforward and flexible API for implementations. It does not actually do any automating, that is up to some implementation of this API. If a library can find elements and interact with them, it can be an implementation.
The most basic, fundamental API to describe user interfaces and their elements is the duty of the UI module.
Those element types are relevant across a number of domains. Where more domain-specific interaction is needed, other modules are used. The web module is one such module. It extends the UI API, providing interfaces for browsers, and locators based on HTML and CSS.
To aid in synchronizing the automation thread with conditions and events occurring in the UI, the synq library is used.
At the moment, the only implementation is darcy-webdriver, a wrapper around the Selenium WebDriver project.