Coder Social home page Coder Social logo

rmwebui's Introduction

rmWebUI

rmWebUI is a simple web interface for the reMarkable® cloud designed primarily for small screens. It includes the following features:

  • Register application
  • Browse collections
  • Refresh collections
  • Download a document as ZIP (original data)
  • Download a document as PDF (convert using rmrl)
  • Cache downloaded files based on version. Download from the cloud only as needed.
  • Demonstration mode

register register-failed list-root list-open-item list-downloading list-download

Install

Prepare the distribution files

Run:

composer run deploy

This will create a dist/ folder with all required files.

Configure

The file data/config.json contains a few configuration options:

  • mode: Either debug or prod. In debug mode, PHP error messages will be activated.
  • cache: If true, files will be cached and only downloaded/converted as needed. This will allow faster access but will use space on your webserver.
  • rmrl: By default, notebooks are downloaded as a ZIP file containing the metadata and lines files in the proprietary format of reMarkable®. rmWebUI is also capable of converting the files to PDF by using rmrl. To activate this feature, use this option to specify the command for running rmrl (typically it should be python -m rmrl or python3 -m rmrl but it may differ depending on your system configuration). Be aware that RMRL has limitations and may not work properly with some documents. When this feature is configured, both ZIP and PDF downloads are available.

Prepare the webserver

You need a webserver with PHP 7.2 or further.

If you use RMRL, you also need to install Python 3.7 or further and rmrl. Make sure to install rmrl as either root or the user running the webserver.

Deploy

Copy the content of the dist/ folder to your webserver and make sure the webserver has write permission to data/.

Important security warning

rmWebUI doesn't implement any kind of authentication. Configure your webserver as needed to prevent unauthorized access, for example by using a .htaccess file (for Apache). Make sure that subdirectories and files are protected as well (especially data/ and data/cache/).

For example, you can put the following .htaccess file into the base directory of rmWebUI:

AuthType Basic
AuthName "rmWebUI"
AuthUserFile /var/www/.htpasswd
Require valid-user

RewriteOptions InheritDown

and create the password file /var/www/.htpasswd.

See the Apache documentation for more information:

Register application

On the first run, you will be asked to register the application. This is required to access your files on the reMarkable® cloud. Once the application is registered, you don't need to do it again. You will be asked again if the application fails to connect to the cloud or if you clear the content of the file data/auth.json.

Live demo

rmWebUI also has a special demonstration mode that can be used to demonstrate the application without access to a reMarkable® cloud account. In this mode, dummy data are returned and rmrl is not used.

To install the demo mode, run composer run demo instead of composer run deploy. The files are created in demo/. You don't need to install rmrl to get PDFs (but you still need to set a value in the configuration to enable the feature). You also don't need write access to data/.

License

© 2021-2022 Fabien Pollet [email protected]

rmWebUI is licensed under the MIT license. See the LICENSE file for details.

Trademarks

reMarkable® is a registered trademark of reMarkable AS. rmWebUI is not affiliated with, or endorsed by, reMarkable AS. The use of “reMarkable” in this work refers to the company’s e-paper tablet product(s).

rmwebui's People

Contributors

polletfa avatar

Stargazers

Juri Hahn avatar Sunny avatar

Watchers

 avatar

rmwebui's Issues

Add an info page

Add menu/button to display general information about the software (version, license, changelog...)

Implement configuration interface

Nice to have, low priority.

Security relevant options (passwords, certificates...) should be accessible only if the connection is secure (HTTPS or localhost request).

Manual configuration -should still be possible.
Ideally a simple format allowing comments like yaml should be used rather than json (no comments) or xml (strict syntax). It would be REALLY nice if the configuration interface didn't mess up the comments and formatting (can js-yaml do that?)

Probable more complicated than it is worth. Config over UI only would be fine but it should be at least possible to modify the default options with command line parameters (so that the user can specify at least a port on the first start, before s/he can access the configuration interface).

Rewrite with NodeJS and Typescript

Rewrite with NodeJS and Typescript because I strongly dislike PHP as it turns out... :-/

  • Stand-alone application (not relying on a separate WebServer)
  • NodeJS web server serving:
    • the frontend as a single file webapplication + favicon
      • build script to generate the frontend (using special include statements)
    • APIs:
      • /cloud/* -> Access the cloud - Dummy implementationfor this issue - separate issues for the actual implementations: #31 and #32
      • /backend/* -> Internal functionalities of the backend (e.g. login, logout...)
  • HTTP session management required to implement the demo mode
  • Multiple servers in parallel possible
  • YAML config file
  • Backend includes some configuration information as a JSON file inside the frontend file (using a marker)
  • Tools/Build/Deployment in Typescript/NodeJS as well

Note: the implementation of the cloud API is out of scope of this issue

Release 3.0.0

  • Update README.md
  • Update CHANGELOG.md
  • Update version (package.json)
  • Create tag
  • PR develop -> main
  • Create release

Release 2.0.0

  • Update README.md
  • Update CHANGELOG.md
  • Update version (package.json)
  • Create tag
  • PR develop -> main
  • Create release

Implement upload

Implement uploading files to the cloud

single file, several files, directory (recursive)

Release 1.0.0

  • Update README.md
  • Update CHANGELOG.md
  • Update version (package.json)
  • Create tag
  • PR develop -> main
  • Create release

Implement authentication

Simple authentication mechanism, single user (just a password, no username).
For now, the password will be set using the config file, not through the interface

Release 0.6.0

  • Update README.md
  • Update CHANGELOG.md
  • Update version (package.json)
  • Create tag
  • PR develop -> main
  • Create release

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.