Add app scaffold and workflows
All checks were successful
Continuous Integration / Validate and test changes (push) Successful in 3s
All checks were successful
Continuous Integration / Validate and test changes (push) Successful in 3s
This commit is contained in:
49
app/backend/core/config.py
Normal file
49
app/backend/core/config.py
Normal file
@@ -0,0 +1,49 @@
|
||||
"""Environment configuration derived from environment variables."""
|
||||
|
||||
from functools import lru_cache
|
||||
from pydantic import SecretStr # Import SecretStr for sensitive data
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""
|
||||
Application settings class using Pydantic BaseSettings.
|
||||
Settings are loaded from environment variables and have default values defined here.
|
||||
"""
|
||||
|
||||
service_name: str = "avaaz-backend" # A unique functional identifier for the microservice
|
||||
environment: str = "development" # Defines the current deployment stage (e.g., 'development', 'staging', 'production')
|
||||
|
||||
title: str = "Avaaz Language Tutoring API"
|
||||
description: str = """
|
||||
# Avaaz Language Tutoring API
|
||||
|
||||
This API powers the **avaaz.ai** mobile and web applications, providing the robust backend services for our AI-driven oral language skills tutor. The platform is specifically engineered to help students achieve oral proficiency using adaptive, conversational AI agents.
|
||||
|
||||
## Key Services Provided:
|
||||
* **Conversational AI Engine:** Facilitates ultra-low-latency speech-to-speech interaction and provides instant corrective feedback (grammar, pronunciation, fluency).
|
||||
* **Curriculum Management:** Delivers structured, CEFR aligned lessons and scenarios focused on real-life immigrant contexts (healthcare, workplace, school).
|
||||
* **Assessment & Gamification:** Manages progress tracking, mock oral exam simulations, performance summaries, and motivational mechanics (streaks, badges).
|
||||
* **Cross-Platform Sync:** Ensures seamless learning continuity and progress synchronization across all user devices.
|
||||
"""
|
||||
|
||||
version: str = "0.1.0" # The current semantic version of the API application
|
||||
|
||||
# Use SecretStr to prevent accidental logging of credentials.
|
||||
# Access the actual value using settings.database_url.get_secret_value()
|
||||
database_url: SecretStr = SecretStr("postgresql+psycopg://postgres:postgres@postgres:5432/avaaz")
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
env_prefix="", # Load variables without a specific prefix (e.g., `DATABASE_URL` instead of `APP_DATABASE_URL`)
|
||||
case_sensitive=False # Environment variable names are treated as case-insensitive during loading
|
||||
)
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def get_settings() -> Settings:
|
||||
"""
|
||||
Return a cached singleton instance of the application settings.
|
||||
|
||||
This function leverages functools.lru_cache to ensure that environment variables
|
||||
are read only once during the application's lifecycle, improving performance
|
||||
and ensuring consistency across requests.
|
||||
"""
|
||||
return Settings()
|
||||
Reference in New Issue
Block a user