SFDX Project Template
Use Case
Initialize a maintainable Salesforce DX repository with predictable folder layout, scratch org config, and baseline automation.
Recommended Folder Structure
my-project/
force-app/
main/default/
config/
project-scratch-def.json
project-scratch-def-ci.json
scripts/
org-init.sh
org-push.sh
.github/workflows/
ci.yml
sfdx-project.json
Template: sfdx-project.json
{
"packageDirectories": [
{
"path": "force-app",
"default": true
}
],
"name": "my-project",
"namespace": "",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "60.0"
}
Template: config/project-scratch-def.json
{
"orgName": "My Company",
"edition": "Enterprise",
"features": ["EnableSetPasswordInApi"],
"settings": {
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true
}
}
}
Common CLI Workflow
# Create project
sf project generate --name my-project
cd my-project
# Create and set default scratch org
sf org create scratch --definition-file config/project-scratch-def.json --set-default --alias dev
# Push metadata and assign permissions
sf project deploy start
sf org assign permset --name App_User
# Open org
sf org open
Guardrails
- Keep API version pinned and update intentionally each release cycle.
- Use separate scratch definitions for local dev and CI.
- Keep setup automation scripts idempotent.
- Add validation commands to CI (
sf project deploy validate, tests, linters).