Skip to main content

Environment Configuration

Guide for setting up different environments (Development, Staging, Production).

Environment Types

Development

Local development environment for developers.

Staging

Pre-production environment for testing.

Production

Live environment serving real users.

Development Environment

Local Setup

# Clone repository
git clone https://github.com/your-org/sbm-crm-platform.git
cd sbm-crm-platform

# Install dependencies
npm install

# Copy development config
cp .env.example .env.development

# Start services with Docker Compose
docker-compose -f docker-compose.dev.yml up

Development Configuration

{
"server": {
"port": 3000,
"env": "development"
},
"database": {
"host": "localhost",
"name": "sbmcrm_development"
},
"logging": {
"level": "debug"
},
"features": {
"enableDebugMode": true,
"skipAuth": false
}
}

Development Features

  • Hot reload
  • Detailed error messages
  • Debug logging
  • Test data seeding
  • Mock external services

Staging Environment

Staging Setup

# Deploy to staging
npm run deploy:staging

# Run migrations
npm run migrate:staging

# Seed test data
npm run seed:staging

Staging Configuration

{
"server": {
"port": 3000,
"env": "staging"
},
"database": {
"host": "staging-db.example.com",
"name": "sbmcrm_staging"
},
"wechat": {
"appId": "staging_app_id",
"useSandbox": true
},
"logging": {
"level": "info"
}
}

Staging Features

  • Production-like configuration
  • Test WeChat sandbox
  • Staging database
  • Limited external integrations
  • Performance testing enabled

Production Environment

Production Setup

# Deploy to production
npm run deploy:production

# Run migrations with backup
npm run migrate:production -- --backup

# Verify deployment
npm run health:check

Production Configuration

{
"server": {
"port": 3000,
"env": "production"
},
"database": {
"host": "production-db.example.com",
"name": "sbmcrm_production",
"ssl": true,
"pool": {
"min": 5,
"max": 20
}
},
"security": {
"rateLimit": true,
"cors": {
"origin": ["https://yourdomain.com"]
}
},
"logging": {
"level": "warn",
"file": "/var/log/sbmcrm/app.log"
},
"monitoring": {
"enabled": true,
"sentry": {
"dsn": "production_sentry_dsn"
}
}
}

Production Features

  • Full security enabled
  • SSL/TLS required
  • Rate limiting
  • Monitoring and alerting
  • Backup automation
  • High availability

Environment Variables

Development

NODE_ENV=development
DB_NAME=sbmcrm_development
LOG_LEVEL=debug
ENABLE_DEBUG=true

Staging

NODE_ENV=staging
DB_NAME=sbmcrm_staging
LOG_LEVEL=info
WECHAT_SANDBOX=true

Production

NODE_ENV=production
DB_NAME=sbmcrm_production
LOG_LEVEL=warn
ENABLE_MONITORING=true

Deployment Process

Development

# Local development
npm run dev

# No formal deployment process
# Changes are local

Staging

# Deploy to staging
git push origin staging

# CI/CD pipeline:
# 1. Run tests
# 2. Build application
# 3. Deploy to staging
# 4. Run smoke tests

Production

# Deploy to production
git push origin main

# CI/CD pipeline:
# 1. Run full test suite
# 2. Build application
# 3. Create database backup
# 4. Deploy to production
# 5. Run health checks
# 6. Monitor for issues

Database Management

Development

  • Local PostgreSQL
  • Frequent resets
  • Test data
  • No backups required

Staging

  • Shared staging database
  • Periodic resets
  • Test data
  • Daily backups

Production

  • Production database cluster
  • No resets
  • Real data
  • Continuous backups
  • Point-in-time recovery

Access Control

Development

  • Open access for developers
  • No restrictions
  • Debug tools enabled

Staging

  • Limited access
  • Test accounts only
  • Monitoring enabled

Production

  • Restricted access
  • Role-based permissions
  • Audit logging
  • Security monitoring

Monitoring

Development

  • Basic logging
  • No alerting
  • Local debugging

Staging

  • Full logging
  • Test alerts
  • Performance monitoring

Production

  • Comprehensive monitoring
  • Real-time alerting
  • APM tools
  • Error tracking

Best Practices

  1. Separate Environments - Never mix dev/staging/prod
  2. Configuration Management - Use environment variables
  3. Secrets Management - Never commit secrets
  4. Deployment Process - Consistent deployment steps
  5. Testing - Test in staging before production
  6. Documentation - Document environment differences
  7. Access Control - Limit production access