@startuml EduConnect actor User participant "FastAPIApp" as app participant "Authentication" as auth database "TinyDB" as db participant "FileHandler" as fileHandler participant "ChatHandler" as chat participant "DocumentIngestor" as docIngestor == User Login == User -> app : login() app -> auth : authenticate() auth -> db : verifyUser() db --> auth : userValidated auth --> app : token app --> User : token == Chat Message == User -> app : sendMessage() app -> chat : processMessage() chat --> User : response == Upload Document == User -> app : uploadDocument() app -> fileHandler : saveFile() fileHandler -> docIngestor : processDocument() docIngestor --> fileHandler : docProcessed fileHandler --> User : uploadSuccess @enduml