1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! Shared logic for Todd Everett Griffin's web servers, as a set of
//! independently feature-gated **kits**.
//!
//! Every kit works on its own — a bot that wants only Telegram notifications
//! enables `telegram` and compiles neither axum nor Handlebars. Together they
//! compose into one opinionated web server. Nothing is enabled by default.
//!
//! | feature | what it is |
//! |---|---|
//! | `templates` | Handlebars registry, the embedded base layout, template data |
//! | `analytics` | first-party proxies for Plausible and the Sentry browser SDK |
//! | `sitemap` | sitemap index and url-set generation |
//! | `feed` | RSS 2.0, Atom 1.0 and JSON Feed for a site's content stream |
//! | `observability` | Sentry + tracing, initialised in the one order that works |
//! | `telegram` | outbound Telegram Bot API notifier |
//! | `webserver` | the server builder, state, bootstrap, static-asset pipeline |
//! | `pages` | page declarations that produce routes *and* sitemap entries |
//! | `preset` | Todd Everett Griffin's personal defaults |
//! | `full` | all of the above |
//!
//! # Configuration
//!
//! Every kit is constructed manually first; `from_env` is a convenience layered
//! on top. All environment variables this crate reads are prefixed `WSB_` so
//! they cannot collide with a project's own.
pub use ;
pub use ;