Backend HTTPS per l’app di allenamento.
GET /health — verifica che il backend sia online.POST /api/analyze — riceve PDF, DOCX, TXT o testo e lo trasforma in una programmazione strutturata JSON.POST /api/chat — coach conversazionale Gemini.GEMINI_API_KEY resta esclusivamente lato server.Il backend usa la Gemini Interactions API. gemini-3.1-flash-lite supporta PDF e structured outputs.
Requisiti:
Copia .env.example in .env e inserisci la chiave:
GEMINI_API_KEY=LA_TUA_CHIAVE
Non fare commit del file .env.
Poi:
npm install
npm start
Health check:
http://localhost:10000/health
npm installnpm startGEMINI_API_KEY = la tua chiave GeminiGEMINI_MODEL = gemini-3.1-flash-liteCORS_ORIGINS = lascia vuoto per il primo test oppure inserisci gli origin autorizzatiRender fornirà un URL HTTPS del tipo:
https://coach-api-gemini-xxxx.onrender.com
Usa quell’URL nell’app Android.
curl https://TUO-DOMINIO.onrender.com/health
curl -X POST https://TUO-DOMINIO.onrender.com/api/analyze \
-F "file=@scheda.pdf"
curl -X POST https://TUO-DOMINIO.onrender.com/api/analyze \
-H "Content-Type: application/json" \
-d '{"text":"Panca piana 4x6 RPE 8, recupero 180 secondi"}'
curl -X POST https://TUO-DOMINIO.onrender.com/api/chat \
-H "Content-Type: application/json" \
-d '{"message":"Come devo eseguire la panca piana?","context":{"user":"atleta"}}'
Il risultato è JSON e contiene:
titlesource_summaryassumptionsweeksglobal_ruleswarningsOgni esercizio può contenere:
Il backend non inventa dati mancanti: li lascia null/assunzioni e segnala le ambiguità in warnings.
NON mettere mai GEMINI_API_KEY:
.env.example.La chiave va solo nelle Environment Variables/Secrets del server.
Per PDF Gemini può ricevere direttamente i byte del documento. Per DOCX questo backend estrae il testo con Mammoth e poi lo invia a Gemini.