Codebase

How code, dependencies, and configuration are managed.

One Codebase, Many Deploys

┌─────────────────────────────────────────────────┐
│                   CODEBASE                      │
│                  (Git repo)                     │
└────────┬─────────────┬─────────────┬───────────┘
         │             │             │
         ▼             ▼             ▼
    ┌─────────┐   ┌─────────┐   ┌─────────┐
    │   Dev   │   │ Staging │   │  Prod   │
    │ Deploy  │   │ Deploy  │   │ Deploy  │
    └─────────┘   └─────────┘   └─────────┘

Dependencies

Explicitly declare and isolate all dependencies.

# Declaration + Isolation
pip install -r requirements.txt   # declare
source venv/bin/activate          # isolate

npm ci                            # both in one

Litmus test: A new developer should only need the language runtime and dependency manager to get started.

Configuration

Config varies between deploys; code doesn't. Keep them separate.

# Good: environment variables
DATABASE_URL=postgres://user:pass@host/db
API_KEY=sk-abc123

# Bad: hardcoded
API_KEY = "sk-abc123"  # NO

Litmus test: Could you open-source your code right now without exposing credentials?