from pathlib import Path from decouple import config class Settings: PROJECT_NAME: str = "Enviodeck Authentication API" PROJECT_VERSION: str = "1.0.0" # Database DB_DIR = Path("/app") / "storage" / "db" DB_DIR.mkdir(parents=True, exist_ok=True) SQLALCHEMY_DATABASE_URL = f"sqlite:///{DB_DIR}/db.sqlite" # JWT JWT_SECRET_KEY: str = config( "JWT_SECRET_KEY", default="your-secret-key-change-this" ) JWT_ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 * 24 * 60 # 30 days # Redis (for OTP storage) REDIS_URL: str = config("REDIS_URL", default="redis://localhost:6379") # OTP settings OTP_EXPIRE_MINUTES: int = 5 OTP_MAX_ATTEMPTS: int = 3 # Rate limiting RATE_LIMIT_REQUESTS: int = 5 RATE_LIMIT_WINDOW: int = 60 # seconds # Third-party auth GOOGLE_CLIENT_ID: str = config("GOOGLE_CLIENT_ID", default="") GOOGLE_CLIENT_SECRET: str = config("GOOGLE_CLIENT_SECRET", default="") APPLE_CLIENT_ID: str = config("APPLE_CLIENT_ID", default="") APPLE_CLIENT_SECRET: str = config("APPLE_CLIENT_SECRET", default="") # Twilio (for SMS) TWILIO_ACCOUNT_SID: str = config("TWILIO_ACCOUNT_SID", default="") TWILIO_AUTH_TOKEN: str = config("TWILIO_AUTH_TOKEN", default="") TWILIO_PHONE_NUMBER: str = config("TWILIO_PHONE_NUMBER", default="") settings = Settings()