https://github.com/leozqin/local-library
A dead-simple read-only filesystem based ePub library
https://github.com/leozqin/local-library
astrojs docker docker-com ebooks epub fastapi python self-hosted typescript
Last synced: 5 months ago
JSON representation
A dead-simple read-only filesystem based ePub library
- Host: GitHub
- URL: https://github.com/leozqin/local-library
- Owner: leozqin
- License: mit
- Created: 2024-12-24T16:02:26.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-01-09T00:47:51.000Z (6 months ago)
- Last Synced: 2025-01-09T01:52:25.596Z (6 months ago)
- Topics: astrojs, docker, docker-com, ebooks, epub, fastapi, python, self-hosted, typescript
- Language: Python
- Homepage: https://github.com/leozqin/local-library
- Size: 1.49 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Local Library
Local Library is a simple read-only ebook library that indexes your `epub` ebooks against a read-only file system and provides a nice UI to browse and download them. For some more color on the intent and architecture of this application, [see this blog post](https://www.leozqin.me/posts/local-library/).
# Running
## Dev
First set the `API_BASE_URL` environment variable to `http://localhost:8000`, either in your profile file, one-off, or using something like `direnv`.To start the API server, in the repository root, create a fresh Python 3.12 virtual environment. Then, install the `requirements.txt` in that venv. Then, run `fastapi dev` to start the API server.
To start the web interface, first install nodejs 22. Then, navigate to `web` and run `npm install`. Finally, run `npm run dev` to start the web interface on port 4321.
To run both the API and web interface at the same time, you'll need to create separate terminal sessions, of course.
If you're using nix, you can install pre-reqs by doing `nix-shell -p nodejs_22 python312`.
## Docker
Modify [the Compose stack](docker-compose.yml) to your heart's content, and then run `docker compose up` to start the app.