diff --git a/Makefile b/Makefile index 49d0c0c..de2f05b 100644 --- a/Makefile +++ b/Makefile @@ -71,4 +71,14 @@ dev-full: dev-full-down: @echo "Stopping backend (Docker Compose)..." - docker compose -f docker-compose.dev.yml down \ No newline at end of file + docker compose -f docker-compose.dev.yml down + +# ==== Packaging ==== +.PHONY: package clean-dist + +package: + python -c "import os; os.environ['APP_ENV'] = 'prod'; import PyInstaller.__main__; PyInstaller.__main__.run(['--onefile', '--windowed', '--name', 'StudyForge', 'main.py'])" + + +clean-dist: + python -c "import shutil, os; [shutil.rmtree(d, ignore_errors=True) for d in ['build', 'dist']]; [os.remove(f) for f in ['StudyForge.spec'] if os.path.exists(f)]" diff --git a/backend/config.py b/backend/config.py index f12339f..b066e8e 100644 --- a/backend/config.py +++ b/backend/config.py @@ -1,9 +1,15 @@ import os -from dotenv import load_dotenv +import sys -load_dotenv() -ENV = os.getenv("APP_ENV", "dev") # default to dev if not set +def is_frozen(): + return getattr(sys, 'frozen', False) + + +# Default to prod if frozen (i.e. built with PyInstaller) +ENV = os.getenv("APP_ENV", "dev") +if is_frozen() and ENV == "dev": + ENV = "prod" if ENV == "prod": API_BASE_URL = "https://studyforge-api.onrender.com"