start.bat
Rama main · réplica de lectura del repositorio original.
@echo off
:: ──────────────────────────────────────────────
:: Spendify — Startup script (Windows)
:: ──────────────────────────────────────────────
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: ── Pre-flight checks ──────────────────────────
:: Python 3.13+
where python >nul 2>&1
if errorlevel 1 (
echo [ERROR] Python non trovato. Installa Python ^>= 3.13.
exit /b 1
)
for /f "tokens=*" %%v in ('python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"') do set PY_VER=%%v
for /f "tokens=1,2 delims=." %%a in ("%PY_VER%") do (
set PY_MAJOR=%%a
set PY_MINOR=%%b
)
if %PY_MAJOR% lss 3 (
echo [ERROR] Python ^>= 3.13 richiesto ^(trovato %PY_VER%^).
exit /b 1
)
if %PY_MAJOR% equ 3 if %PY_MINOR% lss 13 (
echo [ERROR] Python ^>= 3.13 richiesto ^(trovato %PY_VER%^).
exit /b 1
)
echo [INFO] Python %PY_VER% OK
:: uv
where uv >nul 2>&1
if errorlevel 1 (
echo [WARN] uv non trovato. Installazione in corso...
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
where uv >nul 2>&1
if errorlevel 1 (
echo [ERROR] Installazione di uv fallita. Installa manualmente: https://docs.astral.sh/uv/
exit /b 1
)
)
echo [INFO] uv OK
:: ── Setup ───────────────────────────────────────
:: .env
if not exist .env (
if exist .env.example (
copy .env.example .env >nul
echo [INFO] File .env creato da .env.example
) else (
echo [WARN] File .env.example non trovato — procedo senza .env
)
)
:: Dipendenze
echo [INFO] Sincronizzazione dipendenze...
uv sync --quiet
:: Attivazione virtualenv
if not exist ".venv\Scripts\activate.bat" (
echo [ERROR] Virtualenv non trovato in .venv. Esegui 'uv sync' manualmente.
exit /b 1
)
call .venv\Scripts\activate.bat
echo [INFO] Virtualenv attivato (.venv)
:: ── Avvio ───────────────────────────────────────
set MODE=%~1
if "%MODE%"=="" set MODE=ui
if "%MODE%"=="ui" (
echo [INFO] Avvio Streamlit UI su http://localhost:8501
streamlit run app.py --server.headless true
goto :eof
)
if "%MODE%"=="api" (
echo [INFO] Avvio API server su http://localhost:8000
uvicorn api.main:app --host 0.0.0.0 --port 8000
goto :eof
)
if "%MODE%"=="all" (
echo [INFO] Avvio UI + API...
start "Spendify-API" cmd /c "call .venv\Scripts\activate.bat && uvicorn api.main:app --host 0.0.0.0 --port 8000"
echo [INFO] API avviata su http://localhost:8000
echo [INFO] Avvio Streamlit UI su http://localhost:8501
streamlit run app.py --server.headless true
goto :eof
)
echo Uso: %~nx0 [ui^|api^|all]
echo ui — Solo interfaccia Streamlit (default)
echo api — Solo server API REST
echo all — Entrambi
exit /b 1