Built a Full-Stack Collaborative Editor using TypeScript and Next JS, which enabled a collaborative text editor with real-time updates, document management (including create, delete, share, and list operations), comments with threading, active collaborator indicators, and responsive design across all devices.
-
Authentication: User authentication using Google through NextAuth, ensuring secure sign-in/out and session management
-
Collaborative Text Editor: Multiple users can edit the same document simultaneously with real-time updates
-
Documents Management: CRDU operations (Create, Delete, Share, List)
- Create Documents: Users can create new documents, which are automatically saved and listed.
- Delete Documents: Users can delete documents they own.
- Share Documents: Users can share documents via email or link with view/edit permissions.
- List Documents: Display all documents owned or shared with the user, with search and sorting functionalities.
-
Comments: Users can add inline and general comments, with threading for discussions
-
Active Collaborators on Text Editor: Show active collaborators with real-time presence indicators
-
Notifications: Notify users of document shares, new comments, and collaborator activities
-
Responsive: The application is responsive across all devices
-
Change the current working directory to the location where you want the cloned directory.
-
Clone the repository:
git clone https://github.com/jhwa426/Collaborative-Editor
-
Navigate to the project directory:
cd collaborative-editor
-
Install the dependencies:
npm install
-
Set Up Environment Variables
Create a new file named .env.local
in the root of your project and add the following content:
#Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
#Liveblocks
NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY=
LIVEBLOCKS_SECRET_KEY=
Running the Project
npm run dev
Open http://localhost:3000 in your browser to view the project.
- Open your browser and visit:
http://localhost:3000