A completely static web application to sync your local CrossPoint e-reader bookmarks directly to your self-hosted Grimmory library.
- Client-Side Only: Runs entirely in your browser. Your credentials and data never leave your local machine.
- Smart Deduplication: Prevents importing the same highlight twice.
- Multiple Sync Modes: Choose between native page bookmarks or in-text yellow highlights.
- Undo Support: Safely preview, edit, or instantly undo a sync operation if something goes wrong.
- Export Logs: Built-in debugging tools and error tracking.
You can use the hosted version immediately via GitHub Pages, or self-host it yourself.
- Open the Web App
- Enter your Grimmory server URL and login credentials
- Upload your
.jsonbookmark files from your CrossPoint device - Select your preferred sync mode and click "Start Sync"
Because this tool is completely static (just HTML, JS, and CSS), self-hosting is incredibly simple:
- Clone or download this repository.
- Serve the directory using any basic web server:
# Using Python python -m http.server 8080 # Using Node.js npx serve -p 8080 # Using Docker docker run -d -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx:alpine
- Open
http://localhost:8080in your browser.
Note: Your Grimmory server must be configured to allow CORS requests from wherever you host this tool.
Pull requests are welcome! I'm open to expanding support for other e-reader firmware or other self-hosted library systems (like Booklore or Kavita) if there is demand.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If this tool has saved you time or improved your reading workflow, please consider sponsoring the project to support continued development.
Distributed under the AGPLv3 License. See LICENSE for more information.