The word "Application" is used in two senses on the Salesforce platform, which can be rather confusing.
In a more general sense, "application" defines a cohesive suite of functionality that achieves some purpose. You might have an ERP application or an HR application or an online-giving application, all of which run on the Salesforce platform. These applications are built out of metadata, which can be clicks or code or both, and optionally may be distributed in the form of one or more packages through the Salesforce AppExchange.
"Custom Application", though, is also the name of a specific metadata component used on Salesforce. A Custom Application is one component of a little-a application, and defines the set of tabs that are available when that application is selected from the app selector (Classic) or the colorful waffle menu (Lightning).
A Salesforce DX project can represent an application (in the general sense), and may or may not contain one or more Custom Applications (in the metadata sense). You can use Salesforce DX to develop applications that use clicks, code, or any combination of the two.
Apex code and declarative metadata are all represented in source code stored in version control when you use Salesforce DX with the Package Development Model. You may choose to build your application with clicks in a Salesforce DX scratch org and then retrieve the metadata with
sfdx force:source:pull or the equivalent GUI command to retrieve your work into your local SFDX project.