This repository showcases real-time collaborative editing using the Syncfusion® Spreadsheet Editor, allowing multiple users to edit the same workbook simultaneously. The project demonstrates how to implement collaborative features across multiple frontend frameworks (Angular, React, Vue, and TypeScript) with an ASP.NET Core backend.
- Real-time collaborative editing of spreadsheets
- Support for multiple frontend frameworks:
- Angular
- React
- Vue
- TypeScript (Vanilla)
- ASP.NET Core backend with SignalR for real-time communication
- Redis integration for collaboration state management
- Spreadsheet operations synchronization across multiple clients
- Selection highlighting for other users' cursor positions
- .NET 10.0 SDK
- Redis server (for collaboration state management)
- Syncfusion license key
- Node.js (v18 or later)
- npm or yarn
├── client/
│ ├── angular/ # Angular implementation
│ ├── react/ # React implementation
│ ├── typescript/ # TypeScript/Vanilla implementation
│ └── vue/ # Vue implementation
├── server/
│ └── aspnet-core/ # ASP.NET Core backend with SignalR
└── README.md
-
Navigate to the server directory:
cd server/aspnet-core -
Configure your Syncfusion license:
- Add your license key to
SyncfusionLicense.txtfile - Or set the
SYNCFUSION_LICENSE_KEYenvironment variable
- Add your license key to
-
Configure Redis connection:
- Update the Redis connection string in
appsettings.json:{ "ConnectionStrings": { "Redis": "your_redis_connection_string" } }
- Update the Redis connection string in
-
Run the server:
dotnet run
The server will start on
https://localhost:5001by default.
Choose one of the client implementations:
-
Navigate to the Angular client:
cd client/angular -
Install dependencies:
npm install
-
Update the service URL in
src/components/spreadsheet-editor/spreadsheet-editor.component.ts:const serviceUrl: string = 'https://localhost:5001/';
-
Run the application:
npm start
The application will be available at
http://localhost:4200.
-
Navigate to the React client:
cd client/react -
Install dependencies:
npm install
-
Update the service URL in
src/SpreadsheetEditorAdapter.ts:const serviceUrl: string = 'https://localhost:5001/';
-
Run the application:
npm run dev
The application will be available at
http://localhost:5173.
-
Navigate to the Vue client:
cd client/vue -
Install dependencies:
npm install
-
Update the service URL in
src/SpreadsheetEditorAdapter.ts:const serviceUrl: string = 'https://localhost:5001/';
-
Run the application:
npm run dev
The application will be available at
http://localhost:5173.
-
Navigate to the TypeScript client:
cd client/typescript -
Install dependencies:
npm install
-
Update the service URL in
src/spreadsheet-editor-adapter.ts:const serviceUrl: string = 'https://localhost:5001/';
-
Run the application:
npm run dev
The application will be available at
http://localhost:5173.
- Start the backend server
- Start one of the frontend clients
- Open the application in multiple browser windows or devices
- Each user will be assigned a unique room ID automatically
- To collaborate in the same room, share the URL with the room ID parameter
- All users in the same room will see real-time updates as others edit the spreadsheet
The backend provides the following API endpoints:
POST /api/CollaborativeEditing/ImportFile- Import a file for collaborative editing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a pull request
This project uses Syncfusion Essential JS 2 components, which are licensed under either the Syncfusion Community License Program or the Syncfusion commercial license.
Please refer to the license file for more information.
To use this product, you must agree to and abide by Syncfusion's license containing all terms and conditions, which can be found at: https://www.syncfusion.com/content/downloads/syncfusion_license.pdf