The Real-time Document Editor is a collaborative text editing application that allows multiple users to simultaneously edit the same document in real-time. It is built using a client-server architecture with gRPC for communication.
Multiple users can connect to the same document and edit it simultaneously.
Edits made by one user are instantly reflected in the documents of all other connected users.
Users can create new documents, open existing ones, save changes, and delete files.
The application includes a status bar to display the current file being edited, along with other relevant information.
Automatic file saving is implemented to prevent data loss.
The application has a clean and intuitive graphical user interface (GUI) built using Tkinter.
User authentication is implemented to ensure that only one user can use a particular username.
The Real-time Document Editor consists of two main components:
Client (EditorGUI): The client-side of the application, which is responsible for the user interface and interactions. It uses gRPC to communicate with the server.
Server (TextEditorServicer): The server-side of the application, which is responsible for managing the files, handling client connections, and broadcasting updates to connected clients.
The client and server communicate using the following gRPC methods:
SaveToServer: Sends a file to the server for saving.
DeleteFromServer: Deletes a file from the server.
SignInExisting: Authenticates a user and checks for existing connections with the same username.
Listen: Allows a client to receive updates for files they are currently viewing.
ListenForDeletes: Allows a client to receive notifications when a file they are viewing is deleted.
Additionally, the system includes a Logging Service that is responsible for recording all file-related actions (create, update, delete) in a log file.