{"id":15428403,"url":"https://github.com/egust/epub-reader","last_synced_at":"2025-04-19T16:04:19.073Z","repository":{"id":54210496,"uuid":"78273107","full_name":"eGust/epub-reader","owner":"eGust","description":"A web / desktop EPUB reader","archived":false,"fork":false,"pushed_at":"2022-09-08T08:06:16.000Z","size":1855,"stargazers_count":21,"open_issues_count":2,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T09:51:13.640Z","etag":null,"topics":["cross-platform","desktop","epub","epub-reader","jsx","react","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eGust.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-07T10:38:55.000Z","updated_at":"2022-05-05T04:52:06.000Z","dependencies_parsed_at":"2022-08-13T09:20:12.025Z","dependency_job_id":null,"html_url":"https://github.com/eGust/epub-reader","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eGust%2Fepub-reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eGust%2Fepub-reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eGust%2Fepub-reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eGust%2Fepub-reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eGust","download_url":"https://codeload.github.com/eGust/epub-reader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249733015,"owners_count":21317474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","desktop","epub","epub-reader","jsx","react","typescript"],"created_at":"2024-10-01T18:04:30.298Z","updated_at":"2025-04-19T16:04:18.985Z","avatar_url":"https://github.com/eGust.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EPub Reader\n\nEPub Reader in Browser or Desktop\n\n## About the Electron Version\n\nThe Electron version that I wrote in 2017 had been moved to branch `v1`. You can also use tag [`v1-archive`](https://github.com/eGust/epub-reader/tree/v1-archive) to browse it.\n\n## Status\n\nA while ago I started to rewrite this project. The `v1` I started in 2017 is something I tried to learn both React and Electron at that time. There are some good reasons to rewrite: a lot of dependencies are out-dated, and the code style and syntax is quite old, plus no eslint adapted, etc.\n\nSo I decided to write it in TypeScript with the latest Electron. As soon as I implemented core code, I found I don't really need Electron. A browser version maybe good enough. Then I can probably ship desktop versions with [webview](https://github.com/zserge/webview/) than Electron.\n\nCurrently, the browser version is working but still lacks features. It's **PRE-ALPHA** stage now. If you want something just works, you may checkout [`v1` branch](https://github.com/eGust/epub-reader/tree/v1).\n\n## Stack\n\n* TypeScript\n* React\n* Pug for HTML\n* Stylus for CSS\n* Parcel.js v2 for packaging\n* Rust with [web-view](https://github.com/Boscop/web-view) for Desktop\n\n## Operation\n\n### Keyboard\n\n1. Prev Page: `PageUp`, `ArrowLeft`\n2. Next Page: `PageDown`, `ArrowRight`\n3. Prev Chapter: `Ctrl/Meta + ArrowLeft`\n4. Next Chapter: `Ctrl/Meta + ArrowRight`\n5. Toggle ToC: `Backquote`\n6. First Page of Chapter: `Home`\n7. Last Page of Chapter: `End`\n\n\u003e Not configurable yet.\n\n### Mouse\n\n1. Wheel Up / Down\n2. Wheel Left / Right\n3. Click Page No. on the bottom bar\n4. Click Left / Right arrows\n\n### Touch\n\n* Swipe Left / Right\n\n## Road-map\n\n1. Generic Features\n   * [x] flip pages between chapters\n   * [x] keyboard shortcuts: toggle ToC, prev/next page/chapter\n   * [x] mouse \u0026 touch supports\n   * [x] settings: fonts, background\n   * [x] remember position\n   * [ ] settings: themes, keybindings\n   * [ ] drag and drop files to read\n   * [ ] multiple tabs?\n2. Desktop only\n   * [ ] settings: font family\n   * [ ] native open dialog / drag and drop\n   * [ ] book shelf\n   * [ ] cloud files\n   * [ ] multiple windows?\n   * [ ] sync settings?\n3. Tooling\n   * [ ] add ESLint or TSLint\n   * [ ] switch to Webpack?\n\n## Known Issues\n\nSince Windows just switched Edge to Chromium based recently, it seems not working well yet.\n\n## Development\n\n### Pre-requirement\n\n1. Node.js\n2. Yarn\n3. optional - Rust(if you want to try desktop version)\n\n### Install, Develop and Build\n\n1. `yarn` to install dependencies\n2. `yarn dev` to start dev server\n3. `yarn build` to generate static assets\n4. optional - `yarn cargo:clean:run` to run desktop version\n\n\u003e Dev server(`yarn dev`) is running on [http://0.0.0.0:1234/](http://0.0.0.0:1234/). However, `window.crypto.subtle` may not exist in some browsers due `0.0.0.0` is not one of \"secure origins\". Just use [http://localhost:1234](http://localhost:1234) or try other browsers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegust%2Fepub-reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegust%2Fepub-reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegust%2Fepub-reader/lists"}