a super simple guestbook to deploy on your site: just grab the binary and run it, or configure it to your liking
see it in action (with a custom frontend) [here, at the bottom](https://alemi.dev/), or try an in-memory temporary version [here](https://guestbook.alemi.dev/)
# why
i love small web and i want to give a way to whoever visits my site to leave a mark. cooking something to do that is very easy, but after connecting my third bare form i decided i needed something more convenient.
# deploy
## all-in-one
`guestbook.rs` can be easily deployed without anything else: just grab (or compile) the default binary and run it:
it will create a sqlite database (`guestbook.db`) in current directory and start serving its frontend on http://localhost:37812/ and its backend on http://localhost:37812/api
all comments will be public and will only be logged on console
## simple configuration
it's possible to configure frontend style, extra notifiers and page overrides with a `.toml` config file
if no config file is provided, the implicit default will be used (view it with `guestbook config` or redirect it to file and start editing)
a custom config file can be specified with `-c / --config` CLI argument
### overrides
by default each user is given full control on each page (except for the `date` field). this can be changed with overrides.
as an example, you may want to review posts before showing them publicly.
and each incoming page will be forced to be private (until you make it public manually with `guestbook review`)
## modular configuration
`guestbook.rs` just works, but can also be deeply customized
by default all supported sql drivers are included, but it's possible to only compile your desired driver by enabling only that feature (`sqlite`, `postgres`, `mysql`)
all notifiers are bundled, but just like db drivers it's possible to only include some (`email`, `telegram`)
the integrated frontend is not necessary, and can be excluded by disabling the `web` feature. serve your favorite page and just use the `/api` endpoint for fetching pages.