Implement Software Best Practices and Graceful API Key Management

- Integration of ruff, eslint, prettier for consistent code style
- Global error handling and structured logging in backend
- Comprehensive testing strategy with 100% pass rate (33 backend, 2 frontend)
- Graceful handling of missing Gemini API key (non-blocking startup)
- New /settings/status endpoint and UI warning indicators
- Full documentation update (ARCHITECTURE.md, CONTRIBUTING.md, README.md, GEMINI.md)
- Restored missing frontend logic and fixed UI syntax errors
This commit is contained in:
Moritz Graf
2026-01-01 20:37:10 +01:00
parent 8e55078c14
commit f3260d7dff
45 changed files with 5723 additions and 728 deletions
+3 -2
View File
@@ -1,13 +1,14 @@
import sys
import os
import sys
# Add src to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")))
from garmin.sync import GarminSync
from garmin.client import GarminClient
from garmin.sync import GarminSync
from garmin.workout import GarminWorkoutCreator, StrengthWorkout, WorkoutStep
def get_common_exercises():
"""Extract common exercises from local Garmin history."""
client = GarminClient() # path helper
+3 -2
View File
@@ -1,13 +1,14 @@
import sys
import os
import sys
# Add src to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")))
from garmin.sync import GarminSync
from garmin.client import GarminClient
from garmin.sync import GarminSync
from recommendations.engine import RecommendationEngine
def main():
print("🤖 Gemini Fitness AI")
+2 -2
View File
@@ -1,6 +1,5 @@
import sys
import os
from datetime import date
import sys
# Add src to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")))
@@ -8,6 +7,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../src"
from garmin.client import GarminClient
from garmin.sync import GarminSync
def main():
print("🚀 Initializing Garmin Sync...")
client = GarminClient()