Configuration

The UContact REST API Service uses environment variables for configuration. These settings can be configured through a .env file or system environment variables.

Environment Variables

Database Configuration

  • POSTGRES_DB - PostgreSQL database name

  • POSTGRES_USER - PostgreSQL username

  • POSTGRES_PASSWORD - PostgreSQL password

  • POSTGRES_PORT - PostgreSQL port (default: 5432)

  • POSTGRES_HOST - PostgreSQL host (default: localhost)

Redis Configuration

  • REDIS_HOST - Redis server host (default: localhost)

  • REDIS_PORT - Redis server port (default: 6379)

  • REDIS_PASSWORD - Redis password (if required)

JWT Authentication

  • SECRET_KEY - Secret key for JWT token generation

  • ALGORITHM - JWT encryption algorithm (default: HS256)

  • ACCESS_TOKEN_EXPIRE_MINUTES - JWT token expiration time in minutes (default: 15)

  • REFRESH_TOKEN_EXPIRE_MINUTES - JWT refresh token expiration time in minutes (default: 7 days)

Email Configuration

  • MAIL_USERNAME - SMTP username for email notifications

  • MAIL_PASSWORD - SMTP password

  • MAIL_FROM - Sender email address

  • MAIL_PORT - SMTP port (default: 587)

  • MAIL_SERVER - SMTP server hostname

  • MAIL_FROM_NAME - Sender name in emails

  • MAIL_TLS - Use TLS for email (true/false)

  • MAIL_SSL - Use SSL for email (true/false)

Example .env File

Here’s an example .env file with default values:

# PostgreSQL Configuration
POSTGRES_DB=contacts_db
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password
POSTGRES_PORT=5432
POSTGRES_HOST=localhost

# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# JWT Configuration
SECRET_KEY=your_secret_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

# Email Configuration
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_FROM=your_email@gmail.com
MAIL_PORT=587
MAIL_SERVER=smtp.gmail.com
MAIL_FROM_NAME=UContact Service
MAIL_TLS=True
MAIL_SSL=False

Configuration Module

The configuration settings are managed in src/conf/config.py. This module:

  • Loads environment variables

  • Provides configuration classes for different components

  • Validates configuration values

  • Sets default values when needed

Example configuration usage:

from src.conf.config import settings

# Access database settings
db_url = settings.DB_URL

# Access JWT settings
secret_key = settings.SECRET_KEY