# =============================================================================
# GENERAL PURPOSE .gitignore
# For a careful full-stack developer working across Python, Node, Vue, React,
# FastAPI, Django, Flask, Express, Docker, and common infrastructure tools.
# Maintained with security and cleanliness as first principles.
# =============================================================================
# RULE: When in doubt, ignore it. You can always force-add with git add -f.
# =============================================================================


# =============================================================================
# SECRETS & CREDENTIALS — the most important section
# Never commit secrets. Ever. Not even "temporarily".
# =============================================================================

# Environment files — keep .env.example, ignore everything else
.env
.env.*
!.env.example
!.env.sample
!.env.template

# Generic secret files
*.pem
*.key
*.p8
*.p12
*.pfx
*.crt
*.cer
*.der
*.csr
secrets/
credentials/
private/
.secrets/

# Service account and API keys
service-account*.json
*-service-account.json
*credentials*.json
*keyfile*.json
gcp-*.json
firebase-*.json
google-credentials.json

# AWS
.aws/
aws-exports.js

# SSH keys
id_rsa
id_rsa.pub
id_ed25519
id_ed25519.pub
id_dsa
id_ecdsa
known_hosts

# Tokens and API keys stored as files
*.token
*.apikey
.netrc
.htpasswd
.htaccess

# Certificates and TLS
tls/
ssl/
certs/
!certs/README.md
!certs/.gitkeep


# =============================================================================
# PYTHON
# =============================================================================

# Bytecode
__pycache__/
*.py[cod]
*$py.class
*.pyc
*.pyo
*.pyd

# Virtual environments
.venv/
venv/
venv*/
env/
env*/
ENV/
.env/
.virtualenv/
virtualenv/
pythonenv*
pyvenv.cfg

# Distribution and packaging
dist/
build/
*.egg-info/
*.egg
MANIFEST
.eggs/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.whl
sdist/

# Testing and coverage
.pytest_cache/
.coverage
.coverage.*
coverage.xml
coverage/
htmlcov/
*.cover
*.py,cover
nosetests.xml
test-results/
junit*.xml
.tox/
.nox/

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/

# Profiling
*.prof
*.lprof
profile_output/
flamegraph.svg
.benchmarks/

# Jupyter / IPython
.ipynb_checkpoints/
*.ipynb
profile_default/
ipython_config.py

# pyenv
.python-version

# Package managers
Pipfile.lock
poetry.lock
pdm.lock
.pdm.toml
.pdm-python
__pypackages__/

# Celery
celerybeat-schedule
celerybeat.pid
celerybeat-schedule.db

# Rope / Spyder
.ropeproject
.spyderproject.db
.spyproject

# mkdocs / Sphinx docs
/site
docs/_build/
docs/_autosummary/

# FastAPI / Uvicorn / Gunicorn
uvicorn.log
gunicorn.log
gunicorn.pid

# Django
local_settings.py
db.sqlite3
db.sqlite3-journal
/static/
/staticfiles/
/mediafiles/
/media/

# Flask
instance/
.webassets-cache
flaskenv

# Translations
*.mo
*.pot

# Scrapy
.scrapy


# =============================================================================
# NODE / JAVASCRIPT / TYPESCRIPT
# =============================================================================

# Dependencies
node_modules/
.pnp
.pnp.js
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz

# Build output
dist/
dist-ssr/
build/
out/
.output/
.nuxt/
.next/
.svelte-kit/

# Cache
.cache/
.parcel-cache/
.eslintcache
.stylelintcache
.turbo/
.vite/
.vite-cache/
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
*.tsbuildinfo
.rollup.cache/
.swc/

# Testing
.nyc_output/
cypress/videos/
cypress/screenshots/
playwright-report/
.vitest-cache/

# Debug logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
.npm/
.node_repl_history

# Runtime
pids/
*.pid
*.seed
*.pid.lock
lib-cov/

# Storybook
storybook-static/

# Expo (React Native)
.expo/
.expo-shared/
*.jks
*.mobileprovision
*.orig.*
web-build/


# =============================================================================
# DATABASES
# =============================================================================

# SQLite
*.db
*.sqlite
*.sqlite3
*.db-shm
*.db-wal
!tests/fixtures/*.db
!tests/fixtures/*.sqlite3

# PocketBase
pb_data/
# NOTE: pb_hooks/ and pb_migrations/ are source code — NOT ignored
pocketbase
pocketbase.exe

# PostgreSQL
*.dump
*.sql.gz
pg_dump/
backups/

# Redis
dump.rdb
*.rdb
appendonly.aof

# MongoDB
*.bson


# =============================================================================
# DOCKER
# =============================================================================

# Local override files — often contain secrets or local paths
docker-compose.override.yml
docker-compose.local.yml
docker-compose.dev.yml
.docker/


# =============================================================================
# OBJECT STORAGE — LOCAL DEV (MinIO, RustFS, etc.)
# =============================================================================
data/
rustfs-data/
minio-data/
.minio.sys/
s3-local/
localstack-data/

# Uploaded user files — never commit
uploads/
user-uploads/
media/
attachments/


# =============================================================================
# TEMP AND GENERATED FILES
# =============================================================================
tmp/
temp/
.tmp/
.temp/
cache/
generated/
auto-generated/


# =============================================================================
# LOGS
# =============================================================================
logs/
log/
*.log
*.log.*
*.logs
access.log
error.log


# =============================================================================
# INDESIGN / EXTENDSCRIPT
# =============================================================================
*.jsxbin
idconvert_export.json
*_export.json
*.idlk


# =============================================================================
# OFFICE / DOCUMENT FILES — generated output
# =============================================================================
*.docx
*.doc
*.xlsx
*.xls
*.pptx
*.ppt
*.pdf
# Exceptions: committed reference or fixture files
!tests/fixtures/*.docx
!tests/fixtures/*.pdf
!docs/**/*.pdf


# =============================================================================
# INFRASTRUCTURE AS CODE
# =============================================================================

# Terraform
**/.terraform/*
*.tfstate
*.tfstate.*
*.tfvars
!*.tfvars.example
.terraform.lock.hcl
crash.log
crash.*.log
override.tf
override.tf.json

# Ansible
*.retry

# Vagrant
.vagrant/

# Serverless
.serverless/

# CDK
cdk.out/
cdk.context.json


# =============================================================================
# IDEs & EDITORS
# =============================================================================

# VS Code
.vscode/
!.vscode/extensions.json
!.vscode/settings.json.example
!.vscode/launch.json.example
*.code-workspace

# JetBrains (PyCharm, WebStorm, IntelliJ, GoLand, Rider)
.idea/
*.iml
*.iws
*.ipr
out/
.idea_modules/

# Vim / Neovim
*.swp
*.swo
*.swn
*~
.vim/
Session.vim
.netrwhist
tags
[._]*.s[a-v][a-z]
[._]*.sw[a-p]

# Emacs
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Sublime Text
*.sublime-project
*.sublime-workspace
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache

# Cursor
.cursor/

# Zed
.zed/

# Atom
.atom/

# TextMate
*.tmproj
*.tmproject
tmtags

# Eclipse
.classpath
.project
.settings/
.loadpath

# NetBeans
nbproject/private/
nbbuild/
nbdist/
.nb-gradle/


# =============================================================================
# OPERATING SYSTEM
# =============================================================================

# macOS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
.AppleDouble
.LSOverride
Icon
.DocumentRevisions-V100
.fseventsd
.TemporaryItems
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop
Network\ Trash\ Folder
Temporary\ Items
.apdisk
*.icloud

# Windows
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk
[Dd]esktop.ini

# Linux
.fuse_hidden*
.directory
.Trash-*
.nfs*


# =============================================================================
# CLOUD PROVIDER SPECIFIC
# =============================================================================

# Google Cloud
gcloud-service-key.json
application_default_credentials.json

# Azure
.azure/
azureauth.json

# Cloudflare
.wrangler/
wrangler.toml.bak


# =============================================================================
# MONITORING & OBSERVABILITY
# =============================================================================
*.prof
*.lprof
.benchmarks/
flamegraph.svg
*.heapdump
*.heapsnapshot
.clinic/
clinic-*/


# =============================================================================
# TESTING ARTIFACTS
# =============================================================================
tests/output/
tests/tmp/
test-results/
# Keep fixtures
!tests/fixtures/
!tests/fixtures/**


# =============================================================================
# PAYMENT
# =============================================================================
.stripe/
stripe-cli.log
stripe-debug.log


# =============================================================================
# DEPLOYMENT PLATFORMS
# =============================================================================
.vercel/
.netlify/
.nx/cache
.turbo/
common/temp/
.serverless/


# =============================================================================
# MISC FILE TYPES
# =============================================================================

# Backup files
*.bak
*.backup
*.orig
*.tmp
*.temp
*.old
*.save

# Archives — use Git LFS for large files instead
*.zip
*.tar
*.tar.gz
*.tgz
*.tar.bz2
*.rar
*.7z
*.gz
*.bz2
# Exceptions: small test fixtures
!tests/fixtures/*.zip
!tests/fixtures/*.idml

# Compiled binaries
*.bin
*.exe
*.dll
*.so
*.dylib
*.class
*.jar
*.war

# Large media — use Git LFS
*.mp4
*.mov
*.avi
*.mkv
*.mp3
*.wav
*.flac
*.psd
*.ai
*.sketch
*.fig
*.xd

# Raw data files
*.csv
*.tsv
*.parquet
*.feather
# Exceptions: seed and fixture data
!tests/fixtures/*.csv
!seeds/*.csv
!data/fixtures/*.csv

# Package specific
.sentryclirc
prisma/migrations/migration_lock.toml


# =============================================================================
# PROJECT-SPECIFIC OVERRIDES
# Add project-specific rules below this line.
# Comment each one to explain why it exists.
# =============================================================================