node_modules/
dist/
build/
.next/
out/
target/
target-shell-scratch/
src-tauri/target/
.turbo/
.env
.env.*
!.env.example
*.log
.DS_Store
Thumbs.db
.vs/
.vscode/

# Vercel
.vercel

# TypeScript incremental build cache — machine-local, changes on every typecheck.
*.tsbuildinfo

# Tauri generates these from tauri.conf.json + capabilities on every build.
apps/desktop/src-tauri/gen/schemas/

# Next static export for the desktop/mobile shells (generated by build:shell).
apps/web/out/
.next-shell/

# Capacitor-generated native projects. Regenerate with `pnpm --filter @sendflo/mobile android:setup`
# (which re-applies scripts/patch-android.mjs). Committing them means merge conflicts in
# generated Gradle files and a second copy of the plugin sources.
apps/mobile/android/
apps/mobile/ios/
apps/mobile/www/

# Tauri updater signing: the PRIVATE key never enters git (CI holds it as a secret).
apps/desktop/.tauri-signing/sendflo.key

# Northflank automation (local only — never commit)
.env.northflank
infrastructure/northflank/secrets.local.json
infrastructure/northflank/secrets.jackson.local.json
go/*.exe

# Python bytecode (packages/sdk-python tests)
__pycache__/
*.pyc
