#Composer dependencies live there and can be regenerated with composer install.
/vendor/
#writable/ contains runtime data (cache, sessions, logs, uploads) that changes constantly and is environment-specific.
/writable/
#Git doesn’t store empty folders. .gitkeep is a placeholder so writable/ exists in the repo when someone clones it.
!/writable/.gitkeep
#contains secrets (DB password, API keys) and machine-specific config.
.env
#Ignore any file that starts with .env. followed by anything.
.env.*
#do not ignore .env.example
!.env.example
#logs are generated output, not source code.
*.log
#Cached/generated files.
.cache/
#PHPUnit generates it locally to speed up tests.
phpunit-result-cache
#macOS Finder metadata; irrelevant to the project.
.DS_Store
#Windows thumbnail cache; irrelevant.
Thumbs.db
#VS Code workspace settings are usually personal to your machine.
.vscode/
#JetBrains IDE project files; usually personal/machine-specific.
.idea/
#Node dependencies; huge; regenerated with npm install / pnpm install.
node_modules/
#Typically build output from bundlers (Vite/Webpack/etc.).
dist/
#Also typically build output.
build/


#/ at the end (like vendor/) means “this is a folder.”

#/ at the start (like /vendor/) means “only match at the project root.”

#* means “anything” (wildcard).

#! means “exception: do NOT ignore this match.”