File size: 5,347 Bytes
79ef7e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2099f4
 
 
79ef7e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2099f4
 
79ef7e1
 
e2099f4
 
79ef7e1
 
 
e2099f4
 
 
79ef7e1
 
 
e2099f4
 
79ef7e1
 
e2099f4
 
 
79ef7e1
 
 
 
 
 
e2099f4
79ef7e1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# ============================================================
# app/config.py – Configuration Management (Pydantic v2)
# ============================================================

from pydantic_settings import BaseSettings
from typing import List
import os
from dotenv import load_dotenv

load_dotenv()

class Settings(BaseSettings):
    """Application settings from environment variables"""

    # ------------------------------------------------------------------
    # Core App
    # ------------------------------------------------------------------
    APP_NAME: str = "Lojiz Platform + Aida AI"
    APP_VERSION: str = "1.0.0"
    DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true"
    ENVIRONMENT: str = os.getenv("ENVIRONMENT", "development")

    # ------------------------------------------------------------------
    # Server
    # ------------------------------------------------------------------
    SERVER_HOST: str = os.getenv("SERVER_HOST", "0.0.0.0")
    SERVER_PORT: int = int(os.getenv("SERVER_PORT", "8000"))

    # ------------------------------------------------------------------
    # CORS
    # ------------------------------------------------------------------
    CORS_ORIGINS: List[str] = [
        "http://localhost:3000",
        "http://localhost:5173",
        "http://localhost:8080",
        "http://127.0.0.1:3000",
        "http://127.0.0.1:5173",
        os.getenv("FRONTEND_URL", "http://localhost:3000"),
    ]

    # ------------------------------------------------------------------
    # MongoDB
    # ------------------------------------------------------------------
    MONGODB_URL: str = os.getenv("MONGODB_URL", "mongodb://localhost:27017")
    MONGODB_DATABASE: str = os.getenv("MONGODB_DATABASE", "lojiz")

    # ------------------------------------------------------------------
    # JWT
    # ------------------------------------------------------------------
    JWT_SECRET: str = os.getenv("JWT_SECRET", "your-super-secret-key-change-in-production")
    JWT_ALGORITHM: str = "HS256"
    JWT_LOGIN_EXPIRY_DAYS: int = 60
    JWT_RESET_EXPIRY_MINUTES: int = 10

    # ------------------------------------------------------------------
    # OTP
    # ------------------------------------------------------------------
    OTP_EXPIRY_MINUTES: int = 15
    OTP_MAX_ATTEMPTS: int = 5
    OTP_LENGTH: int = 4

    # ------------------------------------------------------------------
    # Email (Resend)
    # ------------------------------------------------------------------
    RESEND_API_KEY: str = os.getenv("RESEND_API_KEY", "")
    RESEND_FROM_EMAIL: str = os.getenv("RESEND_FROM_EMAIL", "noreply@lojiz.com")
    RESEND_FROM_NAME: str = "Lojiz"

    # ------------------------------------------------------------------
    # Password Hashing
    # ------------------------------------------------------------------
    BCRYPT_ROUNDS: int = 10

    # ------------------------------------------------------------------
    # Security
    # ------------------------------------------------------------------
    ALLOWED_ROLES: List[str] = ["renter", "landlord", "admin"]

    # ------------------------------------------------------------------
    # Cloudflare Images
    # ------------------------------------------------------------------
    CF_ACCOUNT_ID: str = os.getenv("CF_ACCOUNT_ID", "")
    CF_API_TOKEN: str = os.getenv("CF_API_TOKEN", "")

    # ------------------------------------------------------------------
    # LLM / Tooling keys
    # ------------------------------------------------------------------
    OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "")
    HUGGINGFACE_API_KEY: str = os.getenv("HUGGINGFACE_API_KEY", "")
    HF_TOKEN: str = os.getenv("HF_TOKEN", "")
    MISTRAL_API_KEY: str = os.getenv("MISTRAL_API_KEY", "")
    ANTHROPIC_API_KEY: str = os.getenv("ANTHROPIC_API_KEY", "")
    GEMINI_API_KEY: str = os.getenv("GEMINI_API_KEY", "")
    OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "")
    
    # ============ DEEPSEEK (PRIMARY FOR AIDA) ============
    DEEPSEEK_API_KEY: str = os.getenv("DEEPSEEK_API_KEY", "")
    DEEPSEEK_BASE_URL: str = os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1")
    
    # ============ LANGGRAPH & TRACING ============
    LANGCHAIN_TRACING_V2: bool = os.getenv("LANGCHAIN_TRACING_V2", "false").lower() == "true"
    LANGCHAIN_API_KEY: str = os.getenv("LANGCHAIN_API_KEY", "")
    LANGCHAIN_PROJECT: str = os.getenv("LANGCHAIN_PROJECT", "aida_agent")
    
    # ============ REDIS (SESSION & MEMORY) ============
    REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379")
    REDIS_PORT: int = int(os.getenv("REDIS_PORT", "6379"))
    REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "")
    REDIS_USERNAME: str = os.getenv("REDIS_USERNAME", "default")
    
    # ============ QDRANT (VECTOR DB) ============
    QDRANT_URL: str = os.getenv("QDRANT_URL", "http://localhost:6333")
    QDRANT_API_KEY: str = os.getenv("QDRANT_API_KEY", "")
    
    # ============ OTHER ============
    NODE_ENV: str = os.getenv("NODE_ENV", "development")
    TAVILY_API_KEY: str = os.getenv("TAVILY_API_KEY", "")
    SENTRY_DSN: str = os.getenv("SENTRY_DSN", "")

    class Config:
        env_file = ".env"
        case_sensitive = True
        extra = "ignore"

settings = Settings()