Add Firebase email/password authentication endpoints - Add /auth/register endpoint for user registration - Add /auth/login endpoint with Firebase REST API integration - Add /auth/me endpoint to get current user info - Add /auth/refresh endpoint for token refresh - Integrate with existing Firebase App Check - Add httpx and email-validator dependencies
c85fec3
| """ | |
| Configuration settings for the application | |
| """ | |
| import os | |
| from pydantic_settings import BaseSettings | |
| class Settings(BaseSettings): | |
| """Application settings""" | |
| # Firebase settings | |
| ENABLE_APP_CHECK: bool = os.getenv("ENABLE_APP_CHECK", "true").lower() == "true" | |
| FIREBASE_CREDENTIALS_PATH: str = os.getenv( | |
| "FIREBASE_CREDENTIALS_PATH", | |
| "/data/firebase-adminsdk.json" | |
| ) | |
| FIREBASE_API_KEY: str = os.getenv("FIREBASE_API_KEY", "") | |
| # API settings | |
| BASE_URL: str = os.getenv("BASE_URL", "http://localhost:8000") | |
| # Model / inference settings | |
| # Note: MODEL_ID must point to a FastAI model (.pkl file), not PyTorch (.pt file) | |
| # To find FastAI-compatible colorization models, search Hugging Face for models with .pkl files | |
| # Example: Look for models tagged with "fastai" and "colorization" | |
| MODEL_ID: str = os.getenv("MODEL_ID", "Hammad712/GAN-Colorization-Model") | |
| MODEL_BACKEND: str = os.getenv("MODEL_BACKEND", "fastai") | |
| BASE_MODEL_ID: str = os.getenv("BASE_MODEL_ID", "stabilityai/stable-diffusion-xl-base-1.0") | |
| LIGHTNING_REPO: str = os.getenv("LIGHTNING_REPO", "ByteDance/SDXL-Lightning") | |
| LIGHTNING_WEIGHTS: str = os.getenv("LIGHTNING_WEIGHTS", "sdxl_lightning_8step_unet.safetensors") | |
| CAPTION_MODEL_ID: str = os.getenv("CAPTION_MODEL_ID", "Salesforce/blip-image-captioning-base") | |
| NUM_INFERENCE_STEPS: int = int(os.getenv("NUM_INFERENCE_STEPS", "20")) | |
| POSITIVE_PROMPT: str = os.getenv( | |
| "POSITIVE_PROMPT", | |
| "high quality color photo, vibrant natural colors, detailed lighting" | |
| ) | |
| NEGATIVE_PROMPT: str = os.getenv( | |
| "NEGATIVE_PROMPT", | |
| "low quality, monochrome, black and white, desaturated, blurry, grainy" | |
| ) | |
| GUIDANCE_SCALE: float = float(os.getenv("GUIDANCE_SCALE", "1.0")) | |
| CONTROLNET_SCALE: float = float(os.getenv("CONTROLNET_SCALE", "1.0")) | |
| CAPTION_PREFIX: str = os.getenv("CAPTION_PREFIX", "a photography of") | |
| COLORIZE_SEED: int = int(os.getenv("COLORIZE_SEED", "123")) | |
| FASTAI_OUTPUT_CAPTION: str = os.getenv( | |
| "FASTAI_OUTPUT_CAPTION", | |
| "Colorized using GAN-Colorization-Model" | |
| ) | |
| INFERENCE_PROVIDER: str = os.getenv("INFERENCE_PROVIDER", "fal-ai") | |
| INFERENCE_MODEL: str = os.getenv("INFERENCE_MODEL", "black-forest-labs/FLUX.1-Kontext-dev") | |
| INFERENCE_TIMEOUT: int = int(os.getenv("INFERENCE_TIMEOUT", "180")) | |
| HF_TOKEN: str = os.getenv("HF_TOKEN", "") | |
| # Storage settings | |
| UPLOAD_DIR: str = os.getenv("UPLOAD_DIR", "uploads") | |
| RESULT_DIR: str = os.getenv("RESULT_DIR", "results") | |
| class Config: | |
| env_file = ".env" | |
| case_sensitive = False | |
| settings = Settings() | |