devvibes's picture
Initial commit
a4d1533
"""
⚙️ Haven Kitchen OS Configuration
User preferences and system settings.
"""
import os
import json
from pathlib import Path
from dataclasses import dataclass, field
from dotenv import load_dotenv
load_dotenv()
@dataclass
class SystemConfig:
base_dir: Path = Path(__file__).parent.parent
prefs_file: Path = base_dir / "user_preferences.json"
# API Keys
groq_key: str = os.getenv("GROQ_API_KEY")
serper_key: str = os.getenv("SERPER_API_KEY")
openai_api_key: str = os.getenv("OPENAI_API_KEY")
elevenlabs_key: str = os.getenv("ELEVENLABS_API_KEY")
# User Defaults
user_name: str = "Friend"
location: str = "Denver, CO"
dietary_restrictions: str = "None"
user_avatar: str = "👩🏻"
meal_times: dict = field(default_factory=lambda: {
"breakfast": {"start": "06:00 AM", "end": "10:00 AM"},
"lunch": {"start": "11:30 AM", "end": "02:00 PM"},
"dinner": {"start": "05:00 PM", "end": "08:00 PM"}
})
def __post_init__(self):
self.load_preferences()
def load_preferences(self):
if self.prefs_file.exists():
try:
with open(self.prefs_file, 'r') as f:
data = json.load(f)
self.user_name = data.get("user_name", self.user_name)
self.location = data.get("location", self.location)
self.dietary_restrictions = data.get("dietary_restrictions", self.dietary_restrictions)
self.meal_times = data.get("meal_times", self.meal_times)
self.user_avatar = data.get("user_avatar", self.user_avatar)
except:
pass
else:
self.save_preferences()
def save_preferences(self):
data = {
"user_name": self.user_name,
"location": self.location,
"dietary_restrictions": self.dietary_restrictions,
"meal_times": self.meal_times,
"user_avatar": self.user_avatar
}
with open(self.prefs_file, 'w') as f:
json.dump(data, f, indent=4)