AI Tutor Documentation
This documentation provides an overview for developers working with the AI Tutor widget, which consists of the components TutorAvatar.tsx, TutorChat.tsx, and TutorWidget.tsx. It describes component responsibilities, API usage, and key areas for customization.
Table of Contents
Project Structure
components/tutor/
TutorAvatar.tsx // Dino avatar, floating action button
TutorChat.tsx // Chat window component, handles chat logic
TutorWidget.tsx // Main widget, manages avatar, chat, recommendations, welcome
Component Overview
TutorAvatar.tsx
Purpose: Displays the dino avatar used as the floating action button to open/close the chat window.
Usage: Pure presentational component, no external dependencies.
TutorChat.tsx
Purpose: Handles chat UI, user input, and communication with the LLM backend.
Key Logic:
Manages chat history and loading state.
Sends user queries to the backend via a GraphQL mutation.
Handles Enter/Shift+Enter for sending or newlines.
Displays chat messages and a placeholder welcome when empty.
API Integration:
Uses
llmRequestGraphQL mutation (see API Integration).
TutorWidget.tsx
Purpose: Main container for the widget, handles:
Avatar display and drag behavior.
Showing/hiding the chat window.
Displaying and controlling the recommendation bubble and welcome message.
Fetching recommendations from the backend.
API Integration:
Uses
recommendationsGraphQL query (see API Integration).
API Integration
1. Chat Backend (GraphQL)
Location:
TutorWdiget.tsxEndpoint: tbd
Mutation Example:
tbd
Expected Response: tbd
Customization & Extension Points
API Endpoints:
Change GraphQL endpoints in
fetchcalls if needed.Adapt queries/mutations to match your backend schema.
Welcome Message:
Edit the string in
TutorWidget.tsxinside the welcome bubble for custom greetings.
Recommendation Bubble:
Style/position in
TutorWidget.tsx.Bubble auto-hides after 8 seconds or immediately if the user clicks “×”.
Chat Placeholder:
Change the placeholder string in
TutorChat.tsx(BOT_PLACEHOLDER).
Chat UI:
Style the chat bubbles, button, and input in
TutorChat.tsx.
Avatar:
Replace the Dino SVG or image in
TutorAvatar.tsxfor custom branding.
Authentication:
If APIs are protected, ensure authentication tokens/headers are set in fetch calls.
Styling
All styles are currently implemented as inline
styleobjects in each component for ease of integration.For larger projects, consider extracting styles to CSS/SASS modules or using a CSS-in-JS solution.
Internationalization
All user-facing strings are hard-coded in German/English in the respective components.
For multi-language support, extract strings and use a localization library (e.g.,
react-i18next).
Known Issues / TODOs
API Error Handling:
Minimal error feedback is given to the user; consider improving error UI/UX.
Accessibility:
The widget and chat input are semi-accessible, but further ARIA improvements may be required.
Mobile Support:
Widget is designed for desktop; for touch/mobile, drag & drop and sizing may need adjustment.
Testing:
No unit or integration tests are included; add tests as needed for production environments.
For any issues or further integration questions, see the code comments in each file or contact the maintainers.