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
53
//! Laterite CMF: the one crate an application depends on.
//!
//! The framework is a family of crates with one version. This crate carries no
//! code of its own: it re-exports each crate under a short name and forwards the
//! database driver features, so an application names one dependency, pins one
//! version, and reaches everything through one path.
//!
//! ```toml
//! [dependencies]
//! lateritecmf = { version = "0.9", features = ["postgres"] }
//! ```
//!
//! ```rust,ignore
//! use lateritecmf::prelude::*;
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//! Bootstrap::new("config").module(AppModule).serve().await
//! }
//! ```
//!
//! A plugin depends on the crates it uses directly (`laterite-core`,
//! `laterite-admin`), which keeps its dependency light; the umbrella is for the
//! application that assembles them.
/// The platform library: config, the database, migrations, the record layer,
/// events, validation, localization, modules and the registry.
pub use laterite_core as core;
/// Operators, roles, permissions, sessions and the audit table.
pub use laterite_auth as auth;
/// The admin panel: the bootstrap, resources, lists, forms, fields, import,
/// export, settings and plugins.
pub use laterite_admin as admin;
/// File storage: drivers, ingest and media records.
pub use laterite_media as media;
/// The public web layer: static site generation, page metadata and sitemaps.
pub use laterite_web as web;
/// The names an application uses on nearly every page.