| name | flexport-multi-env-setup |
| description | Configure Flexport API across dev, staging, and production environments
with isolated API keys, separate webhook endpoints, and environment guards.
Trigger: "flexport environments", "flexport staging", "flexport multi-env".
|
| allowed-tools | Read, Write, Edit, Grep |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","logistics","flexport"] |
| compatibility | Designed for Claude Code |
Flexport Multi-Environment Setup
Overview
Configure isolated Flexport environments for development, staging, and production with separate API keys, webhook endpoints, and safety guards to prevent production data access from dev.
Instructions
Environment Configuration
interface FlexportConfig {
apiKey: string;
baseUrl: string;
webhookSecret: string;
cacheTtlMs: number;
logLevel: 'debug' | 'info' | 'warn';
}
const configs: Record<string, FlexportConfig> = {
development: {
apiKey: process.env.FLEXPORT_API_KEY_DEV!,
baseUrl: 'https://api.flexport.com',
webhookSecret: process.env.FLEXPORT_WEBHOOK_SECRET_DEV!,
cacheTtlMs: 30_000,
logLevel: 'debug',
},
staging: {
apiKey: process.env.FLEXPORT_API_KEY_STAGING!,
baseUrl: 'https://api.flexport.com',
webhookSecret: process.env.FLEXPORT_WEBHOOK_SECRET_STAGING!,
cacheTtlMs: 60_000,
logLevel: 'info',
},
production: {
apiKey: process.env.!,
: ,
: process..!,
: ,
: ,
},
};
(): {
env = process.. || ;
config = configs[env];
(!config) ();
(!config.) ();
config;
}
Environment Variable Template
FLEXPORT_API_KEY_DEV=fp_dev_...
FLEXPORT_WEBHOOK_SECRET_DEV=whsec_dev_...
FLEXPORT_API_KEY_STAGING=fp_stg_...
FLEXPORT_WEBHOOK_SECRET_STAGING=whsec_stg_...
FLEXPORT_API_KEY=fp_prod_...
FLEXPORT_WEBHOOK_SECRET=whsec_prod_...
Production Safety Guard
function assertNotProduction(operation: string) {
if (process.env.NODE_ENV === 'production') return;
const config = getFlexportConfig();
if (config.apiKey.startsWith('fp_prod_')) {
throw new Error(`SAFETY: ${operation} blocked — production key detected in ${process.env.NODE_ENV}`);
}
}
async function deleteProduct(id: string) {
assertNotProduction('deleteProduct');
await flexport(`/products/${id}`, { method: 'DELETE' });
}
Environment Matrix
| Aspect | Dev | Staging | Production |
|---|
| API key scope | Read-only | Read-write | Full |
| Webhook endpoint | localhost:3000 | staging.app.com | app.com |
| Cache TTL | 30s | 60s | 5min |
| Rate limit budget | 10/min | 50/min | 100/min |
| Logging | Debug (all) | Info | Warn + errors |
Resources
Next Steps
For observability setup, see flexport-observability.