A ChatGPT-like, low-latency conversational voice agent — free beta MVP.
Stack: Spring Boot 3.5 · Java 21 · Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · MySQL 8 · Redis 7 · Docker Compose · nginx
- Audio-native voice chat via Gemini Live (native audio) — no STT → LLM → TTS chaining
- Barge-in, multilingual (English / Bangla / Korean), JWT WebSocket relay
- Free beta caps: per-session duration, daily minutes per user, global concurrency
- Auth foundation: register, login, password reset, profile, sessions
Browser (Next.js UI)
→ nginx (:5174)
/ → next (:3000)
/api /uploads /ws → Spring Boot (:9090)
→ Gemini Live (BidiGenerateContent)
├── saas-nextjs/ # Next.js App Router frontend (product UI)
├── saas-springboot/ # Spring Boot API + /ws/voice
├── saas-reactjs/ # Legacy Vite frontend (deprecated)
├── docker-compose.yml
└── .env.example
cp .env.example .env— setGEMINI_API_KEYand a 32+ charAPP_JWT_SECRETdocker compose up -d --build- Open http://localhost:5174
- Register / sign in → Talk (
/voice) → allow mic
cd saas-nextjs
cp .env.example .env.local
# NEXT_PUBLIC_API_BASE_URL=http://localhost:9090
npm install
npm run devBackend on :9090 with CORS including http://localhost:3000.
| Cap | Default env |
|---|---|
| Max sessions / user | VOICE_MAX_SESSIONS_PER_USER=1 |
| Max session length | VOICE_MAX_SESSION_DURATION_SECONDS=600 |
| Daily minutes / user | VOICE_MAX_DAILY_MINUTES_PER_USER=30 |
| Global concurrent sessions | VOICE_MAX_GLOBAL_SESSIONS=50 |
Exceeded limits return WebSocket error codes: USAGE_LIMIT, SESSION_DURATION_LIMIT, GLOBAL_CAPACITY.
cd saas-springboot && ./mvnw -ntp test
cd saas-nextjs && npm run type-check && npm run buildMIT — see LICENSE.