# What is CalibreWebAlternative? 
This is a web server to the popular book management application Calibre. We found that the builtin webserver was kinda shit, so we're building our own. (make this friendlier later)



# Features

-  navbar with tags, series, authors, etc
-  Search by author, identifier, title
- authentication 


# Some screenshots
Here's how the various lists look like 
![booklist](./screenshots/booklist.png)
Book detail
![bookdetail](./screenshots/bookdetail.png)
navbar
![nav](./screenshots/navbar.png)
Adanced search
![booklist](./screenshots/search.png)
# requirements
Django 3.0  
Calibre 4.13 (I have not tested it with anything else atm, will be resolved later)

# how to use:
1. clone repo
2. Remove the `.bak` from `./CalibreWebCompanion/settings.json.bak`  and `db.sqlite3.bak`
3. Edit `./CalibreWebCompanion/settings.json`. Definitely change the secret key
4. Not sure if the db needs to be regenerated, but we'll see later __!!!!!!!!!!__
5. pip install -r requirements.txt
6. install gunicorn and nginx
7. move this nginx.conf to /etc/nginx
8. make whatever user nginx runs as (in this case, massiveatoms) the owner of calibredir
9. give execute permissions to parent of calibredir
10. cd to repo, run `gunicorn CalibreWebCompanion.wsgi`
11. start nginx `sudo systemctl restart nginx`


 
 
`./CalibreWebCompanion`     
run `./manage.py runserver`    

# Ignore pretty much everything below if you're not working on the project

# Profiling

To do profiling, you have to create some dummy users  
Unbakify a file `./loadtesting/dummyusers.json.bak`  and fill in the credentials for the dummy users  

While django is running, open another shell and cd to `./loadtesting` and run `./bench.py`
To have a more interactive session, 
comment out 
```
run-time = 2m
headless = true
``` 
in `locust.conf`, and then run `./bench.py`
You can then go to [http://localhost:8089/](http://localhost:8089/) to see live graphs, tweak the number of users and more.


# Finished Features

- [x] Books
- [x] navbar with tags, series, authors, etc
- [x] Search
- [x] authentication 
- [x] Cache 
- [x] logging
- [x]  deploy instructions

# TODO ROADMAP
- [ ] cache with vary headers
- [ ] localisation
- [ ] Beautifying template (only works well on 720p, no other viewports)
- [ ]  Setup email functionality




 