1. A method comprising: loading a dynamically assembled project into an integrated development environment (IDE); determining project capabilities associated with the loaded dynamically assembled project; loading components associated with the determined project capabilities; in response to a change in the project capabilities, reassembling the dynamically assembled project; and displaying functionality based on the determined project capabilities to a user via one or more user interfaces of the IDE.