A Collaborative Text Editor built with Draftjs built on top of Electron.
Key Features • How To Use • Project Goals • Credits • Contributing
- User authentication using Passport
- Hash protected passwords
- A user can login and register
- Real-time text collaboration using Socket.io
- While you type, socket connection allows for live text sync
- Multiple users can edit a document at the same time
- Search for words in document
- Similar to Ctrl + F
- A user can find a given word in the document via the search bar
- Toolbar for basic markdown formatting using Draft.js
- A user can bold, italicize, underline, strikethrough, align, etc.
- Cross platform via Electron
- Windows, Mac and Linux ready
To clone and run this application, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line:
# Clone this repository
$ git clone https://github.com/thejameswang/collab-me.git
# Go into the repository
$ cd collab-me
# Install dependencies
$ npm install
# Run the app
$ npm start
# For multiple development environment
# Create another terminal and repeat
$ npm start
This will get your development environment started
- Create an application using Electron
- Create a platform that allows multiple users to collaborate on the go
- Use packages and frameworks such as, Socket.io, Draft.js, Express.js, Node.js, React.js, Redux.js, and Mongoose, to develop an MVP.
Login page
More screenshots
With these goals in mind, under the hood this project uses, among others:
- Node.js: an open-source, cross-platform JavaScript run-time environment that executes JavaScript code server-side.
socket.io
: JavaScript library for realtime web applications. It enables realtime, bi-directional communication between web clients and servers.draft-js
: a JavaScript rich text editor framework, built for React and backed by an immutable model.express
: A web application framework for Node.js, released as free and open-source software under the MIT License. It is designed for building web applications and APIs.react
: A JavaScript library for building user interfaces. It is maintained by Facebook, Instagram and a community of individual developers and corporations.redux
: A predictable state container for JavaScript apps. Allows writing applications that behave consistently, run in different environments (client, server, and native), and are easy to test.electron-forge
: A complete tool for building modern Electron applications.electron-compile
: a tool that lets you use modern and futuristic languages inside Electron without worrying about transpiling or build tooling.electron-rebuild
: Automatically recompiles native Node.js modules against the correct Electron version.- Electron Packager: Customizes and bundles your Electron app to get it ready for distribution.
Pull requests are welcome. It may take time for the changes to be implemented, but any contributions are appreciated.
Please make sure contributions are up to date with packages.