Skip to content

kindlerz/Kindler

Repository files navigation

📚 Kindler

Docker Pulls Build Status License

🖋️ Web surfing and reading reimagined for e-ink devices.

Kindler is a lightweight, open-source web app built to make e-ink devices like Kindles actually useful on the modern web. Browse the internet, read news, or explore public-domain books, all through a clean, no JavaScript interface that works even on the most limited browsers.

Built with Python (Flask + Jinja2), Redis, and Calibre, Kindler lets you instantly convert any webpage, news article, or Gemini capsule into EPUB, MOBI, or AZW3. The project is fully containerized and Docker Swarm–ready. It depends on a Java-based Metasearch backend for federated search across public-domain libraries.

🐳 Docker Hub: kasramp/kindler
🌍 Live Demo: kindler.ink
💻 Org: github.com/kindlerz

Development set up

Virtual env

If it does not exist, create one:

$ python3 -m venv .venv

To activate:

$ source .venv/bin/activate

To deactivate:

$ deactivate

Useful commands

Generate requirement.txt file:

$ pip3 freeze > requirements.txt

To install from the dependency file:

$ pip3 install -r requirements.txt

Run the project

The project is dependent on Redis. Make sure to have it available.

Local development

For local development, before running the project, bring up the Redis from docker-compose.yml file:

$ docker compose -f docker-compose.yml up

Then run:

$ python -m kindler.app

Production (Gunicorn WSGI)

Make sure you also deploy Metasearch, without it, Kindler public-domain libraries do not work.

Ensure the Redis cluster is up and running. Then set the below env var:

$ export REDIS_URL=[YOUR_REDIS_URL]
$ gunicorn kindler.wsgi:app

Calibre

To support generating epub, mobi, azw3 of pages on the fly, need to install calibre, or more specific ebook-convert as it's invoked as a sub process to generate ebooks.

Building with Docker

Run:

$ docker build -t kindler-app .

To test:

$ docker run -p 8181:8181 kindler-app

Test an image from Docker Hub:

$ docker run -p 8181:8181 kasramp/kindler:v0.0.2

Code formatting

Before committing or sending any PR to review, make sure the code is formatted correctly. You can run black:

$ black --check .

To fix:

$ black .

About

Web surfing and reading reimagined for e-ink devices

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors