No description
Find a file
2025-05-29 15:04:16 +02:00
.github/workflows upload to github 2025-05-29 13:41:38 +02:00
public upload to github 2025-05-29 13:41:38 +02:00
src update font and style handling 2025-05-29 15:04:16 +02:00
.env.example upload to github 2025-05-29 13:41:38 +02:00
.gitignore upload to github 2025-05-29 13:41:38 +02:00
docker-compose.yaml upload to github 2025-05-29 13:41:38 +02:00
env.d.ts upload to github 2025-05-29 13:41:38 +02:00
index.html update font and style handling 2025-05-29 15:04:16 +02:00
LICENSE upload to github 2025-05-29 13:41:38 +02:00
package-lock.json upload to github 2025-05-29 13:41:38 +02:00
package.json upload to github 2025-05-29 13:41:38 +02:00
README.md upload to github 2025-05-29 13:41:38 +02:00
tsconfig.app.json upload to github 2025-05-29 13:41:38 +02:00
tsconfig.json upload to github 2025-05-29 13:41:38 +02:00
tsconfig.node.json upload to github 2025-05-29 13:41:38 +02:00
vite.config.ts fix baseurl 2025-05-29 13:47:21 +02:00

E-inn

E-inn is a basic EPUB reader supporting remote API imports and local file uploads. Books are stored in IndexedDB; settings and reading progress are retained via localStorage. Built as a single-page application with Vue.js, Vue Router, and epub.js for rendering. No accounts, sync, or advanced features, serves static assets. Minimal UI, lightweight, customizable interface.

Running

Run development server with:

docker-compose up dev

Run clean build with:

docker-compose up build

API reasoning:

If you have a userbase, you can use a centralized database for your content and the e-inn-reader as client. You only need to set some environment variables in the .env and build this project

VITE_REMOTE_API='true'
VITE_API_URL=http://localhost/api # your server

Api server requirements

GET /api/epub-library

Returns: JSON

{
  "epubs": [
    {
      "id": "id",
      "filename": "book-title.epub",
      "path": "/storage/path",
      "size": 4521120
    }
  ],
  "total": 15
}

GET /api/epub/{id}/{filename}

Parameters:

  • id: string
  • filename: string

Return: Binary EPUB file with Content-Type: application/epub+zip

OPTIONS /api/epub-library
OPTIONS /api/epub/{id}/{filename}
Returns: Empty response with CORS headers