SkillAgentSearch skills...

Writewrl

## Writeurl - an online collaborative editor ### Writeurl is a collaborative editor Writeurl is a client server system. The frontend code is written in pure javascript using no frameworks. The backend is a node.js application. The client and server communicate through a WebSocket connection. The client stores local changes in the browser's local storage. The editor can be used in offline mode. Changes are always uploaded to the server when a connection is available. Writeurl documents are identified by their (write)url: www.writeurl.com/text/id/read-password/write-password There is a read only version with a (read)url of the form www.writeurl.com/text/id/read-password This url structure makes it easy to share documents. No user registration is needed. #### Writeurl as an online service Writeurl is available as an online service at www.writeurl.com The code running the online service is the same as in this git repo. ###Local installation Writeurl can be installed and run locally as an alternative to using the online service. #### Installation instructions ##### Dependencies The only required dependeny is node.js and the modules in package.json. It is recommended to use node.js version 8. ##### Clone the repo ``` git clone https://github.com/morten-krogh/writeurl.git ``` ##### Install the node js modules ``` npm install ``` ##### Build the browser code Go to the writeurl directory. Use the build script. ``` bash build.sh browser ``` Now the browser code is available in the directory `build/release/browser/` ##### Configuring the server The node.js server code is located in the directory `server-nodejs-express` The server needs a configuration file in the YAML format. An example file is ```server-nodejs-express/config.yaml``` ``` port: 9000 release: public: /Users/mkrogh/writeurl/build/release/browser debug: host: debug.writeurl.localhost public: /Users/mkrogh/writeurl/build/debug/browser documents: path: /Users/mkrogh/writeurl-test-dir/doc_dir publish: public: /Users/mkrogh/writeurl-test-dir/publish_dir # Pino logger # Output goes to stdout. logger: # levels: silent, fatal, error, warn, info, debug, trace level: trace ``` `port` is the port at which the server listens. `release` and `debug` are the directories built above containing the browser code. `documents` is the directory where all the writeurl documents will be stored. The server uses files to store the documents (one subdirectory per document). `publish` is the directory where the published (html) versions of the documents will be stored. `logger.level` is the logging level. Logging goes to standard output. ##### Starting the server In the directory `server-nodejs-express` type ```node writeurl-server.js config.yaml ``` ##### Start typing Go to localhost:9000 in the browser and start typing. ### Example production installation For production, it is recommended to use a reverse proxy with TLS, and to daemonize the Writeurl server. For daemonization, one can use a node.js process manager or a system daemon such as systemd on Linux. The online Writeurl service uses nginx as a reverse proxy and systemd under Linux for daemonization. ##### Example nginx configuration An example nginx.conf file is located at https://github.com/morten-krogh/writeurl/blob/master/documentation/nginx.conf ##### Example systemd unit file ``` [Unit] Description = writeurl server After = network.target [Service] Type = simple User = www ExecStart = /home/www/.nvm/versions/node/v8.9.4/bin/node /home/www/writeurl/server-nodejs-express/writeurl-server.js /home/www/writeurl/server-nodejs-express/config-debian.yaml Restart = on-failure [Install] WantedBy = multi-user.target ``` ### Backup The server can be backed up by just backing up the files in the `documents` and `publish` directories specified in the config.yaml file. Any type of file backup can be used, e.g. periodic rsync. The backup script can be used while the server is running as long as the backup script does not change any files. The server can be restarted from a backup by just placing the backup directories in the place pointed to by `documents` and `publish` in the config file. ### Embedding Writeurl can be embedded as described in https://github.com/morten-krogh/writeurl/blob/master/html/embed/index.html This page is available on the online service as well https://www.writeurl.com/embed ### Contributions and issues Bugs and feature requests are appreciated and can be opened as Github issues. We also welcome code contributions as pull requests.

Install / Use

/learn @OCEANOFANYTHINGOFFICIAL/Writewrl
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Writeurl

An Online Collaborative Editor

Writeurl is a simple and flexible collaborative text editor.

Key Features

  • Collaborative Editing: Writeurl is a client-server system.
  • Frontend: Built in pure JavaScript with no frameworks.
  • Backend: Powered by a Node.js application.
  • Real-Time Communication: The client and server use WebSocket connections.
  • Offline Support: Changes are saved locally in your browser and synced to the server when a connection is available.

Document Sharing

Writeurl makes sharing documents easy with a URL-based structure:

  • Editable Document:
    www.writeurl.com/text/id/read-password/write-password
  • Read-Only Document:
    www.writeurl.com/text/id/read-password

No user registration is required. Just share the URL to collaborate or provide read-only access.


Using Writeurl

Online Service

Writeurl is available as an online service at www.writeurl.com.
The online service runs the same code as provided in the Writeurl GitHub repository.

Local Installation

You can install and run Writeurl locally as an alternative to the online service.

Installation Instructions

Dependencies
  • Node.js: Use version 8 or higher.
  • Modules: All required modules are listed in package.json.
Steps to Install
  1. Clone the Repository:

    git clone https://github.com/morten-krogh/writeurl.git
    
  2. Install Node.js Modules:

    npm install
    
  3. Build the Browser Code:
    Navigate to the writeurl directory and run:

    bash build.sh browser
    

    The browser code will be available in build/release/browser/.

  4. Configure the Server:

    • Server code is located in server-nodejs-express.
    • Create a configuration file (config.yaml) based on the example provided:
      port: 9000
      release:
        public: /path/to/build/release/browser
      debug:
        host: debug.writeurl.localhost
        public: /path/to/build/debug/browser
      documents:
        path: /path/to/document/storage
      publish:
        public: /path/to/publish/storage
      logger:
        level: trace
      
  5. Start the Server:
    Navigate to the server-nodejs-express directory and run:

    node writeurl-server.js config.yaml
    
  6. Start Writing:
    Open your browser and go to http://localhost:9000 to start using Writeurl.


Example Production Setup

For production use, it’s recommended to:

  1. Use a reverse proxy with TLS (e.g., Nginx).
  2. Daemonize the Writeurl server using a process manager like PM2 or systemd.

Example Nginx Configuration

An example nginx.conf file is available here.

Example systemd Unit File

[Unit]
Description=Writeurl Server
After=network.target

[Service]
Type=simple
User=www
ExecStart=/path/to/node /path/to/writeurl/server-nodejs-express/writeurl-server.js /path/to/config.yaml
Restart=on-failure

[Install]
WantedBy=multi-user.target

Backup

The server can be backed up by saving the directories specified in the documents and publish sections of config.yaml.

  • Backup Options: Any file backup tool can be used (e.g., rsync).
  • Live Backups: Backups can be created while the server is running, as long as no files are modified during the process.
  • Restoration: To restore from a backup, place the backed-up directories in the locations specified in config.yaml.

Embedding Writeurl

Writeurl can be embedded into other applications or websites.


HOW TO CONTRIBUTE

  • Fork the Repository: Click the "Fork" button to create your own copy of the repository.
  • Clone the Repository: Use the command git clone <your-forked-repo-url> to download it locally.
  • Create a New Branch: Run git checkout -b <branch-name> to work on a separate branch.
  • Make Your Changes: Modify code, fix bugs, or update documentation as needed.
  • Commit Your Changes: Use git commit -m "Descriptive message about your changes" to save your changes locally.
  • Push to GitHub: Push the changes to your forked repository with git push origin <branch-name>.
  • Create a Pull Request (PR): Go to the original repository and open a pull request explaining your changes.
  • Address Feedback: Be ready to discuss and make additional changes if needed during the review process.

Related Skills

View on GitHub
GitHub Stars9
CategoryProduct
Updated2mo ago
Forks2

Security Score

70/100

Audited on Jan 17, 2026

No findings