This is the architecture document of Freecell Solver. Its purpose is to serve as an introduction to the code, so future contributors can understand it and work on it.
This document does not aim to cover every detail of the application. Such details are supposed to be documented within the comments of the code. (let me know if there is something there you don't understand, and I'll add a comment) Instead, it should provide an overview of the code and cover the main caveats one would encounter when trying to understand it.
This document covers the Freecell Solver 2.8.x architecture, and will be updated to future versions.