@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