This documentation aims to provide a high level overview of the architecture of RapidPro. The goal is to give contributors enough to understand the layout of code in the repository, understand the various components in a RapidPro installation and glean some insight into the approach used.
The deployment section of this documentation provides a high level overview of how RapidPro is generally hosted, as well as instructions on how to run your own local instance of RapidPro for development.
The packages section provides a high level overview of the primary packages used within RapidPro. We do not aim to document every detail of functionality in the codebase here, but these pages can act as a sort of roadmap and overview of the main models used within RapidPro.
With an understanding of these models you will have a high level understanding of the architecture of the system.
Note that RapidPro is primarily built as a SaaS platform, as such, its primary goals are to provide value to customers. As the harsh reality of customer requirements meet real life constraints, various parts of the system have grown organically and continue to do so. In short, some pieces of RapidPro are ugly, but what it may lack in beauty in makes up in real world testing and in functionality. As we continue to build and enhance RapidPro we continue to refactor various pieces in order to address the needs of both our customers and coders.