Skip to main content

Communication Service Configuration

Environment Variables

Database

DATABASE_URL=postgresql://user:password@localhost:5432/communication_dev

Redis (Oban)

REDIS_URL=redis://localhost:6379

Email Configuration

# SMTP Settings
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=your-email@example.com
SMTP_PASSWORD=your-password
SMTP_TLS=true
SMTP_AUTH=true

# Email From Address
EMAIL_FROM_ADDRESS=noreply@example.com
EMAIL_FROM_NAME=1nga Platform

SMS Providers

Twilio

TWILIO_ACCOUNT_SID=your-account-sid
TWILIO_AUTH_TOKEN=your-auth-token
TWILIO_PHONE_NUMBER=+1234567890

BulkSMS.com

BULKSMS_USERNAME=your-username
BULKSMS_PASSWORD=your-password

AWS SNS

AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_REGION=us-east-1
AWS_SNS_TOPIC_ARN=arn:aws:sns:region:account:topic

Push Notifications

FCM (Firebase Cloud Messaging)

FCM_SERVER_KEY=your-fcm-server-key

APNS (Apple Push Notification Service)

APNS_KEY_PATH=/path/to/apns-key.p8
APNS_KEY_ID=your-apns-key-id
APNS_TEAM_ID=your-apns-team-id
APNS_BUNDLE_ID=com.example.app
APNS_ENVIRONMENT=production # or sandbox

Service Configuration

# Service Port
PORT=8010

# Host
HOST=0.0.0.0

# Logging
LOG_LEVEL=info

# Rate Limiting
RATE_LIMIT_EMAIL=100 # per minute
RATE_LIMIT_SMS=50 # per minute
RATE_LIMIT_PUSH=200 # per minute

Configuration Files

config/config.exs

Main configuration file for the Elixir application.

config/dev.exs

Development-specific configuration.

config/prod.exs

Production configuration.

config/test.exs

Test environment configuration.

Provider Priority

SMS providers are tried in order until one succeeds:

  1. Twilio (primary)
  2. BulkSMS.com (fallback)
  3. AWS SNS (fallback)

Template Configuration

Email templates are stored in PostgreSQL and can be managed via the API or database directly.

Rate Limiting

Rate limits are enforced per API key/user and can be configured per channel.