System topology
System architecture
How this platform is built and deployed.
Three bounded AI experiences running on a single-node k3s cluster. The frontend is public; the backend is internal-only.
Repositories
- Frontend / BFF
github.com/plebedev/demo-web-app
Next.js 15 App Router · TypeScript · standalone container - Backend API
github.com/plebedev/demo-service
FastAPI · Python 3.14 · SQLAlchemy 2 · Alembic
Tech stack
- Frontend/BFF: Next.js 15 App Router, TypeScript.
- Backend API: FastAPI (Python 3.14), SQLAlchemy 2.x, Alembic migrations, Pydantic 2.
- Database: Oracle Autonomous Database in production, Postgres locally.
- AI: LLM APIs (Claude, OpenAI) for workflow and retrieval; xAI and OpenAI realtime for voice. Workflows are model-agnostic — providers are swappable via config.
Deployment
- Single-node k3s on Oracle Cloud VM.
- Traefik ingress — frontend is public, backend is internal-only via cluster DNS.
- No image registry: build locally → save tar → scp to VM →
k3s ctr images import→helm upgrade. - Image tags are the current short git SHA.
- Public URL: demo.lebedev.ai
Access model
- User enters an invitation code on the Access Hub.
- Backend validates and issues a signed access token scoped to the experience.
- Frontend stores the token in localStorage per-experience.
- Protected routes and API calls require a valid token.
Experiences
- Messy Notes — bounded multi-agent workflow that turns raw notes into a structured brief.
- RAG Demo — persona-scoped document retrieval with grounded answers and citations.
- Voice Demo — browser and phone access to a persona-configured voice advisor via xAI or OpenAI realtime.