{"id":13581535,"url":"https://github.com/evan-buss/openbooks","last_synced_at":"2025-05-15T03:05:16.191Z","repository":{"id":37030538,"uuid":"186865523","full_name":"evan-buss/openbooks","owner":"evan-buss","description":"Search and Download eBooks","archived":false,"fork":false,"pushed_at":"2025-04-24T13:32:23.000Z","size":45988,"stargazers_count":2177,"open_issues_count":37,"forks_count":68,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-05-15T03:05:07.076Z","etag":null,"topics":["ebooks","go","golang","irc","irchighway","openbooks","react","self-hosted"],"latest_commit_sha":null,"homepage":"https://evan-buss.github.io/openbooks/","language":"Go","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/evan-buss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"evanbuss","custom":"https://paypal.me/evanbuss"}},"created_at":"2019-05-15T16:35:43.000Z","updated_at":"2025-05-13T12:02:06.000Z","dependencies_parsed_at":"2023-02-09T09:01:12.455Z","dependency_job_id":"3ba52e36-63d5-4e3d-9eeb-22eea64df41a","html_url":"https://github.com/evan-buss/openbooks","commit_stats":{"total_commits":263,"total_committers":9,"mean_commits":29.22222222222222,"dds":0.05323193916349811,"last_synced_commit":"c9273ef98a46698130f80c6577baf250dca5665c"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evan-buss%2Fopenbooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evan-buss%2Fopenbooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evan-buss%2Fopenbooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evan-buss%2Fopenbooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evan-buss","download_url":"https://codeload.github.com/evan-buss/openbooks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"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":["ebooks","go","golang","irc","irchighway","openbooks","react","self-hosted"],"created_at":"2024-08-01T15:02:04.957Z","updated_at":"2025-05-15T03:05:16.170Z","avatar_url":"https://github.com/evan-buss.png","language":"Go","funding_links":["https://ko-fi.com/evanbuss","https://paypal.me/evanbuss"],"categories":["Go","Repositories"],"sub_categories":[],"readme":"# openbooks\n\n\u003e NOTE: Going forward only the latest release will be supported. If you encounter any issues, be sure you are using the latest version.\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/evanbuss/openbooks.svg)](https://hub.docker.com/r/evanbuss/openbooks/)\n\nOpenbooks allows you to download ebooks from irc.irchighway.net quickly and easily.\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/home_v3_dark.png\"\u003e\n  \u003cimg alt=\"openbooks screenshot\" src=\"./.github/home_v3.png\"\u003e\n\u003c/picture\u003e\n\n\n## Getting Started\n\n### Binary\n\n1. Download the latest release for your platform from the [releases page](https://github.com/evan-buss/openbooks/releases).\n2. Run the binary\n   - Linux users may have to run `chmod +x [binary name]` to make it executable\n3. `./openbooks --help`\n   - This will display all possible configuration values and introduce the two modes; CLI or Server.\n\n### Docker\n\n- Basic config\n  - `docker run -p 8080:80 evanbuss/openbooks`\n- Config to persist all eBook files to disk\n  - `docker run -p 8080:80 -v /home/evan/Downloads/openbooks:/books evanbuss/openbooks --persist`\n\n### Setting the Base Path\n\nOpenBooks server doesn't have to be hosted at the root of your webserver. The basepath value allows you to host it behind a reverse proxy. The base path value must have opening and closing forward slashes (default \"/\").\n\n- Docker\n  - `docker run -p 8080:80 -e BASE_PATH=/openbooks/ evanbuss/openbooks`\n- Binary\n  - `./openbooks server --basepath /openbooks/`\n\n## Usage\n\nFor a complete list of features use the `--help` flags on all subcommands.\nFor example `openbooks cli --help or openbooks cli download --help`. There are\ntwo modes; Server or CLI. In CLI mode you interact and download books through\na terminal interface. In server mode the application runs as a web application\nthat you can visit in your browser.\n\nDouble clicking the executable will open the UI in your browser. In the future it may use [webviews](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) to provide a \"native-like\" desktop application. \n\n## Development\n\n### Install the dependencies\n\n- `go get`\n- `cd server/app \u0026\u0026 npm install`\n- `cd ../..`\n- `go run main.go`\n\n### Build the React SPA and compile binaries for multiple platforms.\n\n- Run `./build.sh`\n- This will install npm packages, build the React app, and compile the executable.\n\n### Build the go binary (if you haven't changed the frontend)\n\n- `go build`\n\n### Mock Development Server\n\n- The mock server allows you to debug responses and requests to simplified IRC / DCC\n  servers that mimic the responses received from IRC Highway.\n- ```bash\n  cd cmd/mock_server\n  go run .\n  # Another Terminal\n  cd cmd/openbooks\n  go run . server --server localhost --log\n  ```\n\n### Desktop App\nCompile OpenBooks with experimental webview support:\n\n``` shell\ncd cmd/openbooks\ngo build -tags webview\n```\n\n\n## Why / How\n\n- I wrote this as an easier way to search and download books from irchighway.net. It handles all the extraction and data processing for you. You just have to click the book you want. Hopefully you find it much easier than the IRC interface.\n- It was also interesting to learn how the [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) and [DCC](https://en.wikipedia.org/wiki/Direct_Client-to-Client) protocols work and write custom implementations.\n\n## Technology\n\n- Backend\n  - Golang\n  - Chi\n  - gorilla/websocket\n  - Archiver (extract files from various archive formats)\n- Frontend\n  - React.js\n  - TypeScript\n  - Redux / Redux Toolkit\n  - Mantine UI / @emotion/react\n  - Framer Motion\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevan-buss%2Fopenbooks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevan-buss%2Fopenbooks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevan-buss%2Fopenbooks/lists"}