How igortuchel/sfe-ai-coursework works
Historical Chatbot is a React/Express application for chatting with historically grounded character personas, managing accounts, and authoring characters and their RAG data. The main user flow runs from the chat interface through message submission to a backend handler that selects scripted or Gemini-backed responses, retrieves character context, and persists chat state. The README also documents authentication, session controls, character authoring, and image generation. Some backend route wiring and unsampled modules are represented only where the README or source index supports the relationship.
Main entry points: api.js HTTP client · handlerSendChatMessage.js Message handler · App.jsx Page router · userRoutes.js User routes
Components 34
Web experience
- Page router
frontend/src/App.jsx - Chat interface
frontend/src/pages/ChatPage.jsx - Chat state
frontend/src/hooks/useChatMessages.js - Character editor
frontend/src/pages/CreateCharacterPage.jsx - Account settings
frontend/src/pages/UserSettings.jsx - Auth state
frontend/src/context/AuthContext.jsx - HTTP client
frontend/src/lib/api.js - Chat API services
frontend/src/services - Character API services
frontend/src/services - Settings actions
frontend/src/hooks/useUserSettings.js
API and identity
- User routes
backend/src/routes/userRoutes.js - Character routes
backend/src/routes/characterRoutes.js - Auth and roles
backend/src/middleware/authenticatedRouteMiddleware.js - Login and signup
backend/src/handlers/handlerLogIn.js - Session revocation
backend/src/handlers/handlerInvalidateOtherSessions.js
Conversation intelligence
- Message handler
backend/src/handlers/handlerSendChatMessage.js - Script matcher
backend/src/utils/jsonEngine.js - Conversation context
backend/src/services/contextManager.js - RAG retrieval
backend/src/services/mongoSearchQuery.js - Gemini services
backend/src/services
Character authoring
- Character context cache
backend/src/services/characterContextManager.js - Character management
backend/src/handlers - Character RAG data
backend/src/handlers
Persistence and integrations
- Chat records
backend/src/models/chatModel.js - Character records
backend/src/models/characterModel.js - Vector records
backend/src/models/characterVectorDataStore.js - User records
backend/src/models/usersModel.js - Context records
backend/src/models/chatContextModel.js - Redis cache
backend/src/config/redis.js - Image storage
backend/src/services/putObjectS3.js - Email delivery
backend/src/services/sendEmail.js
Other components
- Visitor or user
- Google Gemini
- AWS S3
Connections 40
- Visitor or user → Page router: opens
- Page router → Chat interface: routes to
frontend/src/App.jsx - Page router → Character editor: routes to
frontend/src/App.jsx - Page router → Account settings: routes to
frontend/src/App.jsx - Chat interface → Chat state: uses
- Chat state → Chat API services: calls
frontend/src/hooks/useChatMessages.js - Character editor → Character API services: uses
- Account settings → Settings actions: uses
frontend/src/pages/UserSettings.jsx - Settings actions → HTTP client: calls via
- Auth state → HTTP client: checks session
frontend/src/context/AuthContext.jsx - Chat API services → HTTP client: sends requests
frontend/src/services/loginUserService.js - Character API services → HTTP client: sends requests
frontend/src/services/loginUserService.js - HTTP client → User routes: calls API
- HTTP client → Character routes: calls API
- User routes → Auth and roles: guards routes
backend/src/routes/userRoutes.js - User routes → Login and signup: dispatches login
backend/src/routes/userRoutes.js - User routes → Session revocation: dispatches revocation
backend/src/routes/userRoutes.js - Character routes → Auth and roles: guards routes
backend/src/routes/characterRoutes.js - Character routes → Character management: dispatches
backend/src/routes/characterRoutes.js - Character routes → Character RAG data: dispatches
backend/src/routes/characterRoutes.js - Message handler → Script matcher: matches scripts
backend/src/handlers/handlerSendChatMessage.js - Message handler → Conversation context: loads context
backend/src/handlers/handlerSendChatMessage.js - Message handler → RAG retrieval: retrieves grounding
backend/src/handlers/handlerSendChatMessage.js - Message handler → Gemini services: requests response
backend/src/handlers/handlerSendChatMessage.js - Conversation context → Context records: reads and updates
backend/src/services/contextManager.js - Conversation context → Redis cache: caches context
backend/src/services/contextManager.js - Conversation context → Google Gemini: summarizes
backend/src/services/contextManager.js - RAG retrieval → Vector records: searches
backend/src/services/mongoSearchQuery.js - Gemini services → Google Gemini: uses
- Character context cache → Character records: loads character
backend/src/services/characterContextManager.js - Character context cache → Redis cache: caches character
backend/src/services/characterContextManager.js - Character management → Character records: manages
backend/src/handlers/handlerUpdateCharacter.js - Character management → Image storage: uploads images
backend/src/handlers/handlerUpdateCharacter.js - Image storage → AWS S3: stores objects
- Character RAG data → Vector records: manages data
backend/src/handlers/handlerCreateVectorDataStore.js - Login and signup → User records: checks account
backend/src/handlers/handlerLogIn.js - Session revocation → User records: revokes sessions
- Login and signup → Email delivery: sends MFA code
- Email delivery → Visitor or user: delivers email
- Message handler → Chat records: persists messages
backend/src/handlers/handlerSendChatMessage.js