Bookish is a framework and platform for writing and publishing web-based books. I originally created it to make it easier to maintain the many online books on my website (amyjko.com), while adding more sophisticated features to support reading. I'm slowly evolving it to be a simple free online service for authoring and reading online books.
I'm working on a 1.0 of the platform at bookish.press and expect to maintain the platform for the foreseeable future. Let me know if you'd like to help!
There are two major components to Bookish: the authoring platform and the reading front end. Changes to the authoring platform that do not affect reading can be verified and deployed to Firebase without any other coordination. However, changes to the reading experience have downstream dependencies that need to be managed. Here's the general deployment workflow, which I'm currently using as reminders for myself:
- Ensure you're working in the
dev
branch - Fix bugs, add features
- Ensure there are no type errors (
npm run check
) or failed tests (npm run test
). - Test with emulator (
npm run emu
), if possible. (Some features aren't possible to perfectly emulate, such as authentication, hosting configurations, permissions.) - Test on the staging server (
npm run stage
). - Bump the version in
package.json
- Describe the changes in
CHANGELOG.md
, linking to any issues closed - Commit changes to
dev
, referring to any issues addressed - Release to production (
npm run release
) - Verify the change in production on bookish.press
- Merge dev to main (
npm run merge
) - If any of the changes affected the reading experience (essentially if any
.svelte
file or its dependencies in/src/lib/components
changed), then we need to update the reader package for authors who pre-build their books manually:- Update the bookish package with the Sveltekit package tooling (
npm run package
) - Publish the package to npm (
npm publish
) - Open the
bookish-reader
repository - Pull the revisions (
npm update
), ensuring you update the repository'spackage.json
dependencies, in case there was a major version change - Update reader's
CHANGELOG.md
to describe any changes. - Bump the reader's version in
package.json
- Commit the changes directly to
main
, and sync them - For any of these changes to make it to pre-built books, authors need ot use the updated
bookish-reader
repo to rebuild their books. That generally involves:- Cloning the reader repo:
git clone https://github.com/amyjko/bookish-reader
- Entering the repo directory:
cd bookish-reader
- Binding the book:
bind.sh
- Deploying the bound book in the newly created
build
folder to wherever it's hosted.
- Cloning the reader repo:
- Update the bookish package with the Sveltekit package tooling (