Frontend React + Vite pentru upload video, selectie voce TTS, recomandare lungime text si randare video async. Pentru lansarea simpla, acelasi server Node serveste si API-ul, si frontend-ul build-uit din dist.
npm install
npm run devLogin-ul mock accepta orice nume si parola necompletate corect. Token-ul este salvat in localStorage fara expirare impusa de frontend.
npm run build
npm run previewWorkflow-ul din .github/workflows/deploy.yml construieste proiectul la fiecare push pe branch-ul main si publica folderul dist pe GitHub Pages.
In repository-ul GitHub:
- Deschide
Settings > Pages. - La
Build and deployment, selecteazaGitHub Actions. - Fa push pe
main.
Vite foloseste automat base: /video-platform/ in GitHub Actions, potrivit pentru repository-ul video-platform.
In src/config.ts, schimba:
export const API_MODE = "mock" as const;in:
export const API_MODE = "real" as const;Clientul real trimite cererile catre acelasi origin ca pagina servita de Node:
export const API_BASE_URL = "";POST /auth/loginGET /voicesPOST /voices/:voiceId/previewPOST /rendersGET /renders/:jobId
Randarea trimite multipart/form-data cu video, text, voiceId si speedScale.
Serverul este in server.mjs si expune acelasi contract folosit de frontend. Ruleaza cu Node.js si apeleaza Gemini TTS prin @google/genai, converteste PCM-ul TTS in WAV cu ffmpeg, apoi lipeste audio-ul in video tot cu ffmpeg.
Implicit, serverul este configurat pentru cheia din Google AI Studio:
- backend SDK: Gemini Developer API
- endpoint SDK:
https://generativelanguage.googleapis.com - API version:
v1beta - model default:
gemini-3.1-flash-tts-preview
Instalare pe VPS:
npm install
sudo apt-get update
sudo apt-get install -y ffmpegVariabile recomandate:
PORT=8080
PUBLIC_BASE_URL=http://152.67.155.30:8080
CORS_ORIGIN=*
ADMIN_USERNAME=admin
ADMIN_PASSWORD=schimba-parola
TOKEN_SECRET=un-secret-lung
GENAI_BACKEND=gemini
GEMINI_API_KEY=cheia-ta-google-ai-studio
GEMINI_TTS_MODEL=gemini-3.1-flash-tts-preview
TTS_PCM_FORMAT=s16le
TTS_SAMPLE_RATE=
COMMAND_TIMEOUT_MS=600000
FILE_TTL_HOURS=24
CLEANUP_INTERVAL_MINUTES=60Pornire:
npm run build
npm run server:prodAplicatia completa va fi disponibila la http://152.67.155.30:8080.
Endpoint-uri server:
GET /healthPOST /auth/loginGET /voicesPOST /voices/:voiceId/previewPOST /rendersGET /renders/:jobId
Pentru GitHub Pages, VPS-ul trebuie expus prin HTTPS in productie; altfel browserul poate bloca request-urile din cauza mixed content.
Pentru Agent Platform / Vertex AI, seteaza GENAI_BACKEND=enterprise si foloseste ADC / service account. Pentru lansarea simpla cu API key din AI Studio, pastreaza GENAI_BACKEND=gemini.