A little program for keeping track of the books you have and want.
The main use case: the user (let's use the name Jo) is in a charity shop and finds an interesting book. Jo is not sure if they own the book already, or if they read it a long time ago (maybe from a library). Jo will buy the book but doesn't want to have it twice – to prevent having two copies, Jo checks the app.
A book has these properties:
- title
- author (possibly omitted if unknown)
- series (if the book is part of a series)
- notes (anything the user might want to add for themself)
- whether the user owns or wants the book
-
use id not title etc. for book key where available
-
search functionality
-
service worker for offline work, background sync
-
better mobile interface
- swipe book to change status or to edit
- swipe between author and series view
-
desktop interface with more columns of lists
-
add dark mode? (see https://material-ui.com/customization/palette/#dark-mode )
-
show books that are in the bin (sort by when binned? show when?), allow recovering, empty bin
-
after save could go forward not back in history (see todo in BookEdit.tsx)
-
top-level menu, about, version
-
instead of whole-screen "saving", "adding", "deleting" these should be just a spinner over the "save" or "delete" button
-
ci/cd deployment of server? (then fix notes below)
-
use prettier
-
resolved:
- problem: books listed by author are not listed in order they should be read
- solution: add first line of notes in collapsed book entry
- add by-title display
- put admins in the database
- update to mui 5 or later https://mui.com/material-ui/migration/migration-v4/
- update auth0 link to icon to stable link
See docs/API.md
for documentation of the API.
The server is a Google cloud function; not deployed by CI/CD at the moment.
To deploy, you need to install the gcloud
tools, configure at least the
core/project and functions/region settings, and do the following:
cd server # if not already there
npm ci
npm run deploy
To run a local testing version, you'll need gcloud
and datastore emulator,
then run:
cd server # if not already there
npm run localds & # wait for the datastore emulator to start
npm run local
- make changes and test them
- update
CHANGELOG.md
- commit
npm version patch/minor/major
git push
git push --tags