How sm-saqib/agentic_ai_teacher_onica works
AI Teacher is a self-hosted teaching platform whose implemented core workflow authenticates a learner, opens a conversation, retrieves slide/knowledge context, and generates an LLM answer over REST or streamed WebSocket events. The graph also preserves documented slide, voice, and avatar capabilities; voice/avatar are represented only by their listed module directories, since implementation details are not sampled. Relationships involving unsampled route and feature internals are limited to documented or directly evidenced wiring.
Main entry points: service.py Conversation service · TeachingPage.tsx Teaching page · api.ts API client · useChat.ts Chat workflow
Components 26
Learner interface
- Web application
frontend/src/App.tsx - Teaching page
frontend/src/pages/TeachingPage.tsx - Chat interface
frontend/src/components/chat/ChatWindow.tsx - Chat workflow
frontend/src/hooks/useChat.ts - API client
frontend/src/services/api.ts - WebSocket client
frontend/src/services/websocket.ts
Backend API
- Auth routes
backend/app/api/v1/routes/auth.py - Chat routes
backend/app/api/v1/routes/chat.py - Slide routes
backend/app/api/v1/routes/slides.py - Chat socket
backend/app/api/v1/websocket/router.py - Socket manager
backend/app/websocket/manager.py - Chat event handlers
backend/app/websocket/handlers.py
Teaching services
- Authentication
backend/app/auth/service.py - Conversation service
backend/app/chat/service.py - LLM selector
backend/app/llm/client.py - Ollama provider
backend/app/llm/providers/ollama.py - OpenRouter provider
backend/app/llm/providers/openrouter.py - Voice capability
backend/app/voice - Avatar capability
backend/app/avatar
Persistence and indexing
- PostgreSQL
- Database models
backend/app/database/models.py - Vector retrieval
backend/app/vector_store/chroma_client.py - ChromaDB
- Slide indexing
background/indexing/slide_indexer.py - Vector indexing
background/indexing/chroma_indexer.py
Other components
- Learner
Connections 27
- Learner → Web application: uses
- Web application → Teaching page: routes to
- Teaching page → Chat interface: renders
- Chat interface → Chat workflow: uses
- Chat workflow → API client: calls REST
- Chat workflow → WebSocket client: streams via
- API client → Auth routes: requests auth
- API client → Chat routes: requests chat
- API client → Slide routes: requests slides
- WebSocket client → Chat socket: connects
- Chat socket → Socket manager: registers and routes
- Socket manager → Chat event handlers: dispatches events
- Chat event handlers → Conversation service: calls
- Chat routes → Conversation service: delegates chat
- Auth routes → Authentication: delegates auth
- Authentication → PostgreSQL: reads and writes
- Conversation service → PostgreSQL: reads and writes
- PostgreSQL → Database models: stores
- Conversation service → Vector retrieval: retrieves context
- Vector retrieval → ChromaDB: queries
- Conversation service → LLM selector: generates answers
- LLM selector → Ollama provider: selects provider
- LLM selector → OpenRouter provider: selects provider
- Slide indexing → Vector indexing: indexes slides
- Vector indexing → Vector retrieval: adds vectors
- Teaching page → Voice capability: feature area
- Teaching page → Avatar capability: feature area