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 namePOSTGRES_USER- PostgreSQL usernamePOSTGRES_PASSWORD- PostgreSQL passwordPOSTGRES_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 generationALGORITHM- 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 notificationsMAIL_PASSWORD- SMTP passwordMAIL_FROM- Sender email addressMAIL_PORT- SMTP port (default: 587)MAIL_SERVER- SMTP server hostnameMAIL_FROM_NAME- Sender name in emailsMAIL_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