Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Google Docs Clone (MERN Stack)

This project is a Google Docs-like collaborative editor built using the MERN stack (MongoDB, Express.js, React.js, Node.js) that allows multiple users to edit the same document in real-time.

Features

  • Real-time Collaboration: Multiple users can edit the same document simultaneously with updates visible to all in real-time.
  • Socket.io Integration: Real-time communication between clients and the server using Socket.io.
  • Quill.js Editor: A rich-text editor is used for editing documents with formatting options.
  • MongoDB Database: Documents are persisted using MongoDB.
  • Document Autosave: Changes are saved automatically to the database.
  • Unique Document IDs: Each document has a unique ID, allowing users to access their own documents via the ID.

Tech Stack

  • Frontend: React.js, Quill.js
  • Backend: Node.js, Express.js
  • Database: MongoDB (Mongoose for schema management)
  • Real-time Communication: Socket.io

Getting Started

Prerequisites

Before running this project, make sure you have the following installed:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/google-docs-clone.git
  2. Navigate to the project directory:

    cd google-docs-clone
  3. Install dependencies for both the client and server:

    # For the backendcd backend
    npm install
    # For the frontendcd ../frontend
    npm install
  4. Create a .env file in the backend directory and add your MongoDB connection string:

    DB=mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority

Running the Application

  1. Start the backend server (Express.js and Socket.io):

    cd backend
    npm start
  2. Start the frontend development server:

    cd ../frontend
    npm start
  3. Open your browser and go to http://localhost:3000 to view the app.

Usage

  • Create a new document or access an existing one via its unique ID.
  • Multiple users can join the same document by sharing the document link.
  • Any changes made by one user will be reflected in real-time for all other users.
  • Documents are automatically saved in the MongoDB database.

Dependencies

Backend

  • Express.js: For creating the backend API and serving the application.
  • Mongoose: For interacting with MongoDB.
  • Socket.io: For real-time communication between the clients and server.
  • dotenv: For environment variable management.

Frontend

  • React.js: For building the user interface.
  • Quill.js: For rich-text editing.
  • Socket.io-client: For real-time communication with the server.

Contributing

Feel free to fork this repository and submit pull requests. All contributions are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Let me know if you'd like to make any adjustments to this!

Releases

Packages

Used by

Contributors

Languages