How do developers organize large Apex/Visualforce projects?

There are many IDEs that work well for Salesforce development in general, whether you are developing an Apex Class to use as a controller, a Visualforce Page, or any number of other development tasks. Some of the most popular:

  • Eclipse
  • SublimeText with MavensMate
  • Atom with MavensMate
  • Visual Studio Code with MavensMate
  • IntelliJ Idea (community or Ultimate) w/Illuminated Cloud
  • Web Based IDE (https://c9.io, https://aside.io)
  • JetForcer based in IntelliJ Idea
  • The Welkin Suite

Once you select an IDE, the most common files are organized as follows:

  • src
    • classes
    • components
    • pages
    • static resources
    • triggers

These folders correspond to the Metadata API types.


It was only just announced at Dreamforce 2016 and is still a work in progress. However, keep an eye on the Salesforce DX tooling. It will bring a source control driven approach to developing for Salesforce.


The Metadata API used in most IDE's for Salesforce and in the Ant tooling has a fixed directory structure that is the natural one to adopt. It divides artefacts up by component type so for example tests and non-test classes are in the same directory; a naming convention such as adding a "Test" suffix to test classes is conventional there.

So I suggest you pick a development tool and use that to pull and push your code and components; it will (almost certainly) use the fixed directory structure. Do also hook up to a version control system too.

For very large projects you can consider dividing the work up into separate managed packages but that introduces a lot of pain so should only be done after careful consideration.


Using Salesforce DX and DX packaging (also called Packaging 2.0), you will be able to organize your repository into packages that can be independently installed and upgraded. This means that your source and your orgs will be organized into logical units. This will be the way forward for most developers. You might want to take a look at the Salesforce DX trail for more information.